一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种分布式集群的节点智能选举方法与流程

2022-03-23 07:20:25 来源:中国专利 TAG:


1.本发明属于分布式集群技术领域,尤其涉及一种分布式集群的节点智能选举方法。


背景技术:

2.公司技术栈升级为docker kubernetes后,使用了大量的新功能新特性,尤其是应用多容器集群部署。集群部署技术具有可以提高服务器的利用率,可以动态横向扩展服务集群等优势。但是在集群环境下,若设计不当,会导致定时、监听服务等非幂等的服务,在集群环境中被多个容器重复执行,从而导致重复写入数据及产生异常数据等。
3.目前解决上述问题的行业方法,是需要对原有系统进行二次设计,将定时任务或监听服务等拆分成单独服务,并采用独立节点部署,通过微服务方式调用原有业务服务。这样的处理导致了新问题的产生,如:设计研发部署成本增加、服务器资源占用提高、执行长耗时服务异常等,且不利于灾备。


技术实现要素:

4.本发明实施例的目的在于提供一种分布式集群的节点智能选举方法,旨在解决背景技术中提出的问题。
5.为实现上述目的,本发明实施例提供如下技术方案:一种分布式集群的节点智能选举方法,所述方法具体包括以下步骤:应用启动时自动加载节点选举服务,通过所述节点选举服务定时向缓存中心查询执行节点信息,根据所述执行节点信息运行节点选举策略;获取开发时执行节点执行的指定方法和标记注解,向所述指定方法发送执行信息,根据所述执行信息调用执行策略服务判断当前节点是否是执行节点,生成判断结果,根据所述判断结果进行执行处理。
6.作为本发明实施例技术方案进一步的限定,所述应用启动时自动加载节点选举服务,通过所述节点选举服务定时向缓存中心查询执行节点信息,根据所述执行节点信息运行节点选举策略具体包括以下步骤:应用启动时自动加载节点选举服务;根据所述节点选举服务,定时向缓存中心查询执行节点信息;根据所述执行节点信息运行节点选举策略。
7.作为本发明实施例技术方案进一步的限定,所述根据所述节点选举服务,定时向缓存中心查询执行节点信息具体包括以下步骤:根据所述节点选举服务,获取同步锁;通过所述同步锁,确保集群中同一时刻只有执行节点在进行处理;向缓存中心获取所述执行节点的执行节点信息。
8.作为本发明实施例技术方案进一步的限定,所述同步锁包括一个分布式锁和多个
等待锁。
9.作为本发明实施例技术方案进一步的限定,所述根据所述执行节点信息运行节点选举策略具体包括以下步骤:若当前无执行节点时,则注册当前节点为执行节点并更新报活时间;若当前节点为主节点,只需更新报活时间;若当前节点不是主节点,且报活时间超过阈值时,则更新当前节点为执行节点,同时更新报活时间,否则不做处理。
10.作为本发明实施例技术方案进一步的限定,所述获取开发时执行节点执行的指定方法和标记注解,向所述指定方法发送执行信息,根据所述执行信息调用执行策略服务判断当前节点是否是执行节点,生成判断结果,根据所述判断结果进行执行处理具体包括以下步骤:获取开发时含有标记注解的指定方法;向所述指定方法发送执行信息;根据所述执行信息调用执行策略服务判断当前节点是否为执行节点,并生成判断结果;根据所述判断结果进行执行处理。
11.作为本发明实施例技术方案进一步的限定,所述根据所述执行信息调用执行策略服务判断当前节点是否为执行节点,并生成判断结果具体包括以下步骤:根据所述执行信息调用执行策略服务;通过所述执行策略服务判断当前节点是否为执行节点,并生成判断结果。
12.作为本发明实施例技术方案进一步的限定,所述通过所述执行策略服务判断当前节点是否为执行节点,并生成判断结果具体包括以下步骤:向缓存中心发送信息获取执行节点信息;根据所述节点信息判断当前节点是否为执行节点;若当前节点为执行节点时,则判断成功返回是;若当前节点不是执行节点时,继续判断报活时间是否超过阈值,如果超过阈值则判断成功返回是,否则判断失败返回否。
13.作为本发明实施例技术方案进一步的限定,所述根据所述判断结果进行执行处理具体包括以下步骤:若判断结果为是,则继续执行所述指定方法;若判断结果为否,则忽略执行所述指定方法,生成日志信息,并将所述日志信息发送至日志服务。
14.作为本发明实施例技术方案进一步的限定,所述缓存中心可替换为分布式中间件。
15.与现有技术相比,本发明的有益效果是:本发明实施例通过在应用启动时自动加载节点选举服务,通过节点选举服务定时向缓存中心查询执行节点信息,根据执行节点信息运行节点选举策略;获取开发时执行节点执行的指定方法和标记注解,向指定方法发送执行信息,根据执行信息调用执行策略服务判断当前节点是否是执行节点,根据判断结果进行执行处理。能够在集群的多应用副本
中增加一个执行者的角色,以区分拥有角色的节点与其它节点的执行权限,并控制方法的重复执行,使单实例模式下才能执行的业务场景也能在集群中使用,且不会增加成本、不会提高服务器资源的占用、不会造成执行长耗时服务异常。
附图说明
16.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
17.图1示出了本发明实施例提供的方法的流程图。
18.图2示出了本发明实施例提供的方法中节点选举的流程图。
19.图3示出了本发明实施例提供的方法中执行节点信息查询的流程图。
20.图4示出了本发明实施例提供的方法中节点选举策略运行的流程图。
21.图5示出了本发明实施例提供的方法中执行控制的流程图。
22.图6示出了本发明实施例提供的方法中执行节点判断的流程图。
23.图7示出了本发明实施例提供的方法中判断结果生成的流程图。
24.图8示出了本发明实施例提供的方法中进行执行处理的流程图。
具体实施方式
25.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
26.可以理解的是,在现有技术中,需要对原有系统进行二次设计,将定时任务或监听服务等拆分成单独服务,并采用独立节点部署,通过微服务方式调用原有业务服务。这样的处理导致了新问题的产生,如:设计研发部署成本增加、服务器资源占用提高、执行长耗时服务异常等,且不利于灾备。
27.为解决上述问题,本发明实施例通过在应用启动时自动加载节点选举服务,通过节点选举服务定时向缓存中心查询执行节点信息,根据执行节点信息运行节点选举策略;获取开发时执行节点执行的指定方法和标记注解,向指定方法发送执行信息,根据执行信息调用执行策略服务判断当前节点是否是执行节点,根据判断结果进行执行处理。能够在集群的多应用副本中增加一个执行者的角色,以区分拥有角色的节点与其它节点的执行权限,并控制方法的重复执行,使单实例模式下才能执行的业务场景也能在集群中使用,且不会增加成本、不会提高服务器资源的占用、不会造成执行长耗时服务异常。
28.图1示出了本发明实施例提供的方法的流程图。
29.具体的,一种分布式集群的节点智能选举方法,所述方法具体包括以下步骤:步骤s101,应用启动时自动加载节点选举服务,通过所述节点选举服务定时向缓存中心查询执行节点信息,根据所述执行节点信息运行节点选举策略。
30.在本发明实施例中,应用启动时自动加载节点选举服务,通过类似keepalived机制向redis缓存中心争夺执行节点权限,且在争夺执行节点权限中采用原有执行节点优先原则,当原执行节点报活时间超出阈值时,则以下一个获得redis分布式锁的节点替代成为
新的执行节点。
31.其中,节点选举算法为:votemethod begin:
ꢀꢀꢀꢀ
服务启动spring生命周期管理唤起init
ꢀꢀꢀꢀ
定义标识变量:flag = uuid
ꢀꢀꢀꢀ
try {
ꢀꢀꢀꢀꢀꢀꢀꢀ
锁定标识注册服务
ꢀꢀꢀꢀꢀꢀꢀꢀ
将(flag 当前时间戳)推送至centerservice
ꢀꢀꢀꢀ
} catch {
ꢀꢀꢀꢀꢀꢀꢀꢀ
记录错误信息
ꢀꢀꢀꢀ
} finally {
ꢀꢀꢀꢀꢀꢀꢀꢀ
解除标识注册服务锁
ꢀꢀꢀꢀ
}end。
32.具体的,图2示出了本发明实施例提供的方法中节点选举的流程图。
33.其中,在本发明提供的优选实施方式中,所述应用启动时自动加载节点选举服务,通过所述节点选举服务定时向缓存中心查询执行节点信息,根据所述执行节点信息运行节点选举策略具体包括以下步骤:步骤s1011,应用启动时自动加载节点选举服务。
34.步骤s1012,根据所述节点选举服务,定时向缓存中心查询执行节点信息。
35.在本发明实施例中,通过获取同步锁,确保集群中同一时刻只有执行节点在进行处理,再向缓存中心获取该执行节点的执行节点信息。具体的,同步锁包括一个分布式锁和多个等待锁,与分布式锁相对应的应用节点为执行节点。
36.具体的,图3示出了本发明实施例提供的方法中执行节点信息查询的流程图。
37.其中,在本发明提供的优选实施方式中,所述根据所述执行节点信息运行节点选举策略具体包括以下步骤:步骤s10121,根据所述节点选举服务,获取同步锁。
38.步骤s10122,通过所述同步锁,确保集群中同一时刻只有执行节点在进行处理。
39.步骤s10123,向缓存中心获取所述执行节点的执行节点信息。
40.进一步的,所述应用启动时自动加载节点选举服务,通过所述节点选举服务定时向缓存中心查询执行节点信息,根据所述执行节点信息运行节点选举策略还包括以下步骤:步骤s1013,根据所述执行节点信息运行节点选举策略。
41.具体的,图4示出了本发明实施例提供的方法中节点选举策略运行的流程图。
42.其中,在本发明提供的优选实施方式中,所述根据所述执行节点信息运行节点选举策略具体包括以下步骤:步骤s10131,在当前无执行节点时,注册当前节点为执行节点并更新报活时间。
43.步骤s10132,在当前节点为主节点时,只需更新报活时间。
44.步骤s10133,在当前节点不是主节点,且报活时间超过阈值时,则更新当前节点为
执行节点,同时更新报活时间,否则不做处理。
45.进一步的,所述分布式集群的节点智能选举方法还包括以下步骤:步骤s102,获取开发时执行节点执行的指定方法和标记注解,向所述指定方法发送执行信息,根据所述执行信息调用执行策略服务判断当前节点是否是执行节点,生成判断结果,根据所述判断结果进行执行处理。
46.在本发明实施例中,应用节点在执行指定方法时,通过执行策略单元,来控制该方法是否执行,以此避免重复执行。
47.具体的,执行控制算法为:executemethod begin:
ꢀꢀꢀꢀ
if executecheckmethod(任务执行判断)成功
ꢀꢀꢀꢀ
then 执行任务
ꢀꢀꢀꢀ
else 记录选举结果
ꢀꢀꢀꢀ
end ifend。
48.具体的,图5示出了本发明实施例提供的方法中执行控制的流程图。
49.其中,在本发明提供的优选实施方式中,所述获取开发时执行节点执行的指定方法和标记注解,向所述指定方法发送执行信息,根据所述执行信息调用执行策略服务判断当前节点是否是执行节点,生成判断结果,根据所述判断结果进行执行处理具体包括以下步骤:步骤s1021,获取开发时含有标记注解的指定方法。
50.步骤s1022,向所述指定方法发送执行信息。
51.步骤s1023,根据所述执行信息调用执行策略服务判断当前节点是否为执行节点,并生成判断结果。
52.在本发明实施例中,根据执行信息调用执行策略服务,通过调用的执行策略服务判断当前节点是否为执行节点,并生成判断结果。
53.具体的,任务执行判断算法为:executecheckmethod begin:
ꢀꢀꢀꢀ
从redis获取value值
ꢀꢀꢀꢀ
if value值有效 then {
ꢀꢀꢀꢀꢀꢀꢀꢀ
通过value值计算服务标识redisserviceflag
ꢀꢀꢀꢀꢀꢀꢀꢀ
if 本机flag != redisserviceflag then {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
通过value值计算时间戳time
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if 当前时间戳
ꢀ‑ꢀ
time 《 阈值 then 返回失败
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
else 返回resetserviceflagmethod(重置服务标识)结果
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
end if
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
end if
ꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
else 返回成功
ꢀꢀꢀꢀ
end ifend。
54.具体的,图6示出了本发明实施例提供的方法中执行节点判断的流程图。
55.其中,在本发明提供的优选实施方式中,所述根据所述执行信息调用执行策略服务判断当前节点是否为执行节点,并生成判断结果具体包括以下步骤:步骤s10231,根据所述执行信息调用执行策略服务。
56.步骤s10232,通过所述执行策略服务判断当前节点是否为执行节点,并生成判断结果。
57.具体的,图7示出了本发明实施例提供的方法中判断结果生成的流程图。
58.其中,在本发明提供的优选实施方式中,所述通过所述执行策略服务判断当前节点是否为执行节点,并生成判断结果具体包括以下步骤:步骤s102321,向缓存中心发送信息获取执行节点信息。
59.步骤s102322,根据所述节点信息判断当前节点是否为执行节点。
60.步骤s102323,若当前节点为执行节点时,则判断成功返回是。
61.步骤s102324,若当前节点不是执行节点时,继续判断报活时间是否超过阈值,如果超过阈值则判断成功返回是,否则判断失败返回否。
62.进一步的,所述获取开发时执行节点执行的指定方法和标记注解,向所述指定方法发送执行信息,根据所述执行信息调用执行策略服务判断当前节点是否是执行节点,生成判断结果,根据所述判断结果进行执行处理还包括以下步骤:步骤s1024,根据所述判断结果进行执行处理。
63.具体的,图8示出了本发明实施例提供的方法中进行执行处理的流程图。
64.其中,在本发明提供的优选实施方式中,所述根据所述判断结果进行执行处理具体包括以下步骤:步骤s10241,在判断结果为是时,继续执行所述指定方法。
65.步骤s10242,在判断结果为否时,忽略执行所述指定方法,生成日志信息,并将所述日志信息发送至日志服务。
66.进一步的,在本发明提供的又一个优选实施方式中,缓存中心可替换为各类数据库、文件存储等分布式中间件。
67.进一步的,在本发明提供的又一个优选实施方式中,一种分布式集群的节点智能选举系统,包括:选举策略单元,用于在应用启动时自动加载节点选举服务,通过所述节点选举服务定时向缓存中心查询执行节点信息,根据所述执行节点信息运行节点选举策略。
68.在本发明实施例中,选举策略单元在应用启动时自动加载节点选举服务,通过类似keepalived机制向redis缓存中心争夺执行节点权限,且在争夺执行节点权限中采用原有执行节点优先原则,当原执行节点报活时间超出阈值时,则以下一个获得redis分布式锁的节点替代成为新的执行节点。
69.其中,在本发明提供的优选实施方式中,所述选举策略单元具体包括:节点选举服务加载模块,用于在应用启动时自动加载节点选举服务。
70.执行节点信息查询模块,用于根据所述节点选举服务,定时向缓存中心查询执行
节点信息。
71.具体的,在本发明提供的优选实施方式中,所述执行节点信息查询模块具体包括:同步锁获取模块,用于根据所述节点选举服务,获取同步锁。
72.同步锁应用模块,用于通过所述同步锁,确保集群中同一时刻只有执行节点在进行处理。
73.执行节点信息获取模块,用于向缓存中心获取所述执行节点的执行节点信息。
74.进一步的,所述分布式集群的节点智能选举系统还包括:节点选举策略运行模块,用于根据所述执行节点信息运行节点选举策略。
75.进一步的,所述分布式集群的节点智能选举系统还包括:执行策略单元,用于获取开发时执行节点执行的指定方法和标记注解,向所述指定方法发送执行信息,根据所述执行信息调用执行策略服务判断当前节点是否是执行节点,生成判断结果,根据所述判断结果进行执行处理。
76.在本发明实施例中,应用节点在执行指定方法时,通过执行策略单元,来控制该方法是否执行,以此避免重复执行。
77.其中,在本发明提供的优选实施方式中,所述执行策略单元具体包括:指定方法获取模块,用于获取开发时含有标记注解的指定方法。
78.执行信息发送模块,用于向所述指定方法发送执行信息。
79.判断结果生成模块,用于根据所述执行信息调用执行策略服务判断当前节点是否为执行节点,并生成判断结果。
80.执行处理模块,用于根据所述判断结果进行执行处理。
81.综上所述,本发明实施例通过在应用启动时自动加载节点选举服务,通过节点选举服务定时向缓存中心查询执行节点信息,根据执行节点信息运行节点选举策略;获取开发时执行节点执行的指定方法和标记注解,向指定方法发送执行信息,根据执行信息调用执行策略服务判断当前节点是否是执行节点,根据判断结果进行执行处理。能够在集群的多应用副本中增加一个执行者的角色,以区分拥有角色的节点与其它节点的执行权限,并控制方法的重复执行,使单实例模式下才能执行的业务场景也能在集群中使用,且不会增加成本、不会提高服务器资源的占用、不会造成执行长耗时服务异常。
82.应该理解的是,虽然本发明各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
83.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编
程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink) dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
84.以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
85.以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
86.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献