CN115834356A - 一种单元化部署的方法及装置 - Google Patents
一种单元化部署的方法及装置 Download PDFInfo
- Publication number
- CN115834356A CN115834356A CN202211450911.5A CN202211450911A CN115834356A CN 115834356 A CN115834356 A CN 115834356A CN 202211450911 A CN202211450911 A CN 202211450911A CN 115834356 A CN115834356 A CN 115834356A
- Authority
- CN
- China
- Prior art keywords
- processing unit
- standby processing
- standby
- unit
- election
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种单元化部署的方法及装置,包括:第一备处理单元在预设时段内未接收到主处理单元的心跳,且在第一备处理单元的选举时长内未接收到投票请求时,向第二备处理单元发送投票请求;接收第二备处理单元基于投票请求发送的选票,若确定选票的数量大于预设选票阈值,则将第一备处理单元切换为主处理单元;第一备处理单元为备处理单元中任一单元;第二备处理单元为除第一备处理单元之外的任一单元;投票请求是第二备处理单元在未接收到心跳,且在经过第二备处理单元的选举时长之后发送的;主处理单元和备处理单元属于分布式架构中功能一致的单元;以此保证切换处理单元的效率、保证数据一致性,提高数据处理的安全性和准确性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种单元化部署的方法及装置。
背景技术
随着计算机技术的发展,为满足高性能、可扩展等要求,越来越多的系统采用分布式架构,并在分布式架构中采用单元化部署。其中,单元化部署指的是以单元为分布式架构中的基本单位,在分布式架构中部署多个不同功能的单元,任一单元部署有所需要的应用节点;单元指的是能完成业务操作的自包含集合,包含业务所需的服务以及数据。
目前,为了使分布式架构中不同功能的单元具有应对灾难性故障的能力,针对任一功能的单元,该单元包括主处理单元和备处理单元。其中,备处理单元用于在主处理单元发生故障时,进行主备切换,实现由该备处理单元作为主处理单元处理数据。
在备处理单元为多个时,主备切换方式包括人工切换和预设顺序切换;然而,人工切换方式的效率低,对运维人员的要求高。预设顺序切换方式在某一单元发生网络中断、网络分区等情况时,会出现数据不一致的情况,无法保证数据一致性。
发明内容
本发明实施例提供一种单元化部署的方法及装置,用于保证单元主备切换的效率,保证数据一致性,提高数据处理的准确性。
第一方面,本发明实施例提供一种单元化部署的方法,包括:
第一备处理单元在预设时段内未接收到主处理单元的心跳,且在所述第一备处理单元的选举时长内未接收到投票请求时,向第二备处理单元发送投票请求;其中,所述第一备处理单元为备处理单元中任一单元;所述第二备处理单元为所述备处理单元中除所述第一备处理单元之外的任一单元;所述投票请求是第二备处理单元在未接收到所述主处理单元的心跳,且在经过所述第二备处理单元的选举时长之后发送的;所述主处理单元和所述备处理单元属于分布式架构中功能一致的单元;
所述第一备处理单元接收所述第二备处理单元基于所述投票请求发送的选票,若确定选票数量大于预设选票阈值,则将所述第一备处理单元切换为主处理单元。
在上述技术方案中,通过预设时段以及主处理单元的心跳来确定主处理单元是否发生宕机或故障等情况,以提高确定主处理单元发生宕机或故障等情况的效率和灵活性。具体的,在确定预设时段内未接收到主处理单元的心跳时,表示主处理单元发生宕机或故障等情况;在确定预设时段内接收到主处理单元的心跳时,表示主处理单元未发生宕机或故障等情况,处于正常工作状态。
在确定主处理单元发生宕机或故障之后,根据第一备处理单元的选举时长确定第一备处理单元是否参与主处理单元的选举;具体的,在第一备处理单元的选举时长内未接收到投票请求时,表示第一备处理单元参与选举;在第一备处理单元的选举时长内接收到投票请求时,表示第一备处理单元不参与选举。
在确定第一备处理单元选举之后,向第二备处理单元发送投票请求,并根据第二备处理单元基于投票请求发送的选票确定是否当选为主处理单元,以此可以确定出待切换为主处理单元的备处理单元。
由此可见,通过选举的方式确定待切换为主处理单元的备处理单元保证了切换处理单元的效率;因为需要根据备处理单元的选举时长来确定该备处理单元是否参与选举,以及根据投票请求参与选举,可以保证发生网络中断、网络分区等情况的备处理单元无法参与选举,即无法切换为主处理单元,以此保证数据一致性,提高数据处理的安全性和准确性。
可选的,第一备处理单元在预设时段内未接收到主处理单元的心跳,且在所述第一备处理单元的选举时长内未接收到投票请求时,向第二备处理单元发送投票请求,包括:
所述第一备处理单元根据所述第一备处理单元中任一应用节点的心跳模块确定在预设时段内是否接收到所述主处理单元的心跳;所述第一备处理单元中各应用节点状态一致;
所述第一备处理单元在确定预设时段内未接收到所述主处理单元的心跳时,根据所述应用节点的选举模块启动选举定时器;
所述第一备处理单元在启动选举定时器之后,根据所述选举定时器确定所述第一备处理单元的选举时长内未接收到所述第二备处理单元发送的投票请求时,将所述第一备处理单元设置为候选者,增加所述第一备处理单元的任期数;
所述第一备处理单元向所述第二备处理单元发送投票请求。
上述技术方案中,以第一备处理单元中任一应用节点来代表该第一备处理单元进行选举。因为应用节点中包括各模块,以实现不同的功能,进而实现选举工程中功能的解耦和模块化,提升单元化部署的灵活性,适应于不同业务场景的需求。
可选的,所述第一备处理单元向所述第二备处理单元发送投票请求之前,还包括:
所述第一备处理单元根据所述应用节点的自检模块检测所述第一备处理单元是否满足发送要求;
若所述第一备处理单元中异常应用节点的数量不大于异常阈值,则确定所述第一备处理单元满足发送要求;
若所述第一备处理单元中异常应用节点的数量大于异常阈值,则确定所述第一备处理单元未满足发送要求。
上述技术方案中,第一备处理单元作为候选者时,在发送投票请求之前,对自身进行异常检测,以此保证第一备处理单元的安全性和准确性,进而保证切换主处理单元的安全性和准确性。
可选的,所述方法还包括:
所述第一备处理单元在启动选举定时器之后,根据所述选举定时器确定所述第一备处理单元的选举时长内接收到所述第二备处理单元发送的投票请求时,将所述第一备处理单元设置为追随者;
所述第一备处理单元若确定所述第二备处理单元的任期数大于所述第一备处理单元的任期数且所述第一备处理单元未发送选票,则向所述第二备处理单元发送选票;
所述第一备处理单元若确定所述第二备处理单元的任期数不大于所述第一备处理单元的任期数或所述第一备处理单元已发送选票,则不向所述第二备处理单元发送选票。
上述技术方案中,第一备处理单元作为追随者时,参与候选者(即第二备处理单元)的选举;其中,追随者的选票具有唯一性,只能发送一张选票,以此保证确定主处理单元的唯一性。
可选的,所述第一备处理单元的选举时长和所述第二备处理单元的选举时长是随机生成的,且所述第一备处理单元的选举时长和所述第二备处理单元的选举时长不一致。
上述技术方案中,选举时长作为备处理单元设置为候选者的条件;其中,选举时长是在预设时长范围(如100ms-500ms)内随机生成的,以此实现各备处理单元均存在成为候选者的机会,保证选择候选者的均衡性和灵活性。
可选的,将所述第一备处理单元切换为主处理单元之后,还包括:
所述第一备处理单元根据所述第一备处理单元中任一应用节点的状态同步模块向所述第二备处理单元发送同步请求;所述同步请求用于指示所述第二备处理单元与所述第一备处理单元进行数据同步。
上述技术方案中,通过应用节点的状态同步模块保证各备处理单元和主处理单元的数据一致性。
可选的,所述方法还包括:
所述第一备处理单元根据所述第一备处理单元中任一应用节点的持久化模块进行数据持久化。
第二方面,本发明实施例提供一种单元化部署的装置,包括:
判断模块,用于在预设时段内未接收到主处理单元的心跳,且在第一备处理单元的选举时长内未接收到投票请求时,向第二备处理单元发送投票请求;其中,所述第一备处理单元为备处理单元中任一单元;所述第二备处理单元为所述备处理单元中除所述第一备处理单元之外的任一单元;所述投票请求是第二备处理单元在未接收到所述主处理单元的心跳,且在经过所述第二备处理单元的选举时长之后发送的;所述主处理单元和所述备处理单元属于分布式架构中功能一致的单元;
处理模块,用于接收所述第二备处理单元基于所述投票请求发送的选票,若确定选票数量大于预设选票阈值,则将所述第一备处理单元切换为主处理单元。
可选的,所述判断模块具体用于:
根据所述第一备处理单元中任一应用节点的心跳模块确定在预设时段内是否接收到所述主处理单元的心跳;所述第一备处理单元中各应用节点状态一致;
在确定预设时段内未接收到所述主处理单元的心跳时,根据所述应用节点的选举模块启动选举定时器;
在启动选举定时器之后,根据所述选举定时器确定所述第一备处理单元的选举时长内未接收到所述第二备处理单元发送的投票请求时,将所述第一备处理单元设置为候选者,增加所述第一备处理单元的任期数;
向所述第二备处理单元发送投票请求。
可选的,所述判断模块还用于:
向所述第二备处理单元发送投票请求之前,根据所述应用节点的自检模块检测所述第一备处理单元是否满足发送要求;
若所述第一备处理单元中异常应用节点的数量不大于异常阈值,则确定所述第一备处理单元满足发送要求;
若所述第一备处理单元中异常应用节点的数量大于异常阈值,则确定所述第一备处理单元未满足发送要求。
可选的,所述判断模块还用于:
在启动选举定时器之后,根据所述选举定时器确定所述第一备处理单元的选举时长内接收到所述第二备处理单元发送的投票请求时,将所述第一备处理单元设置为追随者;
若确定所述第二备处理单元的任期数大于所述第一备处理单元的任期数且所述第一备处理单元未发送选票,则向所述第二备处理单元发送选票;
若确定所述第二备处理单元的任期数不大于所述第一备处理单元的任期数或所述第一备处理单元已发送选票,则不向所述第二备处理单元发送选票。
可选的,所述第一备处理单元的选举时长和所述第二备处理单元的选举时长是随机生成的,且所述第一备处理单元的选举时长和所述第二备处理单元的选举时长不一致。
可选的,所述处理模块还用于:
将所述第一备处理单元切换为主处理单元之后,根据所述第一备处理单元中任一应用节点的状态同步模块向所述第二备处理单元发送同步请求;所述同步请求用于指示所述第二备处理单元与所述第一备处理单元进行数据同步。
可选的,所述处理模块还用于:
根据所述第一备处理单元中任一应用节点的持久化模块进行数据持久化。
第三方面,本发明实施例还提供一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述单元化部署的方法。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述单元化部署的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构示意图;
图2为本发明实施例提供的一种应用节点的架构示意图;
图3为本发明实施例提供的一种单元化部署的方法的流程示意图;
图4为本发明实施例提供的一种单元化部署的示意图;
图5为本发明实施例提供的一种单元化部署的示意图;
图6为本发明实施例提供的一种单元化部署的示意图;
图7为本发明实施例提供的一种单元化部署的示意图;
图8为本发明实施例提供的一种单元化部署的示意图;
图9为本发明实施例提供的一种单元化部署的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
随着计算机技术的发展,为满足高性能、可扩展等要求,越来越多的系统采用分布式架构;其中,分布式架构是分布式计算技术的应用和工具,成熟的技术包括J2EE,CORBA和NET(DCOM)等。指一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统架构。
在分布式架构的基础上,采用单元化部署,以单元作为部署的基本单位,构建单元化架构。其中,单元是指一个能完成所有业务操作的自包含集合,在该集合中包含了所有业务所需的所有服务,以及分配给该单元的数据。
但在计算机技术领域中,无论是服务、机房、节点、架构、单元等均存在灾难性故障的隐患。其中,灾难性故障指的是无法恢复的突然且完全的故障。即突然性的故障导致单元无法使用。
因此,为了使单元具有应用灾难性故障的能力,对该单元进行复制,得到多个单元,其中包括一个主处理单元和多个备处理单元;主处理单元和多个备处理单元的功能一致。主处理单元用于接收客户端的请求,并相应于客户端的请求;备处理单元用于在主处理单元发生灾难性故障时,接替主处理单元处理客户端请求。相当于主备切换(即主处理单元切换为备处理单元)。
目前,实现主备切换的方式一般包括以下两种:
1、确定主处理单元故障后,人为指定某一备处理单元进行主备切换。
2、各处理单元具有预设序号,如s1、s2、s3等。确定主处理单元(如预设序号为s1)故障后,按照预设序号的顺序选择备处理单元(即选择预设序号为s2的备处理单元)进行主备切换。
为了满足CAP(Consistency,一致性;Availability,可用性;Partitiontolerance,分区容忍性)原理,通过第三方组件或选择后的备处理单元发送同步请求的方式实现各处理单元的数据一致性。
但在上述技术方案中,人为主备切换过程中,需要尽快隔离故障单元,使RTO(Recovery Time Objective,表示灾难性故障发生后,从IT系统宕机导致业务停止,到IT系统恢复至可以支持各部门运作、恢复运营之间的时间段)趋近于0。也就是说,隔离一个故障单元需要耗时几分钟,导致切换效率低,且对运维人员要求高。
按照预设序号的方式进行主备切换过程中,无法保证选择的备处理单元为安全正常的处理单元。在网络中断、网络分区等情况下,存在选择的备处理单元为故障的、不可用的隐患,导致数据出现不一致的情况,即无法保证数据一致性。
另外,在实现各处理单元之间数据一致性时,存在第三方组件不可靠的隐患,选择后的备处理单元存在安全性的隐患,导致数据出现不一致的情况,无法保证数据一致性。
因此,现亟需一种单元化部署的方法,保证单元主备切换的效率,保证数据一致性,提高数据处理的准确性。
图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构包括A单元100、B单元200和C单元300。需要说明的是,本发明实施例中仅示例性的示出架构中包括三个单元,但并不对单元的数量进行限定。
本发明实施例中,以A单元100为主处理单元为例;任一单元包括多个应用节点;如图1所示,A单元100包括应用节点a1、a2、a3和a4;B单元200包括应用节点b1、b2、b3和b4;C单元300包括应用节点c1、c2、c3和c4;其中,任一两个单元之间的业务功能是一致的;如A单元100和C单元300的业务功能是一致的。非同一单元中的两个应用节点的业务功能可以相同可以不同,在此不做限定;例如,应用节点a1和应用节点c1的业务功能可以是一致的,应用节点a1和应用节点b1的业务功能可以是不一致的。
在本发明实施例中,任一单元中任一应用节点包括功能模块和业务模块;其中,功能模块用于参与该单元的选举;业务模块用于实现具体的业务功能,在此不作具体限定。
图2为本发明示例性示出的一种应用节点的架构示意图,如图2所示,应用节点包括功能模块和业务模块;功能模块具体包括注册模块、心跳模块、状态同步模块、自检模块和持久化模块。
其中,注册模块用于根据配置注册并启动需要装载的其他模块(即心跳模块、状态同步模块、自检模块和持久化模块)。
心跳模块用于与其他单元的心跳模块连接,获取其他单元的心跳,并根据缓存中记录的心跳时间计算心跳间隔。
状态同步模块用于实现各单元的数据一致性。
自检模块,用于对自身进行异常检测,并确定出异常的应用节点的数量。
持久化模块用于将方案执行过程中产生的数据写入分布式缓存中,实现数据持久化。
在本发明实施例中,同一单元中各应用节点的功能模块的状态是一致的,因此允许任一单元中任一应用节点代表该单元参与主处理单元的选举。功能模块的状态包括注册模块、心跳模块、状态同步模块、自检模块和/或持久化模块的状态。
需要说明的是,上述图1和图2所示的架构仅是一种示例,本发明实施例对此不做限定。
基于上述描述,图3示例性的示出了本发明实施例提供的一种单元化部署的方法的流程示意图,该流程可由单元化部署的装置执行。
如图3所示,该流程具体包括:
步骤310,第一备处理单元在预设时段内未接收到主处理单元的心跳,且在所述第一备处理单元的选举时长内未接收到投票请求时,向第二备处理单元发送投票请求。
本发明实施例中,第一备处理单元为备处理单元中任一单元;第二备处理单元为备处理单元中除第一备处理单元之外的任一单元;投票请求是第二备处理单元在未接收到主处理单元的心跳,且在经过第二备处理单元的选举时长之后发送的;主处理单元和备处理单元属于分布式架构中功能一致的单元。
以上述图1为例,主处理单元为A单元、B单元和C单元属于分布式架构中功能一致的单元;其中,A单元作为主处理单元、B单元作为第一备处理单元、C单元作为第二备处理单元。
步骤320,所述第一备处理单元接收所述第二备处理单元基于所述投票请求发送的选票,若确定选票数量大于预设选票阈值,则将所述第一备处理单元切换为主处理单元。
本发明实施例中,预设选票阈值可以是根据经验预设的值,如预设选票阈值为主处理单元与备处理单元的数量和的一半等(如主处理单元与备处理单元的数量和为8,则预设选票阈值为4),在此不作具体限定。
在步骤310中,根据第一备处理单元中任一应用节点的心跳模块确定是否在预设时段内是否接收到主处理单元的心跳。其中,预设时段可以是根据经验预设的值,如30s等。
以上述图1和图2为例,以应用节点b1代表第一备处理单元(即B单元)。第一备处理单元根据应用节点b1的心跳模块获取主处理单元(即A单元)的心跳,并记录接收时刻,如接收时刻为12:00:00;假设在12:00:00至12:00:30未接收到主处理单元的心跳,则表示主处理单元出现灾难性故障,需要进行主备切换。
为了更好的阐述本发明技术方案,对各单元设置不同的状态,状态包括领导者、候选者和追随者。其中领导者作为主处理单元,用于处理客户端请求等操作;候选者是在确定主处理单元发生故障时产生的,作为待切换主处理单元;追随者用于参与领导者的选举。基于上述图1,图4示例性示出了一种单元化部署的示意图。如图4所示,A单元作为领导者、B单元和C单元作为追随者。
本发明实施例中,在确定主处理单元故障之后,将主处理单元的状态设置为追随者状态。基于上述图4,图5示例性示出了一种单元化部署的示意图。如图5所示,A单元、B单元和C单元均作为追随者,相当于从各单元中选取出领导者作为主处理单元。
在各单元的状态为追随者之后,各单元启动各自的选举定时器,从各单元中确定出候选者。其中,选举定时器用于在预设时间范围内随机生成选举时长。在本发明实施例中,任意两个单元的选举时长不一致。
其中,预设时间范围可以是根据经验预设的值,如预设时间范围为100ms-500ms。进而可以举例,A单元的选举时长为350ms,B单元的选举时长为150ms,C单元的选举时长为200ms。
在一种可实施的方式中,第一备处理单元在启动选举定时器之后,根据选举定时器确定第一备处理单元的选举时长内未接收到第二备处理单元发送的投票请求时,将第一备处理单元设置为候选者,增加第一备处理单元的任期数。
基于上述实施例进行举例,图6示例性示出了一种单元化部署的示意图。如图6所示,因为任一单元的投票请求是经过该单元的选举时长之后发送的,且A单元和C单元的选举时长大于B单元(即第一备处理单元)的选举时长,以此可以确定B单元在经过B单元的选举时长内,未接收到A单元和C单元发送的投票请求,进而将B单元作为候选者。
第一备处理单元在设置为候选者之后,更新第一备处理单元的任期数,并向第二备处理单元(即追随者发送)发送投票请求。其中,任期数用于追随者确定是否对候选者发送选票。本发明实施例中,更新方式为递增,即增加第一备处理单元的任期数。可以想到的是,也可以使用其他更新方式更新第一备处理单元的任期数,如递减等方式,在此不作具体限定。由图6所示,增加第一备处理单元的任期数之后,第一备处理单元的任期数为1。
为了保证候选者的安全性,候选者在发送投票请求之前,根据候选者中任一应用节点的自检模块检测候选者是否满足发送要求(即是否满足安全性)。
具体的,若第一备处理单元中异常应用节点的数量不大于异常阈值,则确定第一备处理单元满足发送要求。若第一备处理单元中异常应用节点的数量大于异常阈值,则确定第一备处理单元未满足发送要求。其中,异常阈值可以是根据经验预设的值,如异常阈值为单元中应用节点数量的一半等。
基于上述图1和图2举例来说,B单元中应用节点的数量为4,假设异常阈值为2。若根据应用节点b1的自检模块检测B单元中异常应用节点的数量为1,则确定B单元满足发送要求,进而向A单元和C单元发送投票请求。若根据应用节点b1的自检模块检测B单元中异常应用节点的数量为3,则确定B单元不满足发送要求,进而B单元禁止向A单元和C单元发送投票请求。
在另一种可实施的方式中,第一备处理单元在启动选举定时器之后,根据选举定时器确定第一备处理单元的选举时长内接收到第二备处理单元发送的投票请求时,将第一备处理单元设置为追随者。
基于上述描述进行举例,假设A单元的选举时长为250ms,B单元的选举时长为450ms,C单元的选举时长为200ms。C单元在启动选举定时器,且经过200ms之后发送投票请求,B单元在启动选举定时器,且经过300ms之后接收到C单元发送的投票请求,则表示B单元无法作为候选者,没有选为领导者的概率。
此时,B单元也不会增加任期数(即B单元的任期数为0,C单元的任期数为1)。
基于上述实施例进行举例,图7示例性示出了一种单元化部署的示意图。如图7所示,因为B单元和A单元的选举时长大于C单元的选举时长,B单元在经过B单元的选举时长内,接收到C单元发送的投票请求,进而将C单元作为候选者。
第一备处理单元(即B单元)在接收第二备处理单元(即C单元)发送的投票请求后,响应于投票请求,判断是否向C单元发送选票。
具体的,第一备处理单元若确定第二备处理单元的任期数大于第一备处理单元的任期数且第一备处理单元未发送选票,则向第二备处理单元发送选票。
基于图7进行举例,B单元的任期数为0,C单元的任期数为1,则确定第二备处理单元的任期数大于第一备处理单元的任期数;假设B单元未发送过选票,则向C单元发送选票;假设B单元向已经向A单元发送过选票,则不向C单元发送选票。
第一备处理单元若确定第二备处理单元的任期数不大于第一备处理单元的任期数或第一备处理单元已发送选票,则不向第二备处理单元发送选票。
基于上述描述进行举例,假设B单元在450ms内未收到A单元和C单元发送的投票请求,则B单元也设置为候选者,此时B单元的任期数也为1,进而确定第二备处理单元的任期数不大于第一备处理单元的任期数,则不向C单元发送选票。
在步骤320中,第一备处理单元作为候选者接收到第二备处理单元基于第一备处理单元发送的投票请求反馈的选票之后,统计选票数量。在本发明实施例中,候选者会将自己的选票发送给自己。
基于上述图6进行举例,B单元将自身的选票发给自己,A单元和C单元向B单元发送选票,进而统计出选票数量为3。
第一备处理单元统计出选票数量之后,与预设选票阈值进行对比;其中,预设选票阈值可以是根据经验预设的值;如预设选票阈值为单元数量的一半等,如单元的数量为3,则预设选票阈值为1.5。
进一步的,若选票数量大于预设选票阈值,则将第一备处理单元切换为主处理单元。若选票数量不大于预设选票阈值,则将第一备处理单元不切换为主处理单元,并重新执行上述选举过程,直至选择出主处理单元。
第一备处理单元切换为主处理单元之后,第一备处理单元根据会第一备处理单元中任一应用节点的状态同步模块向第二备处理单元发送同步请求,以使第二备处理单元与第一备处理单元进行数据同步。其中,数据同步包括任期数同步。
基于上述图6,图8示例性示出了一种单元化部署的示意图。如图8所示,B单元切换为主处理单元之后,向A单元和C单元发送心跳和同步请求,以使A单元和C单元的任期数与B单元的任期数保持一致,以及A单元和C单元的数据与B单元的数据保持一致。
在本发明实施例中,应用节点的持久化模块用于将单元化部署过程中产生的数据存储至分布式缓存中,进而是实现数据持久化。
基于上述技术方案,可以通过预设时段以及主处理单元的心跳来确定主处理单元是否发生宕机或故障等情况,以提高确定主处理单元发生宕机或故障等情况的效率和灵活性。
具体的,如上述图4所示,B单元在确定预设时段内未接收到A单元的心跳时,表示A单元发生宕机或故障等情况。在确定A单元发生宕机或故障之后如图6所示,根据B单元的选举时长确定B单元参与主处理单元的选举;然后向A单元和C单元发送投票请求,并接收A单元和C单元发送的选票。最后如图6所示,确定B单元当选为领导者(即主处理单元),以此可以确定出切换为主处理单元的备处理单元为B单元。
由此可见,通过选举的方式确定待切换为主处理单元的备处理单元保证了切换处理单元的效率;因为需要根据备处理单元的选举时长来确定该备处理单元是否参与选举,以及根据投票请求参与选举,可以保证发生网络中断、网络分区等情况的备处理单元无法参与选举,即无法切换为主处理单元,以此保证数据一致性,提高数据处理的安全性和准确性。
另外,若A单元发送网络分区时,通过B单元自身的选票和C单元的选票,仍然可以确定出B单元为待切换的备处理单元,保证了主备切换的可用性。
基于相同的技术构思,图9示例性的示出了本发明实施例提供的一种单元化部署的装置的结构示意图,该装置可以执行单元化部署的方法的流程。
如图9所示,该装置具体包括:
判断模块910,用于在预设时段内未接收到主处理单元的心跳,且在第一备处理单元的选举时长内未接收到投票请求时,向第二备处理单元发送投票请求;其中,所述第一备处理单元为备处理单元中任一单元;所述第二备处理单元为所述备处理单元中除所述第一备处理单元之外的任一单元;所述投票请求是第二备处理单元在未接收到所述主处理单元的心跳,且在经过所述第二备处理单元的选举时长之后发送的;所述主处理单元和所述备处理单元属于分布式架构中功能一致的单元;
处理模块920,用于接收所述第二备处理单元基于所述投票请求发送的选票,若确定选票数量大于预设选票阈值,则将所述第一备处理单元切换为主处理单元。
可选的,所述判断模块910具体用于:
根据所述第一备处理单元中任一应用节点的心跳模块确定在预设时段内是否接收到所述主处理单元的心跳;所述第一备处理单元中各应用节点状态一致;
在确定预设时段内未接收到所述主处理单元的心跳时,根据所述应用节点的选举模块启动选举定时器;
在启动选举定时器之后,根据所述选举定时器确定所述第一备处理单元的选举时长内未接收到所述第二备处理单元发送的投票请求时,将所述第一备处理单元设置为候选者,增加所述第一备处理单元的任期数;
向所述第二备处理单元发送投票请求。
可选的,所述判断模块910还用于:
向所述第二备处理单元发送投票请求之前,根据所述应用节点的自检模块检测所述第一备处理单元是否满足发送要求;
若所述第一备处理单元中异常应用节点的数量不大于异常阈值,则确定所述第一备处理单元满足发送要求;
若所述第一备处理单元中异常应用节点的数量大于异常阈值,则确定所述第一备处理单元未满足发送要求。
可选的,所述判断模块910还用于:
在启动选举定时器之后,根据所述选举定时器确定所述第一备处理单元的选举时长内接收到所述第二备处理单元发送的投票请求时,将所述第一备处理单元设置为追随者;
若确定所述第二备处理单元的任期数大于所述第一备处理单元的任期数且所述第一备处理单元未发送选票,则向所述第二备处理单元发送选票;
若确定所述第二备处理单元的任期数不大于所述第一备处理单元的任期数或所述第一备处理单元已发送选票,则不向所述第二备处理单元发送选票。
可选的,所述第一备处理单元的选举时长和所述第二备处理单元的选举时长是随机生成的,且所述第一备处理单元的选举时长和所述第二备处理单元的选举时长不一致。
可选的,所述处理模块920还用于:
将所述第一备处理单元切换为主处理单元之后,根据所述第一备处理单元中任一应用节点的状态同步模块向所述第二备处理单元发送同步请求;所述同步请求用于指示所述第二备处理单元与所述第一备处理单元进行数据同步。
可选的,所述处理模块920还用于:
根据所述第一备处理单元中任一应用节点的持久化模块进行数据持久化。
基于相同的技术构思,本发明实施例还提供一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述单元化部署的方法。
基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述单元化部署的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种分布式架构中单元化部署的方法,其特征在于,包括:
第一备处理单元在预设时段内未接收到主处理单元的心跳,且在所述第一备处理单元的选举时长内未接收到投票请求时,向第二备处理单元发送投票请求;其中,所述第一备处理单元为备处理单元中任一单元;所述第二备处理单元为所述备处理单元中除所述第一备处理单元之外的任一单元;所述投票请求是第二备处理单元在未接收到所述主处理单元的心跳,且在经过所述第二备处理单元的选举时长之后发送的;所述主处理单元和所述备处理单元属于分布式架构中功能一致的单元;
所述第一备处理单元接收所述第二备处理单元基于所述投票请求发送的选票,若确定选票数量大于预设选票阈值,则将所述第一备处理单元切换为主处理单元。
2.如权利要求1所述的方法,其特征在于,第一备处理单元在预设时段内未接收到主处理单元的心跳,且在所述第一备处理单元的选举时长内未接收到投票请求时,向第二备处理单元发送投票请求,包括:
所述第一备处理单元根据所述第一备处理单元中任一应用节点的心跳模块确定在预设时段内是否接收到所述主处理单元的心跳;所述第一备处理单元中各应用节点状态一致;
所述第一备处理单元在确定预设时段内未接收到所述主处理单元的心跳时,根据所述应用节点的选举模块启动选举定时器;
所述第一备处理单元在启动选举定时器之后,根据所述选举定时器确定所述第一备处理单元的选举时长内未接收到所述第二备处理单元发送的投票请求时,将所述第一备处理单元设置为候选者,增加所述第一备处理单元的任期数;
所述第一备处理单元向所述第二备处理单元发送投票请求。
3.如权利要求2所述的方法,其特征在于,所述第一备处理单元向所述第二备处理单元发送投票请求之前,还包括:
所述第一备处理单元根据所述应用节点的自检模块检测所述第一备处理单元是否满足发送要求;
若所述第一备处理单元中异常应用节点的数量不大于异常阈值,则确定所述第一备处理单元满足发送要求;
若所述第一备处理单元中异常应用节点的数量大于异常阈值,则确定所述第一备处理单元未满足发送要求。
4.如权利要求2所述的方法,其特征在于,所述方法还包括:
所述第一备处理单元在启动选举定时器之后,根据所述选举定时器确定所述第一备处理单元的选举时长内接收到所述第二备处理单元发送的投票请求时,将所述第一备处理单元设置为追随者;
所述第一备处理单元若确定所述第二备处理单元的任期数大于所述第一备处理单元的任期数且所述第一备处理单元未发送选票,则向所述第二备处理单元发送选票;
所述第一备处理单元若确定所述第二备处理单元的任期数不大于所述第一备处理单元的任期数或所述第一备处理单元已发送选票,则不向所述第二备处理单元发送选票。
5.如权利要求1所述的方法,其特征在于,所述第一备处理单元的选举时长和所述第二备处理单元的选举时长是随机生成的,且所述第一备处理单元的选举时长和所述第二备处理单元的选举时长不一致。
6.如权利要求1所述的方法,其特征在于,将所述第一备处理单元切换为主处理单元之后,还包括:
所述第一备处理单元根据所述第一备处理单元中任一应用节点的状态同步模块向所述第二备处理单元发送同步请求;所述同步请求用于指示所述第二备处理单元与所述第一备处理单元进行数据同步。
7.如权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
所述第一备处理单元根据所述第一备处理单元中任一应用节点的持久化模块进行数据持久化。
8.一种单元化部署的装置,其特征在于,包括:
判断模块,用于在预设时段内未接收到主处理单元的心跳,且在第一备处理单元的选举时长内未接收到投票请求时,向第二备处理单元发送投票请求;其中,所述第一备处理单元为备处理单元中任一单元;所述第二备处理单元为所述备处理单元中除所述第一备处理单元之外的任一单元;所述投票请求是第二备处理单元在未接收到所述主处理单元的心跳,且在经过所述第二备处理单元的选举时长之后发送的;所述主处理单元和所述备处理单元属于分布式架构中功能一致的单元;
处理模块,用于接收所述第二备处理单元基于所述投票请求发送的选票,若确定选票数量大于预设选票阈值,则将所述第一备处理单元切换为主处理单元。
9.一种计算机设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1至7任一项所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202211450911.5A CN115834356B (zh) | 2022-11-19 | 2022-11-19 | 一种单元化部署的方法及装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202211450911.5A CN115834356B (zh) | 2022-11-19 | 2022-11-19 | 一种单元化部署的方法及装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN115834356A true CN115834356A (zh) | 2023-03-21 |
| CN115834356B CN115834356B (zh) | 2025-07-18 |
Family
ID=85529436
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202211450911.5A Active CN115834356B (zh) | 2022-11-19 | 2022-11-19 | 一种单元化部署的方法及装置 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN115834356B (zh) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2018171565A1 (zh) * | 2017-03-21 | 2018-09-27 | 华为技术有限公司 | 容灾部署方法、装置及系统 |
| CN109698775A (zh) * | 2018-11-21 | 2019-04-30 | 中国航空工业集团公司洛阳电光设备研究所 | 一种基于实时状态检测的双机冗余备份系统 |
| CN111988203A (zh) * | 2020-09-03 | 2020-11-24 | 深圳壹账通智能科技有限公司 | 节点选举方法、装置及存储介质 |
| CN114363154A (zh) * | 2021-12-29 | 2022-04-15 | 中国电信股份有限公司 | 节点选举方法、装置、电子设备及存储介质 |
| CN114465879A (zh) * | 2022-03-25 | 2022-05-10 | 中国农业银行股份有限公司 | 管理节点选举方法及装置、存储介质及电子设备 |
-
2022
- 2022-11-19 CN CN202211450911.5A patent/CN115834356B/zh active Active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2018171565A1 (zh) * | 2017-03-21 | 2018-09-27 | 华为技术有限公司 | 容灾部署方法、装置及系统 |
| CN109698775A (zh) * | 2018-11-21 | 2019-04-30 | 中国航空工业集团公司洛阳电光设备研究所 | 一种基于实时状态检测的双机冗余备份系统 |
| CN111988203A (zh) * | 2020-09-03 | 2020-11-24 | 深圳壹账通智能科技有限公司 | 节点选举方法、装置及存储介质 |
| CN114363154A (zh) * | 2021-12-29 | 2022-04-15 | 中国电信股份有限公司 | 节点选举方法、装置、电子设备及存储介质 |
| CN114465879A (zh) * | 2022-03-25 | 2022-05-10 | 中国农业银行股份有限公司 | 管理节点选举方法及装置、存储介质及电子设备 |
Non-Patent Citations (2)
| Title |
|---|
| 程立;: "金融级分布式交易的技术路径", 金融电子化, no. 12, 15 December 2016 (2016-12-15) * |
| 阿里云: "蚂蚁单元化解决方案白皮书", Retrieved from the Internet <URL:https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/160617/AntCloud_zh/1585895792638/%E8%9A%82%E8%9A%81%E5%8D%95%E5%85%83%E5%8C%96%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E7%99%BD%E7%9A%AE%E4%B9%A6.pdf> * |
Also Published As
| Publication number | Publication date |
|---|---|
| CN115834356B (zh) | 2025-07-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN113014634B (zh) | 集群选举处理方法、装置、设备及存储介质 | |
| CN111427728B (zh) | 状态管理方法、主备切换方法及电子设备 | |
| US20210320977A1 (en) | Method and apparatus for implementing data consistency, server, and terminal | |
| US9164864B1 (en) | Minimizing false negative and duplicate health monitoring alerts in a dual master shared nothing database appliance | |
| CN105933407B (zh) | 一种实现Redis集群高可用的方法及系统 | |
| JP2005209201A (ja) | 高可用性クラスタにおけるノード管理 | |
| CN113127270A (zh) | 一种基于云计算的3取2安全计算机平台 | |
| CN106330523A (zh) | 一种集群服务器容灾系统、方法和服务器节点 | |
| CN113204424B (zh) | 一种优化Raft集群的方法、装置及存储介质 | |
| US11544162B2 (en) | Computer cluster using expiring recovery rules | |
| CN113986450A (zh) | 一种虚拟机备份方法及装置 | |
| WO2022088861A1 (zh) | 数据库故障处理方法和装置 | |
| CN113515408A (zh) | 一种数据容灾方法、装置、设备及介质 | |
| CN116346582A (zh) | 一种实现主备双网冗余方法、装置、设备及存储介质 | |
| JP2005258946A (ja) | 分散システム及び多重化制御方法 | |
| CN117573306A (zh) | 批量任务调度系统、方法、装置、计算机设备和存储介质 | |
| CN117827544A (zh) | 热备份系统、方法、电子设备及存储介质 | |
| WO2025246814A1 (zh) | 高可用数据管理 | |
| CN112052127B (zh) | 一种用于双机热备环境的数据同步方法及装置 | |
| CN114968129B (zh) | 磁盘阵列冗余方法、系统、计算机设备和存储介质 | |
| CN109587218A (zh) | 一种集群选举的方法和装置 | |
| CN115834356A (zh) | 一种单元化部署的方法及装置 | |
| CN111880947A (zh) | 一种数据传输方法及装置 | |
| CN114124803B (zh) | 设备管理方法、装置、电子设备及存储介质 | |
| CN115396296A (zh) | 业务处理方法、装置、电子设备及计算机可读存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |