一种双主架构的InfluxDB高可用系统技术方案

技术编号:25890122 阅读:24 留言:0更新日期:2020-10-09 23:30
本发明专利技术公开了一种双主架构的InfluxDB高可用系统,属于计算机数据库领域,本发明专利技术要解决的技术问题为如何既能够保证数据的一致性,避免数据丢失,又能够无缝的进行故障转移,采用的技术方案为:该系统包括访问模块和监控容灾模块,访问模块和监控容灾模块与两个InfluxDB节点配合使用,访问模块用于将用户的写请求同时在两个InfluxDB节点上执行,保证数据库节点的实时一致性,同时访问模块将用户的读请求交替发送给两个InfluxDB节点,以实现负载均衡,提升查询性能;监控容灾模块用于监控后端InfluxDB节点的可用状态,并向访问模块提供状态查询接口,同时当发现数据库数据存在延迟时自动将数据进行补齐。

【技术实现步骤摘要】
一种双主架构的InfluxDB高可用系统
本专利技术涉及计算机数据库领域,具体地说是一种双主架构的InfluxDB高可用系统。
技术介绍
InfluxDB作为目前市面上最常用的开源时序数据库之一,一直缺少较为完善的开源高可用方案。现有的方案通常采用定时主从同步的方式实现数据的热备,当主节点发生故障时切换至从节点来使用。由于时序数据库的写入通常很频繁,发生故障进行切换时很难做到无缝切换,而使用定时同步的方式也可能导致切换时丢失部分数据。因此如何既能够保证数据的一致性,避免数据丢失,又能够无缝的进行故障转移,成了InfluxDB高可用方案中需要进一步解决的问题。专利号为CN110659158A的专利文献公开了一种基于双机热备环境的InfluxDB数据备份方法、装置、设备及计算机可读存储介质,包括:利用Keepalived周期地检测InfluxDB的主机节点是否发生故障;若主机节点未发生故障,则每隔预设时间段,将主机节点在预设时间段内产生的数据同步至InfluxDB的从机节点;若主机节点发生故障,则从机节点升级为当前主机节点,将主机节点的故障时间记录于当前主机节点;主机节点恢复后,将主机节点降级为当前从机节点,将主机节点最后一次同步数据的时间至故障时间之间产生的数据同步至当前主机节点。但是该技术方案基于主从架构,从节点与主节点采用定时同步的方式保持最终一致性,在两次同步间隙,数据会具有一定的差异,切换时可能丢失数据,另外集群在同一时间仅一个节点提供服务,无法进行负载均衡。
技术实现思路
本专利技术的技术任务是提供一种双主架构的InfluxDB高可用系统,来解决如何既能够保证数据的一致性,避免数据丢失,又能够无缝的进行故障转移的问题。本专利技术的技术任务是按以下方式实现的,一种双主架构的InfluxDB高可用系统,该系统包括访问模块和监控容灾模块,访问模块和监控容灾模块与两个InfluxDB节点配合使用;访问模块用于将用户的写请求同时在两个InfluxDB节点上执行,保证数据库节点的实时一致性,同时访问模块将用户的读请求交替发送给两个InfluxDB节点,以实现负载均衡,提升查询性能;监控容灾模块用于监控后端InfluxDB节点的可用状态,并向访问模块提供状态查询接口,同时当发现数据库数据存在延迟时自动将数据进行补齐。作为优选,所述访问模块作为代理层对外提供与InfluxDB相同的访问协议接口,用户通过InfluxDB客户端或Http客户端连接并访问数据库。更优地,所述访问协议接口包括GET/query接口和POST/write接口。更优地,所述GET/query接口具体处理逻辑如下:(1)、查询本次应访问InfluxDB数据库节点A,则下一步执行步骤(2);(2)、向监控容灾模块查询节点A是否可用,则下一步执行步骤(3);(3)、判断节点A状态是否可用:①、若是,则下一步执行步骤(4);②、若否,则跳转至步骤(7)(4)、将请求发送至节点A并接收响应,则下一步执行步骤(5);(5)、判断节点B是否为可用状态(active状态):①、若是,则下一步执行步骤(6);②、若否,则跳转至步骤(10);(6)、设置节点B为下次访问节点,下一步执行步骤(10);(7)、判断节点B是否可用:①、若是,则下一步执行步骤(8);②、若否,则下一步执行步骤(10);(8)、将节点A标记为不可用状态(inactive状态),并启动后台异步线程更新节点A状态,下一步执行步骤(9);(9)、将节点B设置为下一访问节点,下一步跳转至步骤(2);(10)、将响应返回客户端。更优地,所述步骤(8)中启动后台异步线程后,每5分钟请求监控容灾模块以更新节点A状态,当节点A状态更新为可用状态后,后台异步线程退出。更优地,所述POST/write接口的处理逻辑如下:(一)、接到/write接口请求;(二)、查询后端所有可用InfluxDB节点;(三)、将请求同时发送至各数据库节点;(四)、是否有任意节点请求成功:①、若有任意一个节点返回成功,则将响应返回给客户端;②、若所有节点都请求失败,则向客户端响应请求失败。作为优选,所述监控容灾模块部署两套,分别以一个节点为主节点,另一个节点为复制节点,以保证两个节点的双向一致性;监控容灾模块具体处理逻辑具体如下:S1、设置InfluxDB节点A为主节点,将节点B设置为复制节点;S2、检查节点A的状态;S3、判断节点A是否可用(如网络中断、数据库进程崩溃、服务器宕机等):①、若是,则执行步骤S4;②、若否,则标记节点A为不可用状态(inactive状态),间隔20秒,跳转至步骤S2;S4、检查节点A的数据是否与节点B一致:若不一致,则执行步骤S5;S5、检查节点A中的数据是否落后于节点B:①、若是,则执行步骤S6;②、若否,则跳转至步骤S8;S6、标记节点A为不可用状态;S7、从节点B同步缺失数据到节点A;S8、将节点A标记为可用状态(active状态),间隔20秒,跳转至步骤S2。更优地,所述步骤S5中检查节点A中的数据是否落后于节点B是以schema和measurement为单位。本专利技术的双主架构的InfluxDB高可用系统具有以下优点:(一)本专利技术提供的技术方案较市面上常见的其他InfluxDB高可用系统方案,能够提供更好的数据一致性特性以及良好的数据库访问性能,同时单节点故障对用户无感知,并具备故障节点自动恢复能力,降低维修复杂度,缩短故障时间;(二)本专利技术支持两个可同时读写的InfluxDB数据库,一份数据会同时写入两个数据库节点,而读取数据时可轮询的从任意可用数据库节点获取数据,以达到负载均衡的效果,并提供数据库的高可用特性,能够保障InfluxDB的可用性,避免因单点故障导致数据库不可用;(三)本专利技术通过向两个数据库节点同时写入数据保证数据的实时一致性,并通过后台的监控容灾模块自动补齐缺失数据,保证数据的最终一致性,同时通过访问模块作为代理自动选择可用数据库节点,保证客户端访问无中断。附图说明下面结合附图对本专利技术进一步说明。附图1为双主架构的InfluxDB高可用系统的结构示意图;附图2为/query接口具体处理逻辑的流程框图;附图3为/write接口的处理逻辑的流程框图;附图4为监控容灾模块具体处理逻辑的流程框图。具体实施方式参照说明书附图和具体实施例对本专利技术的一种双主架构的InfluxDB高可用系统作以下详细地说明。实施例:如附图1所示,本专利技术的双主架构的InfluxDB高可用系统,该系统包括两套访问模块和两套监控容灾模块,访本文档来自技高网...

【技术保护点】
1.一种双主架构的InfluxDB高可用系统,其特征在于,该系统包括访问模块和监控容灾模块,访问模块和监控容灾模块与两个InfluxDB节点配合使用;/n访问模块用于将用户的写请求同时在两个InfluxDB节点上执行,保证数据库节点的实时一致性,同时访问模块将用户的读请求交替发送给两个InfluxDB节点,以实现负载均衡,提升查询性能;/n监控容灾模块用于监控后端InfluxDB节点的可用状态,并向访问模块提供状态查询接口,同时当发现数据库数据存在延迟时自动将数据进行补齐。/n

【技术特征摘要】
1.一种双主架构的InfluxDB高可用系统,其特征在于,该系统包括访问模块和监控容灾模块,访问模块和监控容灾模块与两个InfluxDB节点配合使用;
访问模块用于将用户的写请求同时在两个InfluxDB节点上执行,保证数据库节点的实时一致性,同时访问模块将用户的读请求交替发送给两个InfluxDB节点,以实现负载均衡,提升查询性能;
监控容灾模块用于监控后端InfluxDB节点的可用状态,并向访问模块提供状态查询接口,同时当发现数据库数据存在延迟时自动将数据进行补齐。


2.根据权利要求1所述的双主架构的InfluxDB高可用系统,其特征在于,所述访问模块作为代理层对外提供与InfluxDB相同的访问协议接口,用户通过InfluxDB客户端或Http客户端连接并访问数据库。


3.根据权利要求2所述的双主架构的InfluxDB高可用系统,其特征在于,所述访问协议接口包括GET/query接口和POST/write接口。


4.根据权利要求3所述的双主架构的InfluxDB高可用系统,其特征在于,所述GET/query接口具体处理逻辑如下:
(1)、查询本次应访问InfluxDB数据库节点A,则下一步执行步骤(2);
(2)、向监控容灾模块查询节点A是否可用,则下一步执行步骤(3);
(3)、判断节点A状态是否可用:
①、若是,则下一步执行步骤(4);
②、若否,则跳转至步骤(7)
(4)、将请求发送至节点A并接收响应,则下一步执行步骤(5);
(5)、判断节点B是否为可用状态:
①、若是,则下一步执行步骤(6);
②、若否,则跳转至步骤(10);
(6)、设置节点B为下次访问节点,下一步执行步骤(10);
(7)、判断节点B是否可用:
①、若是,则下一步执行步骤(8);
②、若否,则下一步执行步骤(10);
(8)、将节点A标记为不可用状态,并启动后台异步线程更新节点A状态,下一步执行步骤(9...

【专利技术属性】
技术研发人员:赵山王阳厉颖
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1