一种基于Zookeeper的电力网络控制器控制方法及装置与流程
- 国知局
- 2024-11-25 15:05:05
本发明涉及运输设备控制领域,尤其涉及一种基于zookeeper的电力网络控制器控制方法及装置。
背景技术:
1、zookeeper是一个开源的分布式协调服务,它为分布式应用提供了一种高效、可靠的协调机制,能够应对单点故障,并且支持横向扩展。在集群中,即使部分节点失效,服务也可以继续运行,提供了强大的容灾保障功能。容灾保障功能关键在于构建系统的冗余。它要求系统有备份或者复制的机制,在主要的服务或节点失败时能够快速地切换到备用系统,这在大规模电力网络背景下尤为重要,以此来保证服务的持续可用。
2、在缺乏预选举机制的电力网络控制器分布式系统中,leader节点故障可能同时触发多个follower节点争抢成为新leader,这导致选票分裂和选举冲突。这种情况下,控制器集群可能需要经历多轮选举才能达成共识选出新的leader,期间频繁的投票过程会加剧网络和资源的负担,形成所谓的“选举风暴”。结果,不仅系统的故障恢复时间延长,影响了服务的连续性和可用性,还加大了系统的负载,降低了整体效率。因此,现有的电力网络集群存在故障恢复效率低的问题。
3、因此,亟需一种电力网络控制器控制策略,从而解决电力网络集群所存在故障恢复效率低的问题。
技术实现思路
1、本发明实施例提供一种基于zookeeper的电力网络控制器控制方法及装置,以解决缺乏预选举机制的电力网络控制器分布式系统所存在故障恢复效率低的问题。
2、为了解决上述问题,本发明一实施例提供一种基于zookeeper的电力网络控制器控制方法,应用于zookeeper中间件服务,包括:
3、获取电力网络集群所需的若干控制器对应的注册信息,基于所述注册信息控制每一控制器以临时节点的形式运行;其中,所述临时节点包括一leader节点以及若干follower节点,所述follower节点和所述leader节点的数量之和与所述控制器数量对应;
4、在未接收到当前leader节点的心跳信号时,接收每一follower节点发出的预选举信息,并将每一follower节点自身的预选举信息转发给除自身以外的所有其它follower节点,以使每一follower节点基于自身以及其它follower节点对应的预选举信息进行预选举;其中,预选举结果包括赞成票和反对票;
5、汇总每一follower节点获取到的赞成票数,选取赞成票数大于票数阈值的follower节点作为待选leader节点,以使在所述电力网络集群开启选举时基于所述待选leader节点进行选举。
6、作为上述方案的改进,所述预选举信息包括:最新事务id、任期以及故障计数;所述每一follower节点基于自身以及其它follower节点对应的预选举信息进行预选举,包括:
7、所述follower节点基于自身的预选举信息与每一其它follower节点的预选举信息进行判断;
8、若当前follower节点重新接收到leader节点的心跳信号,则当前follower节点投出反对票;
9、若其它follower节点的任期小于当前follower节点的任期,则当前follower节点投出反对票;
10、若其它follower节点的最新事务id小于当前follower节点的最新事务id,则当前follower节点投出反对票;
11、若其它follower节点的故障计数大于当前follower节点的故障计数,则当前follower节点投出反对票;
12、否则,当前follower节点投出赞成票。
13、作为上述方案的改进,每一所述follower节点的故障计数的获取,具体为:
14、获取未接收到当前leader节点的心跳信号时的选举时间点,以及每一所述follower节点发生每一故障事件的故障时间点;
15、基于所述电力网络集群的平均故障恢复时间,计算过期时长;
16、计算选举时间点与每一故障时间点之间的差值,获得每一故障事件的时间差值;
17、在每一所述follower节点中,判断所述过期时长是否大于每一故障事件对应的时间差值;
18、若是,则当前follower节点的故障计数加一;
19、若否,则当前follower节点的故障计数保持不变。
20、作为上述方案的改进,所述基于所述电力网络集群的平均故障恢复时间,计算过期时长,包括:
21、获取follower节点的节点总数量;
22、将所述节点总数量与所述平均故障恢复时间,代入预设的过期时长计算公式,获得过期时长;其中,所述过期时长计算公式,具体为:
23、t(n)=2t0+t0·ln(kn+1)
24、式中,t0为电力网络集群的平均故障恢复时间,n为节点总数量,k为增长率正系数。
25、作为上述方案的改进,在所述选取赞成票数大于票数阈值的follower节点作为待选leader节点之后,还包括:
26、根据当前follower节点数的节点总数量;
27、当所述节点总数量为奇数,则基于当前节点总数量,将原始集群规模计数更新为下一集群规模计数,以使所述电力网络集群基于所述下一集群规模计数进行选举;
28、当所述节点总数量为偶数,则保持原始集群规模计数,以使所述电力网络集群基于所述原始集群规模计数进行选举。
29、相应的,本发明一实施例还提供了一种基于zookeeper的电力网络控制器控制装置,包括:数据获取模块、预选举模块和节点选取模块;
30、所述数据获取模块,用于获取电力网络集群所需的若干控制器对应的注册信息,基于所述注册信息控制每一控制器以临时节点的形式运行;其中,所述临时节点包括一leader节点以及若干follower节点,所述follower节点和所述leader节点的数量之和与所述控制器数量对应;
31、所述预选举模块,用于在未接收到当前leader节点的心跳信号时,接收每一follower节点发出的预选举信息,并将每一follower节点自身的预选举信息转发给除自身以外的所有其它follower节点,以使每一follower节点基于自身以及其它follower节点对应的预选举信息进行预选举;其中,预选举结果包括赞成票和反对票;
32、所述节点选取模块,用于汇总每一follower节点获取到的赞成票数,选取赞成票数大于票数阈值的follower节点作为待选leader节点,以使在所述电力网络集群开启选举时基于所述待选leader节点进行选举。
33、作为上述方案的改进,所述预选举信息包括:最新事务id、任期以及故障计数;所述每一follower节点基于自身以及其它follower节点对应的预选举信息进行预选举,包括:
34、所述follower节点基于自身的预选举信息与每一其它follower节点的预选举信息进行判断;
35、若当前follower节点重新接收到leader节点的心跳信号,则当前follower节点投出反对票;
36、若其它follower节点的任期小于当前follower节点的任期,则当前follower节点投出反对票;
37、若其它follower节点的最新事务id小于当前follower节点的最新事务id,则当前follower节点投出反对票;
38、若其它follower节点的故障计数大于当前follower节点的故障计数,则当前follower节点投出反对票;
39、否则,当前follower节点投出赞成票。
40、作为上述方案的改进,每一所述follower节点的故障计数的获取,具体为:
41、获取未接收到当前leader节点的心跳信号时的选举时间点,以及每一所述follower节点发生每一故障事件的故障时间点;
42、基于所述电力网络集群的平均故障恢复时间,计算过期时长;
43、计算选举时间点与每一故障时间点之间的差值,获得每一故障事件的时间差值;
44、在每一所述follower节点中,判断所述过期时长是否大于每一故障事件对应的时间差值;
45、若是,则当前follower节点的故障计数加一;
46、若否,则当前follower节点的故障计数保持不变。
47、作为上述方案的改进,所述基于所述电力网络集群的平均故障恢复时间,计算过期时长,包括:
48、获取follower节点的节点总数量;
49、将所述节点总数量与所述平均故障恢复时间,代入预设的过期时长计算公式,获得过期时长;其中,所述过期时长计算公式,具体为:
50、t(n)=2t0+t0·ln(kn+1)
51、式中,t0为电力网络集群的平均故障恢复时间,n为节点总数量,k为增长率正系数。
52、作为上述方案的改进,在所述选取赞成票数大于票数阈值的follower节点作为待选leader节点之后,还包括:
53、根据当前follower节点数的节点总数量;
54、当所述节点总数量为奇数,则基于当前节点总数量,将原始集群规模计数更新为下一集群规模计数,以使所述电力网络集群基于所述下一集群规模计数进行选举;
55、当所述节点总数量为偶数,则保持原始集群规模计数,以使所述电力网络集群基于所述原始集群规模计数进行选举。
56、由上可见,本发明具有如下有益效果:
57、本发明提供了一种基于zookeeper的电力网络控制器控制方法,获取电力网络集群所需的若干控制器对应的注册信息,基于注册信息控制每一控制器以临时节点的形式运行;在未接收到当前leader节点的心跳信号时,接收每一follower节点发出的预选举信息,并将每一follower节点自身的预选举信息转发给除自身以外的所有其它follower节点,以使每一follower节点基于自身以及其它follower节点对应的预选举信息进行预选举;其中,预选举结果包括赞成票和反对票;汇总每一follower节点获取到的赞成票数,选取赞成票数大于票数阈值的follower节点作为待选leader节点,以使在所述电力网络集群开启选举时基于所述待选leader节点进行选举。本发明通过在leader节点失效后,在重新选举前增加预选举操作,基于预选举信息对follower节点与follower节点之间进行预选举,从而在follower节点里面筛选出待选leader节点,从而筛选出较高选举成功概率的节点,能够避免在选举leader节点时需要经历多轮选举才能达成共识选出新的leader,提高了电力网络集群的故障恢复效率。
本文地址:https://www.jishuxx.com/zhuanli/20241125/336052.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。