本公开涉及分布式计算,尤其涉及一种分布式系统中主从节点选举方法、装置、设备及存储介质。
背景技术:
1、在分布式系统的设计中,cap理论指出一致性(consistency)、可用性(availability)和分区容错性(partition tolerance)三者之间只能权衡满足其中的两者。
2、目前主流的分布式系统解决方案,如基于paxos、raft或zab一致性算法的软件产品,在单中心架构下表现良好。然而,在双中心架构,特别是在异地双中心这种网络环境不稳定的情况下,这些一致性算法往往会变得非常敏感,导致频繁的状态切换,进而影响整体服务的稳定性。
3、在金融私有云中,通常采用单中心、同城双中心(双活/热备、冷备)、或异地双中心(双活/热备、冷备)等架构形式。双中心双活架构可以最大限度地利用服务器资源,并确保系统能够在单中心故障时仍能提供服务,从而降低因外部因素导致的金融服务中断风险。
4、双中心架构通常依赖高成本、带宽有限的专线连接,尤其是在异地双中心中,这种限制更为明显。行业内的多中心或分布式服务通常通过投票的方式来进行选举,这意味着需要3个或更多奇数节点才能达成一致。然而,双中心架构本身无法满足这一条件,因为在网络分区时(如专线断开),两个中心可能都会认为对方已“宕机”,即所谓的“脑裂”,尽管双方实际上仍在运行。
5、由于上述原因,金融私有云在双中心环境中通常不支持基于这些一致性算法的软件产品,即这些产品只在单中心环境中使用,而不提供跨中心的服务支持。
6、此外,这些一致性算法依赖投票选举,需要至少3个奇数节点才能产生一致的结果。当集群节点数少于n/2+1时(n为集群总节点数),集群将因投票数不足而无法正常工作。这意味着要实现高可用的分布式服务,必须付出冗余的代价。然而,对于并发量较低的业务场景来说,这种冗余成本显得过高和不经济。
技术实现思路
1、本公开提供了一种分布式系统中主从节点选举方法、装置、设备及存储介质,以至少解决现有技术中存在的以上技术问题。
2、根据本公开的第一方面,提供了一种分布式系统中主从节点选举方法,所述方法包括:
3、确定与数据库连接的多个中心,每个所述中心包括多个节点;
4、根据每个所述节点进入系统的运行时间的先后顺序,数据库给每个所述节点分配一个自增标识,其中,所述自增标识越小,表示所述节点运行的时间越早;
5、每个所述节点向所述数据库发送周期性心跳数据;
6、根据每个所述节点的周期性心跳数据以及自增标识,确定每个所述中心的中心主节点和中心从节点,以及从多个所述中心主节点中确定全局主节点;
7、当所述全局主节点发生故障时,根据每个所述中心主节点的周期性心跳数据以及自增标识,选举出新的全局主节点;
8、当每个中心的中心主节点发生故障时,根据每个所述中心从节点的周期性心跳数据以及自增标识,选举出新的中心主节点。
9、在一可实施方式中,所述根据每个所述节点的周期性心跳数据以及自增标识,确定每个所述中心的中心主节点和中心从节点,以及从多个所述中心主节点中确定全局主节点,包括:
10、选择每个中心中周期性心跳数据的最后心跳时间在预设范围内,且自增标识最小的节点为中心主节点,其余节点为中心从节点;
11、选择周期性心跳数据的最后心跳时间在预设范围内,且自增标识最小的中心主节点为全局主节点。
12、在一可实施方式中,所述当所述全局主节点发生故障时,根据每个所述中心主节点的周期性心跳数据以及自增标识,选举出新的全局主节点,包括:
13、当所述全局主节点发生故障时,选择周期性心跳数据的最后心跳时间在预设范围内,且自增标识最小的中心主节点为新的全局主节点。
14、在一可实施方式中,所述当每个中心的中心主节点发生故障时,根据每个所述中心从节点的周期性心跳数据以及自增标识,选举出新的中心主节点,包括:
15、当每个中心的中心主节点发生故障时,选择每个中心中周期性心跳数据的最后心跳时间在预设范围内,且自增标识最小的中心从节点为新的中心主节点。
16、在一可实施方式中,所述方法还包括:
17、当确定中心主节点和全局主节点后,每个中心的中心从节点向中心主节点发送数据,中心主节点向全局主节点发送数据,全局主节点向数据库发送数据。
18、在一可实施方式中,所述方法还包括:
19、当中心主节点与全局主节点之间断开连接时,中心主节点与数据库连接,向数据库发送数据。
20、在一可实施方式中,所述预设范围为30-60s。
21、根据本公开的第二方面,提供了一种分布式系统中主从节点选举装置,所述装置包括:
22、第一确定单元,配置为确定与数据库连接的多个中心,每个所述中心包括多个节点;
23、分配单元,配置为根据每个所述节点进入系统的运行时间的先后顺序,数据库给每个所述节点分配一个自增标识,其中,所述自增标识越小,表示所述节点运行的时间越早;
24、发送单元,配置为每个所述节点向所述数据库发送周期性心跳数据;
25、第二确定单元,配置为根据每个所述节点的周期性心跳数据以及自增标识,确定每个所述中心的中心主节点和中心从节点,以及从多个所述中心主节点中确定全局主节点;
26、第一选举单元,配置为当所述全局主节点发生故障时,根据每个所述中心主节点的周期性心跳数据以及自增标识,选举出新的全局主节点;
27、第二选举单元,配置为当每个中心的中心主节点发生故障时,根据每个所述中心从节点的周期性心跳数据以及自增标识,选举出新的中心主节点。
28、根据本公开的第三方面,提供了一种电子设备,包括:
29、至少一个处理器;以及
30、与所述至少一个处理器通信连接的存储器;其中,
31、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开所述的方法。
32、根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本公开所述的方法。
33、本公开的分布式系统中主从节点选举方法、装置、设备及存储介质,通过增加一个自增标识,将自增标识与周期性心跳数据一起作为全局统一的选举标准,如此,在双中心架构,甚至是多中心架构中,无论是正常运行、双中心“脑裂”还是单边中心整体“宕机下线”,单个中心都能够继续正常工作,并且数据的准确性能够维持在可控范围内。这种设计确保了系统的稳定性,即使在极端情况下也能保持业务的连续性。
34、此外,基于数据库的选举机制不再依赖传统的投票过程,这意味着无论有多少节点在线,系统都能够正常运行,甚至在只有一个节点的情况下也能保证稳定性和可用性。对于并发量较小的业务场景,最少只需两台机器就可以实现高可用性,这大大降低了系统的复杂性和维护成本。
35、应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
1.一种分布式系统中主从节点选举方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,
3.根据权利要求1所述的方法,其特征在于,
4.根据权利要求1所述的方法,其特征在于,
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
7.根据权利要求2-4中任一项所述的方法,其特征在于,
8.一种分布式系统中主从节点选举装置,其特征在于,所述装置包括:
9.一种电子设备,其特征在于,包括:
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使计算机执行根据权利要求1-7中任一项所述的方法。