掌桥专利:专业的专利平台
掌桥专利
首页

一种微服务集群的节点选主方法、系统、设备及介质

文献发布时间:2023-06-19 13:27:45


一种微服务集群的节点选主方法、系统、设备及介质

技术领域

本发明涉及通信技术领域,尤其涉及一种微服务集群的节点选主方法、系统、设备及介质。

背景技术

在微服务集群架构中,有很多个微服务各自组成集群,如果每个服务单独处理集群节点间的选主问题,这将导致集群间的网络结构非常复杂,而且也违背了微服务只专注于一个单一功能的设计原则。

现有的选主技术存在两种方案:(1)采用ZooKeeper这类开源部件,使用这类开源部件参与选主的参数比较单一,仅能根据节点的是否活动判断是否重新选择主节点;(2)采用定制的选主逻辑,这种方案一般内置在各个具体的业务服务中,每个服务都有自己的一套选主逻辑,维护和管理及其复杂。

发明内容

(一)要解决的技术问题

鉴于现有技术的上述缺点、不足,本发明提供一种微服务集群的节点选主方法、系统、设备及介质,其解决了现有选主技术中采用开源部件参与选主的参数单一和限制条件较多,而采用定制的选主逻辑则维护和管理复杂的技术问题。

(二)技术方案

为了达到上述目的,本发明采用的主要技术方案包括:

第一方面,本发明实施例提供一种微服务集群的节点选主方法,一个微服务在一个或多个服务器上部署多份实例,每份实例为一个服务节点,同一个微服务的所有节点构成一个集群,集群内各节点间的节点选主方法包括:

选主服务集群与待选主集群中的每个节点交互,以接收所述待选主集群注册的集群信息以及更新的节点状态;

所述选主服务集群依据集群信息和节点状态确定待选主集群的主节点信息;

其中,所述选主服务集群是通过将选主功能封装为一个微服务并部署为集群得到的,所述选主服务集群各节点间仅进行选主数据的交互和决策,与服务器状态无关,即所述选主服务集群各节点间不再需要进行选主。

优选地,选主服务集群与待选主集群中的每个节点交互,以接收所述待选主集群注册的集群信息以及更新的节点状态包括:

待选主集群的每个节点在启动时或运行中动态加载选主服务的客户端组件;所述客户端组件包括用于注册集群信息和更新节点状态的交互接口;

在待选主集群内节点与选主服务集群建立连接之后,所述待选主集群节点通过所述交互接口使用RPC通讯机制向所述选主服务集群注册集群信息和周期性地更新节点状态信息;

其中,所述集群信息包含描述一个集群的集群唯一标识、该集群内所有节点的节点唯一标识、节点地址以及该节点访问的选主服务集群节点地址;

所述节点状态信息包含该节点的唯一标识、所在集群标识、以及节点状态权值,所述节点状态权值为所述待选主集群节点根据自身运行状态计算出的用于描述节点健康程度的数值。

优选地,还包括:

所述待选主集群内各节点周期性或所述节点状态权值变化时向选主服务集群发送权值信息;所述权值信息包括:权值数值、时间戳、节点标识和是否上一任主节点的标记;所述时间戳为上报权值信息的时间戳;

所述选主服务集群将待选主服务节点上报的所述权值信息与当前主节点权值信息比较来确定是否需要启动选主流程;若需要,则选主服务集群发起选主流程来确定待选主集群中新的主节点信息,并将主节点信息发送给待选主集群中的各节点。

优选地,所述选主服务集群将所述待选主集群内所述节点中权值最大的一个节点作为主节点;

若存在多个一样权值最大的节点,则将判断这些节点中是否存在上一任的主节点,若存在,则将上一任的主节点作为当前的主节点,否则,将时间戳最新的权值最大的节点作为主节点;若多个节点的时间戳也相同,则将权值最大的、时间戳最新的且节点唯一标识最大的节点作为主节点。

