System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及分布式通信系统,具体涉及一种集群脑裂后子集群恢复成新集群的方法、设备和介质。
技术介绍
1、脑裂是指在分布式系统中,由于网络等原因,导致集群中的节点对于集群的状态有了不一样的理解,从而产生了两个或多个主节点,导致数据不一致、服务不可用等问题。由于分布式系统节点之间的通信故障或网络分区等原因,导致集群中的多个节点之间无法正常通信和协作,集群会随之发生“脑裂”现象,从而出现系统不可用、数据不一致、操作失败等问题。
2、目前现有的分布式系统在架构设计时,为了预防集群发生“脑裂”现象,其处理方法往往都是通过选举策略,在多个分裂后的子集群中选出一个子集群作为新的可用集群,终止其他分裂的子集群活动。
3、以开源的分布式搜索和分析引擎elasticsearch为例,官方通过minimum_master_nodes参数设置来避免脑裂的发生,官方的推荐值是(n/2)+1,其中n是具有master资格的节点的数量,设置这个参数后,只有足够的master候选节点时,才可以选举出一个master官方的推荐值是(n/2)+1,其中n是具有master资格的节点的数量,设置这个参数后,只有足够的master候选节点时,才可以选举出一个master。
4、若是没有通过选举算法,来避免集群发生“脑裂”,则分布式系统分裂后的子集群会各自独立成为新集群,在节点之间的通信或网络故障恢复后,这些已经各成一派的子集群无法自动正常融合恢复成一个统一的新集群。若是想强行合并系统集群,融合数据,研发人员需要投入大量的精力,且融
技术实现思路
1、本专利技术针对现有技术中的不足,提供一种集群脑裂后子集群恢复成新集群的方法、设备和介质。保证分布式集群发生“脑裂”现象后,各个分裂后的子集群可以正常的运行,保证当前业务系统照常使用。而且在节点之间的通信或网络故障恢复后,各个子集群可以按需自动合并成为新的统一集群,完美解决“脑裂”问题,提升分布式集群的稳定性,保证系统数据的完整性和可用性。
2、为实现上述目的,本专利技术采用以下技术方案:
3、一种分布式集群脑裂后子集群恢复成新集群的方法,包括:
4、随机生成哈希值作为原分布式集群使用的数据库中所有数据表的主键,用于防止重新恢复成新集群出现数据冲突问题;
5、当分布式集群的节点之间通信异常时,互相还能正常通信的节点之间自动组合成新的子集群,各个子集群生成一张脑裂事件表,根据脑裂事件表,将数据库中的数据划分为原集群数据和脑裂后新增的数据;
6、新的子集群进行自我选举,选举出一个新的主集群,剩下的集群为从集群;
7、若原集群节点间的通信恢复正常,则子集群融合成一个统一的新集群。
8、为优化上述技术方案,采取的具体措施还包括:
9、进一步地,所述脑裂事件表记载原集群节点数和子集群当前数据库中各数据表在脑裂发生后的数据条目数。
10、进一步地,所述新的子集群进行自我选举,选举出一个新的主集群具体为:
11、依次判断每一个子集群自身包含的节点数是否超过原集群的一半;
12、若是,则当前子集群将自己标记为主集群;主集群拥有对原集群数据进行查询、修改和删除的权限,也拥有增加、删除、修改和查询脑裂后新的数据的权限;
13、若否,则当前子集群将自己标记为从集群,从集群拥有增加、删除、修改和查询脑裂后新的数据的权限和对原集群数据进行查询的权限,但不能编辑和删除原集群数据。
14、进一步地,所述子集群融合成一个统一的新集群的具体过程为:
15、用户标记舍弃的从集群数据,若不标记,默认合并所有子集群的数据;
16、确认是否存在主集群,若存在,则跳过此步骤;
17、若所有子集群都是从集群,则选举数据总量最多的子集群为主集群,数据量相同的情况下,节点数多的子集群升为主集群;若是有多个子集群的数据量和节点数都相同,则随机将其中一个子集群升为主集群;
18、从集群的节点逐步加入主集群,从集群使用的数据库切换成主集群的数据库;
19、对标记为舍弃的从集群数据执行覆盖操作,同步主集群的数据库数据覆盖当前从集群数据,完成后从集群的数据库加入主集群的数据库集群中;
20、对于未被标记为舍弃的从集群,这些从集群的数据库向主集群数据库同步数据。
21、进一步地,所述从集群的数据库向主集群数据库同步数据具体为:
22、从集群读取脑裂事件表,定位到脑裂后新增数据的起始位置,将脑裂后新增数据向主集群数据库提交,主集群执行数据库提交事务,逐步入库;
23、待主集群的数据库处理完所有从集群的数据提交事务后,从集群开始同步主集群的全量数据,同步完成后,从集群的数据库加入主集群的数据库集群中。
24、本专利技术还提出一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时,实现如上所述的分布式集群脑裂后子集群恢复成新集群的方法。
25、本专利技术还提出一种计算机可读存储介质,存储有计算机程序,所述计算机程序使计算机执行如上所述的分布式集群脑裂后子集群恢复成新集群的方法。
26、本专利技术的有益效果是:
27、本专利技术保证了发生“脑裂”故障后,各个子集群都能够正常工作,不需要终止其中的部分分裂的子集群。且在原集群的节点网络通信恢复正常后,可以自动合并成一个新的统一集群。完成合并后,新的统一集群将正常提供分布式集群服务,且其尽可能的包含了原集群的节点,拥有全量的数据,包括各个子集群在“脑裂”后生成的数据。提升分布式集群的稳定性,保证系统数据的完整性和可用性。
本文档来自技高网...【技术保护点】
1.一种分布式集群脑裂后子集群恢复成新集群的方法,其特征在于,包括:
2.如权利要求1所述的分布式集群脑裂后子集群恢复成新集群的方法,其特征在于,所述脑裂事件表记载原集群节点数和子集群当前数据库中各数据表在脑裂发生后的数据条目数。
3.如权利要求1所述的分布式集群脑裂后子集群恢复成新集群的方法,其特征在于,所述新的子集群进行自我选举,选举出一个新的主集群具体为:
4.如权利要求1所述的分布式集群脑裂后子集群恢复成新集群的方法,其特征在于,所述子集群融合成一个统一的新集群的具体过程为:
5.如权利要求4所述的分布式集群脑裂后子集群恢复成新集群的方法,其特征在于,所述从集群的数据库向主集群数据库同步数据具体为:
6.一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时,实现如权利要求1-5任一项所述的分布式集群脑裂后子集群恢复成新集群的方法。
7.一种计算机可读存储介质,其特征在于:存储有计算机程序,所述计算机程序使计算机执行如权利要求1-5任一
...【技术特征摘要】
1.一种分布式集群脑裂后子集群恢复成新集群的方法,其特征在于,包括:
2.如权利要求1所述的分布式集群脑裂后子集群恢复成新集群的方法,其特征在于,所述脑裂事件表记载原集群节点数和子集群当前数据库中各数据表在脑裂发生后的数据条目数。
3.如权利要求1所述的分布式集群脑裂后子集群恢复成新集群的方法,其特征在于,所述新的子集群进行自我选举,选举出一个新的主集群具体为:
4.如权利要求1所述的分布式集群脑裂后子集群恢复成新集群的方法,其特征在于,所述子集群融合成一个统一的新集群的具体过程为...
【专利技术属性】
技术研发人员:杨慧,叶启宁,张楠,王雨,刘晴,
申请(专利权)人:中电鸿信信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。