优选地,所述选主服务集群基于预设的选主算法插件构建而成,所述选主算法插件用于依据用户所需替换不同的选主算法;

其中,所述选主算法插件采用自选算法实现选主逻辑,所述自选算法包括Paxos算法和Raft算法。

优选地,若存在2N个节点,分裂成N+N两个独立的块时,将无法进行选主,所述选主算法插件支持通过添加虚拟节点形成2N+1个节点来确保选主成功;

其中,所述虚拟节点是指存在节点定义,但是没有运行具体服务的抽象节点,因此虚拟节点的节点信息由其他实际节点在向选主服务集群注册时提供,且不向选主服务集群汇报虚拟节点的状态,即虚拟节点仅参与选主投票但不发起竞选。

优选地,若待选主集群使用1:1主备冗余配置时,所述选主服务集群支持采用1:1主备选择策略。

第二方面,本发明实施例提供一种微服务集群的节点选主系统,包括:

服务框架模块,用于基于预设的标准接口和插件化设计构建选主服务集群;

选主算法插件模块,基于所述服务框架模块和预设的选主算法构建而成,用于供所述选主服务集群加载;

选主服务客户端模块,依据预设的标准接口和RPC通讯协议构建而成,用于提供待选主集群内各节点与选主服务集群的交互接口,通过所述交互接口向所述选主服务集群注册集群信息和更新权值,也用于从所述选主服务集群接收新的主节点信息;

集群信息和节点信息构建模块,用于在待选主集群各节点在向选主服务集群注册集群信息和更新权值时,构建集群信息并计算当前的节点权值;

主节点信息确定模块,用于依据集群信息和节点状态确定待选主集群的主节点信息并发送至所述待选主服务集群各节点。

第三方面,本发明实施例提供一种微服务集群的节点选主设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的一种微服务集群的节点选主方法步骤。

第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机可执行指令,所述可执行指令被处理器执行时实现如上所述的一种微服务集群的节点选主方法步骤。

(三)有益效果

本发明将选主功能微服务化,解放了其他服务的职能,使得其他微服务集群不再关注如何选主,只需向选主服务集群发送选主参数即可得到选主结果,且使得选主结果在集群中保证了一致性。同时,本发明的选主逻辑采用插件化设计,能够根据具体业务定制不同的选主策略,只需替换不同的选主插件,即可实现基于不同策略和算法的选主。

附图说明

图1为本发明提供的一种微服务集群的节点选主方法的流程示意图;

图2为本发明提供的一种微服务集群的节点选主方法的步骤S1的具体流程示意图;

图3为本发明提供的一种微服务集群的节点选主方法一实施例的具体流程示意图;

图4为本发明提供的一种微服务集群的节点选主系统的组成示意图;

图5为本发明提供的一种微服务集群的节点选主设备的计算机系统的结构示意图;

图6为本发明提供的一种微服务集群的节点选主方法的集群选主接口设计示意图;

图7为本发明提供的一种微服务集群的节点选主方法的集群选主设备的组成示意图。

【附图标记说明】

100:微服务集群的节点选主系统;101:服务框架模块;102:选主算法插件模块;103:选主服务客户端模块;104:待选主集群和节点信息构建模块;105:主节点信息输出模块;

200:计算机系统;201:CPU;202:ROM;203:RAM;204:总线;205:I/O接口;206:输入部分;207:输出部分;208:存储部分;209:通信部分;210:驱动器;211:可拆卸介质。

具体实施方式

为了更好地解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。

在本发明实施例中,在一个或多个服务器上将一个微服务部署多份实例,每份实例称为一个服务节点,同一个微服务的所有节点构成了一个集群,集群内各节点间需要选出一个主节点来进行数据的一致性仲裁。

如图1所示,本发明实施例提出的一种微服务集群的节点选主方法,包括:首先,将选主功能封装为一个微服务,且部署为集群,该集群各节点间仅进行选主数据的交互和决策,与服务器状态无关,即该集群各节点间不需进行选主;其次,选主服务集群中与待选主集群中的每个节点交互,以获取选主集群注册的集群信息以及更新的节点状态;接着,选主服务集群依据集群信息和节点状态确定待选主集群的主节点信息。

本发明将选主功能微服务化,解放了其他服务的职能,使得其他待选主集群不再关注如何选主,只需向选主服务集群发送选主参数即可得到选主结果,且使得选主结果在集群中保证了一致性。同时,本发明的选主逻辑采用插件化设计,能够根据具体业务定制不同的选主策略,只需替换不同的选主算法插件,即可实现基于不同策略和算法的选主。

为了更好地理解上述技术方案,下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更清楚、透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。

具体地,本发明公开一种微服务集群的节点选主方法,包括:

S1、选主服务集群与待选主集群中的每个节点交互,以接收选主集群注册的集群信息以及更新的节点状态。

在具体实施中,本发明选主服务集群支持任意节点与待选主集群中的每个节点交互,但是一般的实施场景中,从稳定性和效率的角度考虑,一般来说每个待选主集群节点同时也是一个选主服务集群节点,这样待选主集群节点只需访问本地的选主服务即可。

如图2所示,步骤S1包括:

S11、待选主集群的每个节点在启动时或运行中动态加载选主服务的客户端组件;客户端组件提供用于注册集群信息和更新节点状态的交互接口。

S12、在待选主集群内节点与选主服务集群建立连接之后,待选主集群通过交互接口使用RPC通讯机制向选主服务集群注册集群信息和周期性地更新节点状态信息。

其中,集群信息包含描述一个集群的集群唯一标识、该集群内所有节点的节点唯一标识、节点地址以及该节点访问的选主服务集群地址;节点状态信息包含该节点的唯一标识、所在集群标识、以及节点状态权值,节点状态权值为待选主集群节点根据自身运行状态计算出的用于描述节点健康程度的数值,数值越大表示成为主的可能性和优先级越高。

进一步地,如图3所示,本发明还包括:

F11、待选主集群内各节点周期性或节点状态权值变化时向选主服务集群发送权值信息;权值信息包括:权值数值、时间戳、节点标识和是否上一任主节点的标记;时间戳为上报权值信息的时间戳。

F12、选主服务集群将待选主服务节点上报的权值信息与当前主节点权值信息比较来确定是否需要启动选主流程;若需要,则选主服务基于预设的选主算法插件确定待选主集群中新的主节点信息,并将主节点信息发送给待选主集群中的各节点。

各待选主集群节点调用交互接口向选主服务集群注册集群信息,并定时或在权值发生变化时向集群服务更新权值(权值越高说明其成为主节点的机会越大);选主服务集群自动发起选主流程并将主节点信息推送到待选主集群中所有可访问的节点中。

进一步地,选主服务集群将待选主集群内节点中权值最大的一个节点作为主节点。

若存在多个一样权值最大的节点,则将判断这些节点中是否存在上一任的主节点,若存在,则将上一任的主节点作为当前的主节点,否则,将时间戳最新的权值最大的节点作为主节点;若多个节点的时间戳也相同,则将权值最大的、时间戳最新的且节点唯一标识最大的节点作为主节点。

在本发明实施例中,选主服务集群采用插件式架构设计,以用于依据用户所需替换不同的选主算法;其中,选主算法插件采用自选算法实现选主逻辑,自选算法包括Paxos算法和Raft算法。

本发明的选主服务集群通过RPC访问方式与各待选主集群中每一个节点交互,具体为使用插件式架构实现集群服务框架,该服务框架实现了RPC交互的基本框架,并在启动时加载或在运行中动态加载插件,将具体的RPC通信数据路由到各个插件中执行。其中,使用插件式架构可以根据具体的业务场景使用不同的算法插件。本发明中描述的选主算法插件基于Paxos算法实现,但不限于使用Paxos算法实现选主逻辑。

选主算法插件采用了Paxos算法,其关键在于提案ID的设计,本发明中描述的选主插件使用了“权值+时间戳+节点ID+连任标记”组成提案ID,其排序规则如下:

先进行权值对比,权值大的节点优先。

若权值一样,则连任节点优先。

若权值一样,且无连任节点,则按照时间戳排序最前的节点优先。

若权值一样,且无连任节点,且汇报时间也一样,则节点ID大的节点优先。

在上述步骤中,每个物理计算机上均部署一个选主服务组成选主服务集群,该选主服务集群被动等待各待选主集群服务节点的链接;待选主集群服务节点向本地的选主服务建立链接,并发起注册请求,该请求中附带待选主集群中所有节点的信息(如:集群ID、节点ID、节点地址等);选主服务收到注册请求后,根据待选主集群节点信息向所有目标选主服务节点建立连接,并将待选主集群信息通知到所有的目标选主服务节点中,若目标选主服务还未根据待选主集群信息与其他目标选主服务建立连接,则再次建立连接,最终各个选主服务节点间组成两两相连的网络连接关系;各个待选主集群服务节点定时或在权值发生变化时,向本地选主服务汇报自身的权值信息;选主服务收到汇报的权值信息后,通过选主算法插件在权值发生变化或比当前主节点权值要高时自动发起选主流程;选主结束后,选主服务将本次选主结果(即新的主节点信息)通知给待选主集群的每个活动节点。

进一步地,本发明描述的选主算法插件还支持处理脑裂问题,即若存在2N个节点,分裂成N+N两个独立的块时,将无法进行选主,本选主算法插件支持通过添加一个虚拟节点来确保选主成功,其中,虚拟节点是指存在节点定义,但是没有运行具体服务的抽象节点,因此虚拟节点的节点信息由其他实际节点在向选主服务集群注册时提供,且不向选主服务集群汇报虚拟节点的状态,即虚拟节点仅参与选主投票但不发起竞选。

进一步地,本发明描述的选主算法插件还支持处理主备冗余的问题,除了使用上述添加虚拟节点的方法外,还可以配置选主策略,使之退化为主备选择策略,主备冗余模式一般采用直连或集中部署的方式,很难出现脑裂场景,因此当一台宕机后,另一台能够正常成为主节点。较佳地,若待选主集群使用1:1主备冗余配置时,选主服务集群支持采用1:1主备选择策略。

图4为本发明提供的一种待选主集群的节点选主系统的组成示意图,如图4所示,本发明还提供一种待选主集群的节点选主系统100,其特征在于,包括:

服务框架模块101,用于基于预设的标准接口和插件化设计构建选主服务集群。

选主算法插件模块102,基于服务框架模块和预设的选主算法构建而成,用于供选主服务集群加载。

选主服务客户端模块103,依据预设的标准接口和RPC通讯协议构建而成,用于提供待选主集群内各节点与选主服务集群的交互接口,通过交互接口向选主服务集群注册集群信息和更新权值,也用于从选主服务集群接收新的主节点信息。

集群信息和节点信息构建模块104,用于在待选主集群各节点在向选主服务集群注册集群信息和更新权值时,构建集群信息并计算当前的节点权值。

主节点信息确定模块105,用于依据集群信息和节点状态确定待选主集群的主节点信息并发送至待选主服务集群各节点。

由于本发明上述实施例所描述的系统/装置,为实施本发明上述实施例的方法所采用的系统/装置,故而基于本发明上述实施例所描述的方法,本领域所属技术人员能够了解该系统/装置的具体结构及变形,因而在此不再赘述。凡是本发明上述实施例的方法所采用的系统/装置都属于本发明所欲保护的范围。

此外,本发明还提供一种待选主集群的节点选主设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上所述的一种微服务集群的节点选主方法步骤。

下面参考图5,其示出了适于用来实现本申请实施例的节点选主设备的计算机系统200的结构示意图。图5示出的节点选主设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图5所示,计算机系统200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM203中,还存储有系统200操作所需的各种程序和数据。CPU201、ROM202以及RAM203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。

以下部件连接至I/O接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至I/O接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。

特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(CPU)201执行时,执行本申请的系统中限定的上述功能。

需要说明的是,本申请所示的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

另一方面,本发明还提供了一种计算机可读存储介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括以下方法步骤:

选主服务集群中的任一节点与待选主集群中的每个节点交互,以获取选主集群注册的集群信息以及更新的节点状态。

选主服务集群依据集群信息和节点状态确定待选主集群的主节点信息。

在一具体实施例中,如图6所示出的接口设计示意图,集群服务(VxClusterService.exe)是微服务框架程序的执行入口,其使用模块VxClusterServiceFramework提供的IClusterService接口,启动集群服务框架,该服务框架采用了插件式设计,它提供了IClusterFramework接口供各个插件获取框架信息,同时加载指定的选主插件(VxClusterPlugin_LeaderDecider),并通过统一的接口IClusterPlugin与插件进行交互,提供集群选主功能。本集群服务框架,不仅可以替换不同的选主算法插件,还可以用于实现其他集群服务。集群中的其他微服务作为选主服务的客户端,通过由VxClusterBroker模块提供的ILeaderDeciderBroker接口与选主服务进行通讯,向选主服务注册集群信息、汇报节点状态,并接收最新的主节点信息。

在另一具体实施例中,如图7所示,有四台物理服务器(NodeA、NodeB、NodeC、NodeD),有三种微服务(Service1、Service2、Service3)分布组成集群,其中在NodeA上部署服务Service1、Service2,在NodeB上部署服务Service1、Service3,在NodeC上部署服务Service1、Service2,在NodeD上部署Service2、Service3;由Service1组成的集群(假设为Service1-Cluster)由节点NodeA、NodeB、NodeC组成,由Service2组成的集群(假设为Service2-Cluster)由节点NodeA、NodeC、NodeD组成,由Service3组成的集群(假设为Service3-Cluster)由节点NodeB、NodeD组成。在四台物理服务器节点上均部署集群选主服务(ClusterService)。具体执行流程如下:

(1)启动各服务器上的集群选主服务,初始时,这些集群选主服务彼此独立,互不访问;

(2)本地节点上的待选主服务启动后与本地节点上的集群选主服务建立连接,如:NodeA节点上的Service1、Service2与NodeA节点上的ClusterService建立连接;NodeB节点上的Service1、Service3与NodeB节点上的ClusterService建立连接;NodeC节点上的Service1、Service2与NodeC节点上的ClusterService建立连接;NodeD节点上的Service2、Service3与NodeD节点上的ClusterService建立连接。

(3)本地节点上的待选服务与本地节点上的集群选主服务建立连接后,向本地节点的集群选主服务组成集群信息。如:NodeA节点上的Service1向NodeA节点上的ClusterService注册集群Service1-Cluster的集群信息,该集群信息包含以下内容:集群唯一标识(Service1-Cluster),集群节点NodeA的唯一标识(NodeA)和地址信息(NodeA.IP),集群节点NodeB的唯一标识(NodeB)和地址信息(NodeB.IP),集群节点NodeC的唯一标识(NodeC)和地址信息(NodeC.IP);同样NodeA节点上的Service2向NodeA节点上的ClusterService注册集群Service2-Cluster的集群信息;NodeB节点上Service1向NodeB节点上的ClusterService注册集群Service1-Cluster的集群信息,NodeB节点上的Service3向NodeB节点上的ClusterService注册集群Service3-Cluster的集群信息;NodeC节点上的Service1向NodeC节点上的ClusterService注册集群Service1-Cluster的集群信息,NodeC节点上的Service2向NodeC节点上的ClusterService注册集群Service2-Cluster的集群信息;NodeD节点上的Service2向NodeD节点上的ClusterService注册集群Service2-Cluster的集群信息,NodeD节点上的Service3向NodeD节点上的ClusterService注册集群Service3-Cluster的集群信息。

(4)各节点的集群选主服务(ClusterService)收到注册信息后,根据注册信息中的集群节点信息,与目标节点的集群选主服务建立连接,如:NodeA节点的ClusterService收到Service1的注册信息后,与NodeA、NodeB、NodeC的ClusterService建立连接并转发注册信息,NodeA节点的ClusterService收到Service2的注册信息后,与NodeA、NodeC、NodeD的ClusterService建立连接并转发注册信息,如果已经与NodeA、NodeC、NodeD建立连接,则复用该连接;最终各节点上的ClusterService形成两两相连的网络结构。

(5)各待选主服务向本地节点的集群选主服务(ClusterService)汇报节点状态信息,如:NodeA节点的Service1向NodeA节点的ClusterService汇报NodeA节点上的Service1的状态信息,NodeA节点的Service2向NodeA节点的ClusterService汇报NodeA节点上的Service2的状态信息。

(6)集群选主服务(ClusterService)收到汇报的节点状态信息后,根据节点所注册的集群信息和选主算法插件发起选主,如:NodeA节点的ClusterService收到NodeA节点上的Service1上报的状态信息后,根据Paxos算法生成选主提案,分别发送给NodeA、NodeB、NodeC上的ClusterService并进行选主,并将选主节点广播给这些节点(NodeA、NodeB、NodeC)。

(7)集群选主服务(ClusterService)在收到选主结果后,向本地节点的对应服务推送集群的主节点信息,如:NodeA节点的ClusterService将集群Service1-Cluster的主节点信息向NodeA节点的Service1推送,NodeA节点的ClusterService将集群Service2-Cluster的主节点信息向NodeA节点的Service2推送。

(8)待选主服务更新并应用新的主节点信息,等待下一轮选主结果。

在上述实施例中,集群Service1-Cluster、集群Service2-Cluster均有3个节点组成,符合2N+1个节点的规则,然而集群Service3-Cluster只有NodeB、NodeD这2个节点组成,不符合2N+1的规则,可以按照1:1冗余的选主策略进行选主,也可以将NodeA或NodeC作为一个虚拟节点,构成2N+1个节点,比如将NodeA作为虚拟节点,则集群Service3-Cluster由三个节点(NodeA、NodeB、NodeD),然而NodeA节点上并没有运行Service3,NodeA节点上的ClusterService不会收到来自NodeA节点上的Service3的集群注册信息,但是因为在集群信息中包含的NodeA的节点信息,NodeA节点上的ClusterService会收到来自NodeB或NodeD转发的集群注册信息,从而可以创建选主节点对象,参与选主。

综上所述,本发明提供一种微服务集群的节点选主方法、系统、设备及介质,本发明采用类似ZooKeeper的架构,将集群选主功能作为一个单独的微服务,其他微服务通过RPC访问手段与选主服务集群交互,获取本服务在集群中的主节点信息,具体的选主逻辑由选主服务集群托管。同时,又设置了选主算法可以使用插件的方式定制,以满足各类业务使用不同的参数进行选主。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例,或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。

应当注意的是,在权利要求中,不应将位于括号之间的任何附图标记理解成对权利要求的限制。词语“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的词语“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的权利要求中,这些装置中的若干个可以是通过同一个硬件来具体体现。词语第一、第二、第三等的使用,仅是为了表述方便,而不表示任何顺序。可将这些词语理解为部件名称的一部分。

此外,需要说明的是,在本说明书的描述中,术语“一个实施例”、“一些实施例”、“实施例”、“示例”、“具体示例”或“一些示例”等的描述,是指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管已描述了本发明的优选实施例,但本领域的技术人员在得知了基本创造性概念后,则可对这些实施例作出另外的变更和修改。所以,权利要求应该解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种修改和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也应该包含这些修改和变型在内。

相关技术
  • 一种微服务集群的节点选主方法、系统、设备及介质
  • 一种管理集群中微服务的方法、装置、设备及可读介质
技术分类

06120113688827