CN112261135A - 基于一致性协议的节点选举方法、***、装置及设备 - Google Patents
基于一致性协议的节点选举方法、***、装置及设备 Download PDFInfo
- Publication number
- CN112261135A CN112261135A CN202011136140.3A CN202011136140A CN112261135A CN 112261135 A CN112261135 A CN 112261135A CN 202011136140 A CN202011136140 A CN 202011136140A CN 112261135 A CN112261135 A CN 112261135A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- target
- voting
- request
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种基于一致性协议的节点选举方法、基于一致性协议的节点选举***、基于一致性协议的节点选举装置、计算机可读存储介质及电子设备;涉及一致性协议计算领域;包括:当前节点向所属的一致性群组内其他节点发送第一投票请求,以使得其他节点根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果;若投票结果满足预设条件,向其他节点发送心跳报告以维持领导状态;若其他节点中存在权重值大于目标权重值的特定节点,且特定节点对应于最新的日志信息,触发特定节点向所属的一致性群组内其余节点发送第二投票请求。可见,实施本申请实施例,可以均衡节点集群间的负载,以保证节点集群的稳定性和吞吐量。
Description
技术领域
本申请涉及一致性协议计算领域,具体而言,涉及一种基于一致性协议的节点选举方法、基于一致性协议的节点选举***、基于一致性协议的节点选举装置、计算机可读存储介质及电子设备。
背景技术
分布式一致性通常存在于分布式内存共享、分布式存储等分布式***中。一般来说,一致性算法包括paxos、gossip以及Raft等。其中,Raft是一种用于保证强一致性的算法,具体可以包括如下步骤:使得集群内部竞选出日志最新的节点作为领导节点,该领导节点可以负责接收客户端请求并复制请求至集群内的其他节点,以及负责通知其他节点提交日志,以保证集群中各节点保持一致性。
实际应用过程中,通常会存在多个集群之间节点重叠的场景,如,集群1包括节点A、B、C,集群2包括节点A、B、D,若通过上述方式竞选领导节点,节点A可以通过较短的随机时间和较新的日志竞选成为集群1和集群2的领导节点。在这种情况下,节点A就需要独自担负针对集群1和集群2的请求接收工作,这样容易存在节点集群间负载不均的问题,进而容易对节点集群的稳定性和吞吐量造成不良的影响。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本申请的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本申请的目的在于提供一种基于一致性协议的节点选举方法、基于一致性协议的节点选举***、基于一致性协议的节点选举装置、计算机可读存储介质及电子设备,可以解决节点集群间负载不均的问题,即,均衡节点集群间的负载,以保证节点集群的稳定性和吞吐量。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请的一方面,提供一种基于一致性协议的节点选举方法,包括:
当前节点向所属的一致性群组内其他节点发送第一投票请求,以使得其他节点根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果;
若投票结果满足预设条件,当前节点向其他节点发送心跳报告以维持领导状态;
若其他节点中存在权重值大于目标权重值的特定节点,且特定节点对应于最新的日志信息,当前节点触发特定节点向所属的一致性群组内其余节点发送第二投票请求。
根据本申请的一方面,提供一种基于一致性协议的节点选举***,该***包括多个一致性群组,每个一致性群组中包括当前节点和其他节点,其中:
当前节点,用于向所属的一致性群组内其他节点发送第一投票请求;
其他节点,用于根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果;
当前节点,还用于在投票结果满足预设条件时,向其他节点发送心跳报告以维持领导状态;
当前节点,还用于在其他节点中存在权重值大于目标权重值的特定节点且特定节点对应于最新的日志信息时,触发特定节点向所属的一致性群组内其余节点发送第二投票请求。
根据本申请的一方面,提供一种基于一致性协议的节点选举装置,包括:选举发起单元、心跳报告发送单元以及选举触发单元,其中:
选举发起单元,用于向所属的一致性群组内其他节点发送第一投票请求,以使得其他节点根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果;
心跳报告发送单元,用于在投票结果满足预设条件时,向其他节点发送心跳报告以维持领导状态;
选举触发单元,用于在其他节点中存在权重值大于目标权重值的特定节点且特定节点对应于最新的日志信息时,触发特定节点向所属的一致性群组内其余节点发送第二投票请求。
在本申请的一种示例性实施例中,在选举发起单元向所属的一致性群组内其他节点发送第一投票请求之前,还包括:
节点集群中各节点接收客户端发送的建组请求并对建组请求进行响应;
其中,建组请求用于构建由节点集群中多个节点组成的至少一个一致性群组,至少一个一致性群组包括当前节点所属的一致性群组。
在本申请的一种示例性实施例中,在请求接收单元对建组请求进行响应之后,还包括:
节点集群中各节点根据建组请求中多个权重序列确定至少一个一致性群组中各一致性群组对应的领导节点;
其中,多个权重序列与至少一个一致性群组一一对应的,领导节点用于向所属的一致性群组内其他节点发送心跳报告以维持领导状态。
在本申请的一种示例性实施例中,选举发起单元向所属的一致性群组内其他节点发送第一投票请求,包括:
若当前节点在随机时长内未接收到目标领导节点发送的心跳报告,当前节点向所属的一致性群组内其他节点发送第一投票请求;
其中,目标领导节点属于当前节点所属的一致性群组。
在本申请的一种示例性实施例中,上述装置还包括:
任期更新单元,用于在选举发起单元向所属的一致性群组内其他节点发送第一投票请求之前,更新目标任期值,并根据目标日志标识和更新后的目标任期值生成第一投票请求;
其中,第一投票请求中的日志信息至少包括目标日志标识以及更新后的目标任期值;目标日志标识用于记录日志条数。
在本申请的一种示例性实施例中,投票结果包括赞成结果和反对结果,其他节点根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果,包括:
其他节点将目标任期值与自身任期值进行比对,以及将目标日志标识与自身日志标识进行比对;
若目标任期值大于自身任期值,且目标日志标识大于自身日志标识,其他节点生成赞成结果并反馈至当前节点;
若目标任期值大于自身任期值,且目标日志标识等于自身日志标识,其他节点将目标权重值与自身权重值进行比对,若目标权重值大于等于自身权重值,其他节点生成赞成结果并反馈至当前节点;
若目标任期值大于自身任期值,且目标日志标识小于自身日志标识,其他节点生成反对结果并反馈至当前节点;
若目标任期值大于自身任期值,目标日志标识等于自身日志标识,且目标权重值小于自身权重值,其他节点生成反对结果并反馈至当前节点。
在本申请的一种示例性实施例中,预设条件包括:特定节点反馈的投票结果均为赞成结果,且所有投票结果中半数以上为赞成结果。
在本申请的一种示例性实施例中,当前节点向其他节点发送心跳报告以维持领导状态之后,还包括:
其他节点接收心跳报告并将非追随状态的当前状态转换为追随状态;其中,其他节点中包括目标领导节点。
在本申请的一种示例性实施例中,上述装置还包括状态转换单元,其中:
状态转换单元,用于将当前状态转换为领导状态,状态转换后的当前节点为新的目标领导节点。
在本申请的一种示例性实施例中,选举触发单元触发特定节点向所属的一致性群组内其余节点发送第二投票请求,包括:
向特定节点发送超时请求,以使得超时请求触发特定节点向其余节点发送第二投票请求。
在本申请的一种示例性实施例中,上述装置还包括判定单元,其中:
判定单元,用于在选举触发单元触发特定节点向所属的一致性群组内其余节点发送第二投票请求之前,且检测到特定节点的日志信息与当前节点的日志信息一致时,判定特定节点对应于最新的日志信息。
根据本申请的一方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。
根据本申请的一方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。
根据本申请的一方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的各种可选实现方式中提供的方法。
本申请示例性实施例可以具有以下部分或全部有益效果:
在本申请的一示例实施方式所提供的基于一致性协议的节点选举方法中,当前节点向所属的一致性群组内其他节点发送第一投票请求,以使得其他节点根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果;若投票结果满足预设条件,向其他节点发送心跳报告以维持领导状态;若其他节点中存在权重值大于目标权重值的特定节点,且特定节点对应于最新的日志信息,触发特定节点向所属的一致性群组内其余节点发送第二投票请求。依据上述方案描述,本申请一方面可以均衡节点集群间的负载,以保证节点集群的稳定性和吞吐量。本申请又一方面可以提升对于节点集群中的节点的利用效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本申请实施例的一种基于一致性协议的节点选举方法及基于一致性协议的节点选举装置的示例性***架构的示意图;
图2示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图;
图3示意性示出了根据本申请的一个实施例的基于一致性协议的节点选举方法的流程图;
图4示意性示出了根据本申请的一个实施例的节点集群示意图;
图5示意性示出了根据本申请的一个实施例的节点集群示意图;
图6示意性示出了根据本申请的一个实施例中的一致性群组示意图;
图7示意性示出了根据本申请的一个实施例的基于一致性协议的节点选举方法的流程图;
图8示意性示出了根据本申请的一个实施例的基于一致性协议的节点选举***的结构图;
图9示意性示出了根据本申请的一个实施例中的基于一致性协议的节点选举装置的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本申请的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本申请的各方面变得模糊。
此外,附图仅为本申请的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
图1示出了可以应用本申请实施例的一种基于一致性协议的节点选举方法及基于一致性协议的节点选举装置的示例性应用环境的***架构的示意图。
如图1所示,***架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器集群105。网络104用以在终端设备101、102、103和服务器集群105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。另外,服务器集群105可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
需要说明的是,上述的云服务器可以利用云技术提供基础云计算服务。云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
基础云计算服务中包括的云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储***(以下简称存储***)是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储***。目前,存储***的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件***上,文件***将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件***将每个对象分别写入该逻辑卷的物理存储空间,且文件***会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件***能够根据每个对象的存储位置信息让客户端对数据进行访问。存储***为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array ofIndependent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
本申请实施例所提供的基于一致性协议的节点选举方法一般由服务器集群105执行。相应地,基于一致性协议的节点选举装置一般设置于服务器集群105的各服务器中。需要说明的是,服务器集群105中每个服务器用于部署一致性协议定义的节点;服务器集群105中可以包括一个或多个一致性群组,每个一致性群组中包括多个节点(如,3个节点),不同的一致性群组对应的节点数量相同,但是其对应的节点编号可以相同也可以不同。
举例而言,在一种示例性实施例中,服务器集群105(也可以称为节点集群)中各节点接收终端设备101、102和/或103通过网络104发送的建组请求并对建组请求进行响应。其中,建组请求用于构建由节点集群中多个节点组成的至少一个一致性群组。
进而,服务器集群105中的当前节点可以向所属的一致性群组内其他节点发送第一投票请求,以使得其他节点根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果;若投票结果满足预设条件,向其他节点发送心跳报告以维持领导状态;若其他节点中存在权重值大于目标权重值的特定节点,且特定节点对应于最新的日志信息,触发特定节点向所属的一致性群组内其余节点发送第二投票请求。
图2示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
需要说明的是,图2示出的电子设备的计算机***200仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图2所示,计算机***200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从储存部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM 203中,还存储有***操作所需的各种程序和数据。CPU201、ROM 202以及RAM 203通过总线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执行时,执行本申请的方法和装置中限定的各种功能。
一致性协议一般应用于需要强一致的场景下。一般来说,Raft协议定义的节点包括领导节点和追随节点,其中,领导节点不仅接收客户端请求,还需要向追随节点同步数据,而追随节点只需要接收领导节点同步数据请求,可见,领导节点的压力显著比追随节点大。
现有技术中,领导节点通常在节点集群中随机分布,假设每个节点参与N个RaftGroup,则该节点是K个领导节点的概率为(1/3)^K*(2/3)^(N-K),如果领导节点均衡分布,则该节点应该是N/3个领导节点。但是,在随机情况下,该节点有相当大概率多于N/3个领导节点,这样容易造成节点负载不均衡的问题,进而影响节点集群的稳定性和吞吐量。
基于上述问题,本示例实施方式提供了一种基于一致性协议的节点选举方法。请参阅图3,图3示意性示出了根据本申请的一个实施例的基于一致性协议的节点选举方法的流程图。如图3所示,该基于一致性协议的节点选举方法可以包括以下步骤S310至步骤S330:
步骤S310:当前节点向所属的一致性群组内其他节点发送第一投票请求,以使得其他节点根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果。
步骤S320:若投票结果满足预设条件,当前节点向其他节点发送心跳报告以维持领导状态。
步骤S330:若其他节点中存在权重值大于目标权重值的特定节点,且特定节点对应于最新的日志信息,当前节点触发特定节点向所属的一致性群组内其余节点发送第二投票请求。
实施图3所示的方法,可以均衡节点集群间的负载,以保证节点集群的稳定性和吞吐量。此外,还可以提升对于节点集群中的节点的利用效率。
下面,对于本示例实施方式的上述步骤进行更加详细的说明。
在步骤S310中,当前节点向所属的一致性群组内其他节点发送第一投票请求,以使得其他节点根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果。
其中,第一投票请求用于请求其他节点向当前节点反馈赞成结果或反对结果,赞成结果用于表示赞成当前节点当选领导节点,反对结果用于表示反对当前节点当选领导节点。若当前节点当选领导节点,其他节点则自动成为追随节点。当前节点发送第一投票请求之后以及在当选领导节点之前,当前节点处于候选状态,即,当前节点暂时成为候选节点。另外,第一投票请求中的日志信息用于表征当前节点的日志存储情况和任期情况,当前节点对应的目标权重值为预设数值。
具体地,本申请实施例可以应用于服务器集群,服务器集群中各服务器均用于部署一致性协议定义的节点;其中,一致性协议可以为Raft协议,在Raft协议中,可以包括多个一致性群组(Group),每个一致性群组可以由多个节点构成,一个一致性群组中包括一个领导节点(Leader)和多个跟随节点(Follower)。
请参阅图4,图4示意性示出了根据本申请的一个实施例的节点集群示意图。如图4所示,节点集群400中可以包括多个一致性群组,即,一致性群组A401、一致性群组B402以及一致性群组C403。各一致性群组均由多个节点构成,不同的一致性群组可以包含一个或多个相同的节点,也可以不包含相同的节点。需要说明的是,节点集群400中各节点部署于不同的服务器中,因此,节点集群400也可以称为服务器集群。一致性群组A401、一致性群组B402以及一致性群组C403中各节点均可以执行本申请实施例中的基于一致性协议的节点选举方法。
请参阅图5,图5示意性示出了根据本申请的一个实施例的节点集群示意图。特别地,如图5所示,节点集群500中包括的多个一致性群组可以由相同的节点构成,也就是说,一致性群组A501、一致性群组B502以及一致性群组C503均由节点510、520和530构成。其中,不同的一致性群组可以用于执行不同类型的存储任务。
举例来说,一致性群组A501对应的权重序列为(1,0,0),一致性群组A501中的节点510对应权重1,一致性群组A501中的节点520和530对应权重0;一致性群组B502对应的权重序列为(0,1,0),一致性群组B502中的节点520对应权重1,一致性群组B502中的节点510和530对应权重0;一致性群组C501对应的权重序列为(0,0,1),一致性群组C501中的节点520对应权重1,一致性群组C501中的节点510和530对应权重0。
作为一种可选的实施例,当前节点向所属的一致性群组内其他节点发送第一投票请求之前,上述方法还包括:节点集群中各节点接收客户端发送的建组请求并对建组请求进行响应;其中,建组请求用于构建由节点集群中多个节点组成的至少一个一致性群组,至少一个一致性群组包括当前节点所属的一致性群组。
结合上述举例与该实施例,节点集群500中各节点可以接收客户端发送的建组请求;其中,建组请求可以包括一致性群组A501、一致性群组B502以及一致性群组C503分别对应的权重序列,建组请求用于请求构建一致性群组A501、一致性群组B502以及一致性群组C503。
可见,实施该可选的实施例,能够根据客户端发送的建组请求构建所需的一个或多个一致性群组,以便于后续根据建组请求中的权重序列均衡各节点的负载,避免不同的一致性群组对应于相同的领导节点。
作为一种可选的实施例,对建组请求进行响应之后,上述方法还包括:节点集群中各节点根据建组请求中多个权重序列确定至少一个一致性群组中各一致性群组对应的领导节点;其中,多个权重序列与至少一个一致性群组一一对应的,领导节点用于向所属的一致性群组内其他节点发送心跳报告以维持领导状态。
其中,权重序列用于表征一个一致性群组中不同节点被选为领导节点的可能性,参与选举的节点权重值越高,被选为领导节点的可能性就越高。
结合上述举例与该实施例,节点集群500中的节点510可以根据权重序列(1,0,0)、(0,1,0)以及(0,0,1)确定自己为一致性群组A501中的领导节点、一致性群组B502中的跟随节点以及一致性群组C503中的跟随节点。同理,节点520可以根据上述权重序列确定自身为一致性群组B502中的领导节点,节点530可以根据上述权重序列确定自身为一致性群组C503中的领导节点。
其中,节点510、520和530均可以为上述的当前节点,一致性群组A501、一致性群组B502以及一致性群组C503执行本申请实施例中的基于一致性协议的节点选举方法相同,以一致性群组A501为例,请参阅图6,图6示意性示出了根据本申请的一个实施例中的一致性群组示意图。
如图6所示,一致性群组A600中包括:部署于服务器610的节点611、部署于服务器620的节点621以及部署于服务器630的节点631;其中,节点611、节点621和节点631可以类比于节点510、节点520和节点530。
具体地,当节点611、节点621和节点631接收到由客户端发送的用于请求构建由节点611、节点621和节点631组成建组请求之后,可以响应建组请求组成一致性群组A600。其中,由于建组请求中包括一致性群组A600对应的权重序列(1,0,0),故,节点611可以根据权重序列(1,0,0)将自身确定为目标领导节点,节点621和节点631可以根据权重序列(1,0,0)将自身确定为追随节点;目标领导节点与一致性群组A600相对应。
进而,节点611按照预设时长(如,5ms)作为目标领导节点可以向作为追随节点的节点621和节点631发送心跳报告;其中,心跳报告可以为用于维持领导状态的数据包。但是,当部署节点611的服务器610宕机,节点611就无法发出心跳报告,节点621和节点631也就无法在各自对应的随机时长结束时接收到心跳报告。此时,节点621和节点631中随机时长最早结束的节点可以作为上述的当前节点竞选下一任期的领导节点。
可见,实施该可选的实施例,能够根据建组请求中的权重序列均衡各节点的负载,避免不同的一致性群组对应于相同的领导节点。
作为一种可选的实施例,当前节点向所属的一致性群组内其他节点发送第一投票请求,包括:若当前节点在随机时长内未接收到目标领导节点发送的心跳报告,当前节点向所属的一致性群组内其他节点发送第一投票请求;其中,目标领导节点属于当前节点所属的一致性群组。
结合图6与该实施例,若节点621对应的随机时长为6ms,节点631对应的随机时长为10ms,在节点611宕机后,节点621早于节点631结束随时时长。故,节点621可以作为当前节点向所属的一致性群组内其他节点发送第一投票请求;其中,第一投票请求用于请求其他节点生成投票结果并反馈。
另外,需要说明的是,在节点集群500中,不同的节点可以生成各自对应的随机时长,随机时长用于限定心跳报告的最长接收时间,若超过该随机时长还未接收到心跳报告,则该节点可以参与下一任期的领导节点竞选。
另外,需要说明的是,节点在不同的任期内的随机时长可以相同也可以不同。举例来说,在节点611为领导节点的任期内,节点611、节点621和节点631对应的任期值均为1,节点621和节点631分别对应的随机时长为6ms、10ms,节点611按照5ms向节点621和节点631发送心跳报告。
当节点611宕机,节点621经过6ms未接收到节点心跳报告,则将目标任期值由1更新为2,并向节点611和节点631发送包含目标任期值的第一投票请求,以请求节点611和节点631选举节点621为领导节点;其中,目标任期值为节点621对应的任期值。
节点611和节点631可以将目标任期值与自身任期值进行比对,以及可以将第一投票请求中的目标日志标识与自身日志标识进行比对,若目标任期值大于自身任期值,且目标日志标识大于等于自身日志标识,则可以向节点621反馈赞同结果;若目标日志标识等于自身日志标识,则比对目标权重值与自身权重值,若目标权重值大于等于自身权重值,则可以向节点621反馈赞同结果。同时,节点611和节点631均将自身任期值由1更新为2。除上述情况之外的其他情况下,节点611和节点631可以向节点621反馈反对结果。
若节点621接收到节点611和/或节点631反馈的赞同结果,则替代目标领导节点(即,节点611)成为新的领导节点(即,节点621)。
可见,实施该可选的实施例,能够在未接收到领导节点的心跳报告时,竞选新的领导节点,以保证数据能够正常读写。
作为一种可选的实施例,当前节点向所属的一致性群组内其他节点发送第一投票请求之前,方法还包括:当前节点更新目标任期值,并根据目标日志标识和更新后的目标任期值生成第一投票请求;其中,第一投票请求中的日志信息至少包括目标日志标识以及更新后的目标任期值;目标日志标识用于记录日志条数。
其中,目标任期值和目标日志标识均与当前节点相对应,第一投票请求中的日志信息还可以包括日志内容,日志内容用于详细记录每条日志对应的读操作/写操作。举例来说,若节点621存储了5条日志内容,那么,节点621对应的目标日志标识为5。
可见,实施该可选的实施例,能够在目标领导节点不能及时发出心跳报告时(如,宕机时),及时竞选新的领导节点,以避免出现不能及时记录读写操作的情况。
作为一种可选的实施例,投票结果包括赞成结果和反对结果,其他节点根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果,包括:
其他节点将目标任期值与自身任期值进行比对,以及将目标日志标识与自身日志标识进行比对;
若目标任期值大于自身任期值,且目标日志标识大于自身日志标识,其他节点生成赞成结果并反馈至当前节点;
若目标任期值大于自身任期值,且目标日志标识等于自身日志标识,其他节点将目标权重值与自身权重值进行比对,若目标权重值大于等于自身权重值,其他节点生成赞成结果并反馈至当前节点;
若目标任期值大于自身任期值,且目标日志标识小于自身日志标识,其他节点生成反对结果并反馈至当前节点;
若目标任期值大于自身任期值,目标日志标识等于自身日志标识,且目标权重值小于自身权重值,其他节点生成反对结果并反馈至当前节点。
结合图6与该实施例,在节点621竞选新的领导节点且任期值为2时,节点611和节点631为其他节点,节点611和节点631均可以执行上述实施例的步骤,以节点611为例。
节点611可以将目标任期值(即,节点621的任期值)与自身任期值(即,节点611的任期值)进行比对,如果目标任期值小于等于自身任期值,则生成反对结果并反馈至当前节点。
如果目标任期值大于自身任期值,节点611可以将目标日志标识(即,节点621的日志标识)与自身日志标识(即,节点611的日志标识)进行比对,如果目标日志标识小于自身日志标识,则生成反对结果并反馈至当前节点。
如果目标日志标识等于自身日志标识,节点611可以将目标权重值(即,节点621的权重值)与自身权重值(即,节点611的权重值)进行比对,如果目标权重值小于自身权重值,则生成反对结果并反馈至当前节点。
如果目标权重值大于等于自身权重值,节点611可以生成赞成结果并反馈至当前节点,如果目标权重值小于自身权重值,节点611可以生成反对结果并反馈至当前节点。
如果目标日志标识大于自身日志标识,节点611可以生成赞成结果并反馈至当前节点。
如果目标日志标识小于自身日志标识,节点611可以生成反对结果并反馈至当前节点。
可见,实施该可选的实施例,能够通过对于日志标识、任期值以及权重值进行新的领导节点选举,其中,权重值作为选举参考条件,可以调节节点负载,避免一个节点同时担任多个一致性群组的领导节点,以保证节点集群的稳定性和吞吐量。
在步骤S320中,若投票结果满足预设条件,当前节点向其他节点发送心跳报告以维持领导状态。
基于前述实施例,上述的预设条件可以包括:特定节点(即,权重值高于目标权重值的节点)反馈的投票结果均为赞成结果,且所有投票结果中半数以上为赞成结果。其中,所有投票结果中半数以上为赞成结果可以表示为:(赞成结果的数量/所有投票结果的数量)>(1/2)。
另外,处于领导状态的当前节点即为领导节点。
作为一种可选的实施例,当前节点向其他节点发送心跳报告以维持领导状态之后,方法还包括:其他节点接收心跳报告并将非追随状态的当前状态转换为追随状态;其中,其他节点中包括目标领导节点。
具体地,当前节点当选为领导节点之后,可以按照预设时长向其他节点发送心跳报告。
其中,其他节点接收心跳报告并将非追随状态的当前状态转换为追随状态的方式可以为:其他节点接收心跳报告并检测当前状态是否为追随状态;如果否,则将非追随状态的当前状态转换为追随状态;如果是,则保持追随状态。在其他节点中,存在上一任期的领导节点(即,上述的目标领导节点),举例来说,若当前节点为节点621,上一任期的领导节点为节点611,那么,节点611可以将当前状态由领导状态转换为追随状态,节点631保持追随状态。
可见,实施该可选的实施例,能够参考权重值完成对于领导节点的选举,这样有利于节点负载均衡,从而有利于保证节点集群的稳定性和吞吐量。
作为一种可选的实施例,上述方法还包括:当前节点将当前状态转换为领导状态,状态转换后的当前节点为新的目标领导节点。
具体地,当前节点成为新的目标领导节点时,旧的目标领导节点在恢复之后可以接收到当前节点发送的心跳报告,进而将当前状态变更为追随状态,即,成为追随节点。
可见,实施该可选的实施例,能够参考权重值进行领导节点的选举,这样可以有利于节点负载均衡。
在步骤S330中,若其他节点中存在权重值大于目标权重值的特定节点,且特定节点对应于最新的日志信息,当前节点触发特定节点向所属的一致性群组内其余节点发送第二投票请求。
其中,一致性群组内的特定节点数量可以为0、1、2、……,本申请实施例不作限定,也就是说,一致性群组内,比当前节点权重值高的节点数量可以为零个、一个或多个。
另外,第二投票请求用于请求成为下一任期的领导节点,举例来说,若特定节点为节点611,则其余节点包括节点631和节点621,节点611在接收到当前任期的领导节点(如,节点621)发送的超时请求时,可以将任期值由2更新为3并向其余节点发送第二投票请求。
作为一种可选的实施例,当前节点触发特定节点向所属的一致性群组内其余节点发送第二投票请求之前,上述方法还包括:若检测到特定节点的日志信息与当前节点的日志信息一致,当前节点判定特定节点对应于最新的日志信息。
具体地,上述方法还包括:检测特定节点的日志信息中的日志标识与当前节点的日志信息中的日志标识是否相同,如果相同,则表示特定节点已同步至最新日志,进而,可以判定检测到特定节点的日志信息与当前节点的日志信息一致。
可见,实施该可选的实施例,能够保证每个节点负载均衡,进而保证节点集群的稳定性和吞吐量。
作为一种可选的实施例,当前节点触发特定节点向所属的一致性群组内其余节点发送第二投票请求,包括:当前节点向特定节点发送超时请求,以使得超时请求触发特定节点向其余节点发送第二投票请求。
具体地,超时请求用于触发特定节点竞选下一任期的领导节点。
在当前节点触发特定节点向所属的一致性群组内其余节点发送第二投票请求之前,还可以包括:按照预设时长检测特定节点是否具备最新的日志信息,如果否,当前节点将向发送当前节点的当前日志内容,以供特定节点进行日志同步;进一步检测特定节点是否具备最新的日志信息,如果是,则可以执行上述的当前节点触发特定节点向所属的一致性群组内其余节点发送第二投票请求。
可见,实施该可选的实施例,若一致性组内当前的领导节点并不是权重最高的节点,则可以在权重最高的节点同步至最新日志时及时触发其竞选下一任期的领导节点,由于选举参考了权重因素,权重越高的节点在其他条件不落后的情况下更容易当选领导节点,这样可以使得每个一致性群组中尽可能是权重最高的节点当选领导节点,以保证每个节点负载均衡,进而保证节点集群的稳定性和吞吐量。
请参阅图7,图7示意性示出了根据本申请的一个实施例的基于一致性协议的节点选举方法的流程图。如图7所示,基于一致性协议的节点选举方法可以包括:步骤S700~步骤S722。
步骤S700:节点集群中各节点接收客户端发送的建组请求并对建组请求进行响应;其中,建组请求用于构建由节点集群中多个节点组成的至少一个一致性群组,至少一个一致性群组包括当前节点所属的一致性群组。
步骤S702:节点集群中各节点根据建组请求中多个权重序列确定至少一个一致性群组中各一致性群组对应的领导节点;其中,多个权重序列与至少一个一致性群组一一对应的,领导节点用于向所属的一致性群组内其他节点发送心跳报告以维持领导状态。
步骤S704:当前节点更新目标任期值,并根据目标日志标识和更新后的目标任期值生成第一投票请求;其中,第一投票请求中的日志信息至少包括目标日志标识以及更新后的目标任期值;目标日志标识用于记录日志条数。
步骤S706:若当前节点在随机时长内未接收到目标领导节点发送的心跳报告,当前节点向所属的一致性群组内其他节点发送第一投票请求,以使得其他节点根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果;其中,目标领导节点属于当前节点所属的一致性群组。
步骤S708:若当前节点在随机时长内未接收到目标领导节点发送的心跳报告,当前节点向所属的一致性群组内其他节点发送第一投票请求;其中,目标领导节点属于当前节点所属的一致性群组。
步骤S710:其他节点将目标任期值与自身任期值进行比对,以及将目标日志标识与自身日志标识进行比对。若目标任期值大于自身任期值,且目标日志标识大于自身日志标识,执行步骤S712;若目标任期值大于自身任期值,且目标日志标识等于自身日志标识,执行步骤S714;若目标任期值大于自身任期值,且目标日志标识小于自身日志标识,执行步骤S716。
步骤S712:其他节点生成赞成结果并反馈至当前节点。进而,执行步骤S718。
步骤S714:其他节点将目标权重值与自身权重值进行比对。若目标权重值大于等于自身权重值,执行步骤S712;若目标权重值小于自身权重值,执行步骤S716。
步骤S716:其他节点生成反对结果并反馈至当前节点。进而,执行步骤S718。
步骤S718:若反馈的投票结果均为赞成结果,且所有投票结果中半数以上为赞成结果,当前节点向其他节点发送心跳报告以维持领导状态。
步骤S720:当前节点将当前状态转换为领导状态,状态转换后的当前节点为新的目标领导节点,其他节点接收心跳报告并将非追随状态的当前状态转换为追随状态;其中,其他节点中包括目标领导节点。
步骤S722:若其他节点中存在权重值大于目标权重值的特定节点,且特定节点对应于最新的日志信息,当前节点向特定节点发送超时请求,以使得超时请求触发特定节点向其余节点发送第二投票请求。
需要说明的是,步骤S700~步骤S722与图3所示的各步骤及其实施例相对应,针对步骤S700~步骤S722,请参阅图3所示的各步骤及其实施例,此处不再赘述。
请参阅图8,图8示意性示出了根据本申请的一个实施例的基于一致性协议的节点选举***的结构图。如图8所示,基于一致性协议的节点选举***800包括多个一致性群组(即,一致性群组810、一致性群组820以及一致性群组830),每个一致性群组中包括当前节点和其他节点,其中,一致性群组810中包括当前节点811和其他节点812,一致性群组820中包括当前节点821和其他节点822,一致性群组830中包括当前节点831和其他节点832。
以当前节点811和其他节点812为例,具体地:
当前节点811,用于向所属的一致性群组810内其他节点812发送第一投票请求;
其他节点812,用于根据第一投票请求中的日志信息和当前节点811对应的目标权重值生成并反馈投票结果;
当前节点811,还用于在投票结果满足预设条件时,向其他节点812发送心跳报告以维持领导状态;
当前节点811,还用于在其他节点812中存在权重值大于目标权重值的特定节点且特定节点对应于最新的日志信息时,触发特定节点向所属的一致性群组810内其余节点发送第二投票请求。
可见,实施图8所示的***,可以均衡节点集群间的负载,以保证节点集群的稳定性和吞吐量。此外,还可以提升对于节点集群中的节点的利用效率。
进一步的,本示例实施方式中,还提供了一种基于一致性协议的节点选举装置。参考图9所示,该基于一致性协议的节点选举装置900可以包括:选举发起单元901、心跳报告发送单元902以及选举触发单元903,其中:
选举发起单元901,用于向所属的一致性群组内其他节点发送第一投票请求,以使得其他节点根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果;
心跳报告发送单元902,用于在投票结果满足预设条件时,向其他节点发送心跳报告以维持领导状态;
选举触发单元903,用于在其他节点中存在权重值大于目标权重值的特定节点且特定节点对应于最新的日志信息时,触发特定节点向所属的一致性群组内其余节点发送第二投票请求。
可见,实施图9所示的装置,可以均衡节点集群间的负载,以保证节点集群的稳定性和吞吐量。此外,还可以提升对于节点集群中的节点的利用效率。
在本申请的一种示例性实施例中,在选举发起单元901向所属的一致性群组内其他节点发送第一投票请求之前,还包括:
节点集群中各节点接收客户端发送的建组请求并对建组请求进行响应;
其中,建组请求用于构建由节点集群中多个节点组成的至少一个一致性群组,至少一个一致性群组包括当前节点所属的一致性群组。
可见,实施该可选的实施例,能够根据客户端发送的建组请求构建所需的一个或多个一致性群组,以便于后续根据建组请求中的权重序列均衡各节点的负载,避免不同的一致性群组对应于相同的领导节点。
在本申请的一种示例性实施例中,在请求接收单元对建组请求进行响应之后,还包括:
节点集群中各节点根据建组请求中多个权重序列确定至少一个一致性群组中各一致性群组对应的领导节点;
其中,多个权重序列与至少一个一致性群组一一对应的,领导节点用于向所属的一致性群组内其他节点发送心跳报告以维持领导状态。
可见,实施该可选的实施例,能够根据建组请求中的权重序列均衡各节点的负载,避免不同的一致性群组对应于相同的领导节点。
在本申请的一种示例性实施例中,选举发起单元901向所属的一致性群组内其他节点发送第一投票请求,包括:
若当前节点在随机时长内未接收到目标领导节点发送的心跳报告,当前节点向所属的一致性群组内其他节点发送第一投票请求;
其中,目标领导节点属于当前节点所属的一致性群组。
可见,实施该可选的实施例,能够在未接收到领导节点的心跳报告时,竞选新的领导节点,以保证数据能够正常读写。
在本申请的一种示例性实施例中,上述装置还包括:
任期更新单元(未图示),用于在选举发起单元901向所属的一致性群组内其他节点发送第一投票请求之前,更新目标任期值,并根据目标日志标识和更新后的目标任期值生成第一投票请求;
其中,第一投票请求中的日志信息至少包括目标日志标识以及更新后的目标任期值;目标日志标识用于记录日志条数。
可见,实施该可选的实施例,能够在目标领导节点不能及时发出心跳报告时(如,宕机时),及时竞选新的领导节点,以避免出现不能及时记录读写操作的情况。
在本申请的一种示例性实施例中,投票结果包括赞成结果和反对结果,其他节点根据第一投票请求中的日志信息和当前节点对应的目标权重值生成并反馈投票结果,包括:
其他节点将目标任期值与自身任期值进行比对,以及将目标日志标识与自身日志标识进行比对;
若目标任期值大于自身任期值,且目标日志标识大于自身日志标识,其他节点生成赞成结果并反馈至当前节点;
若目标任期值大于自身任期值,且目标日志标识等于自身日志标识,其他节点将目标权重值与自身权重值进行比对,若目标权重值大于等于自身权重值,其他节点生成赞成结果并反馈至当前节点;
若目标任期值大于自身任期值,且目标日志标识小于自身日志标识,其他节点生成反对结果并反馈至当前节点;
若目标任期值大于自身任期值,目标日志标识等于自身日志标识,且目标权重值小于自身权重值,其他节点生成反对结果并反馈至当前节点。
特别地,预设条件包括:特定节点反馈的投票结果均为赞成结果,且所有投票结果中半数以上为赞成结果。
可见,实施该可选的实施例,能够通过对于日志标识、任期值以及权重值进行新的领导节点选举,其中,权重值作为选举参考条件,可以调节节点负载,避免一个节点同时担任多个一致性群组的领导节点,以保证节点集群的稳定性和吞吐量。
在本申请的一种示例性实施例中,当前节点向其他节点发送心跳报告以维持领导状态之后,还包括:
其他节点接收心跳报告并将非追随状态的当前状态转换为追随状态;其中,其他节点中包括目标领导节点。
可见,实施该可选的实施例,能够参考权重值完成对于领导节点的选举,这样有利于节点负载均衡,从而有利于保证节点集群的稳定性和吞吐量。
在本申请的一种示例性实施例中,上述装置还包括状态转换单元(未图示),其中:
状态转换单元,用于将当前状态转换为领导状态,状态转换后的当前节点为新的目标领导节点。
可见,实施该可选的实施例,能够参考权重值进行领导节点的选举,这样可以有利于节点负载均衡。
在本申请的一种示例性实施例中,选举触发单元903触发特定节点向所属的一致性群组内其余节点发送第二投票请求,包括:
向特定节点发送超时请求,以使得超时请求触发特定节点向其余节点发送第二投票请求。
可见,实施该可选的实施例,若一致性组内当前的领导节点并不是权重最高的节点,则可以在权重最高的节点同步至最新日志时及时触发其竞选下一任期的领导节点,由于选举参考了权重因素,权重越高的节点在其他条件不落后的情况下更容易当选领导节点,这样可以使得每个一致性群组中尽可能是权重最高的节点当选领导节点,以保证每个节点负载均衡,进而保证节点集群的稳定性和吞吐量。
在本申请的一种示例性实施例中,上述装置还包括判定单元(未图示),其中:
判定单元,用于在选举触发单元903触发特定节点向所属的一致性群组内其余节点发送第二投票请求之前,且检测到特定节点的日志信息与当前节点的日志信息一致时,判定特定节点对应于最新的日志信息。
可见,实施该可选的实施例,能够保证每个节点负载均衡,进而保证节点集群的稳定性和吞吐量。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
由于本申请的示例实施例的基于一致性协议的节点选举装置的各个功能模块与上述基于一致性协议的节点选举方法的示例实施例的步骤对应,因此对于本申请装置实施例中未披露的细节,请参照本申请上述的基于一致性协议的节点选举方法的实施例。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (15)
1.一种基于一致性协议的节点选举方法,其特征在于,包括:
当前节点向所属的一致性群组内其他节点发送第一投票请求,以使得所述其他节点根据所述第一投票请求中的日志信息和所述当前节点对应的目标权重值生成并反馈投票结果;
若所述投票结果满足预设条件,所述当前节点向所述其他节点发送心跳报告以维持领导状态;
若所述其他节点中存在权重值大于所述目标权重值的特定节点,且所述特定节点对应于最新的日志信息,所述当前节点触发所述特定节点向所属的一致性群组内其余节点发送第二投票请求。
2.根据权利要求1所述的方法,其特征在于,当前节点向所属的一致性群组内其他节点发送第一投票请求之前,所述方法还包括:
节点集群中各节点接收客户端发送的建组请求并对所述建组请求进行响应;
其中,所述建组请求用于构建由所述节点集群中多个节点组成的至少一个一致性群组,所述至少一个一致性群组包括所述当前节点所属的一致性群组。
3.根据权利要求2所述的方法,其特征在于,对所述建组请求进行响应之后,所述方法还包括:
所述节点集群中各节点根据所述建组请求中多个权重序列确定所述至少一个一致性群组中各一致性群组对应的领导节点;
其中,所述多个权重序列与所述至少一个一致性群组一一对应的,所述领导节点用于向所属的一致性群组内其他节点发送所述心跳报告以维持所述领导状态。
4.根据权利要求3所述的方法,其特征在于,当前节点向所属的一致性群组内其他节点发送第一投票请求,包括:
若所述当前节点在随机时长内未接收到目标领导节点发送的所述心跳报告,所述当前节点向所属的一致性群组内其他节点发送所述第一投票请求;
其中,所述目标领导节点属于所述当前节点所属的一致性群组。
5.根据权利要求4所述的方法,其特征在于,所述当前节点向所属的一致性群组内其他节点发送所述第一投票请求之前,所述方法还包括:
所述当前节点更新目标任期值,并根据目标日志标识和更新后的目标任期值生成第一投票请求;
其中,所述第一投票请求中的日志信息至少包括所述目标日志标识以及所述更新后的目标任期值;所述目标日志标识用于记录日志条数。
6.根据权利要求5所述的方法,其特征在于,所述投票结果包括赞成结果和反对结果,所述其他节点根据所述第一投票请求中的日志信息和所述当前节点对应的目标权重值生成并反馈投票结果,包括:
所述其他节点将所述目标任期值与自身任期值进行比对,以及将所述目标日志标识与自身日志标识进行比对;
若所述目标任期值大于所述自身任期值,且所述目标日志标识大于所述自身日志标识,所述其他节点生成所述赞成结果并反馈至所述当前节点;
若所述目标任期值大于所述自身任期值,且所述目标日志标识等于所述自身日志标识,所述其他节点将所述目标权重值与自身权重值进行比对,若所述目标权重值大于等于所述自身权重值,所述其他节点生成所述赞成结果并反馈至所述当前节点;
若所述目标任期值大于所述自身任期值,且所述目标日志标识小于所述自身日志标识,所述其他节点生成所述反对结果并反馈至所述当前节点;
若所述目标任期值大于所述自身任期值,所述目标日志标识等于所述自身日志标识,且所述目标权重值小于所述自身权重值,所述其他节点生成所述反对结果并反馈至所述当前节点。
7.根据权利要求6所述的方法,其特征在于,所述预设条件包括:所述特定节点反馈的投票结果均为所述赞成结果,且所有投票结果中半数以上为所述赞成结果。
8.根据权利要求4所述的方法,其特征在于,所述当前节点向所述其他节点发送心跳报告以维持领导状态之后,所述方法还包括:
所述其他节点接收所述心跳报告并将非追随状态的当前状态转换为所述追随状态;其中,所述其他节点中包括所述目标领导节点。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
所述当前节点将所述当前状态转换为所述领导状态,状态转换后的所述当前节点为新的目标领导节点。
10.根据权利要求1所述的方法,其特征在于,所述当前节点触发所述特定节点向所属的一致性群组内其余节点发送第二投票请求,包括:
所述当前节点向所述特定节点发送超时请求,以使得所述超时请求触发所述特定节点向所述其余节点发送所述第二投票请求。
11.根据权利要求1所述的方法,其特征在于,所述当前节点触发所述特定节点向所属的一致性群组内其余节点发送第二投票请求之前,所述方法还包括:
若检测到所述特定节点的日志信息与所述当前节点的日志信息一致,所述当前节点判定所述特定节点对应于所述最新的日志信息。
12.一种基于一致性协议的节点选举***,其特征在于,所述***包括多个一致性群组,每个所述一致性群组中包括当前节点和其他节点,其中:
所述当前节点,用于向所属的一致性群组内其他节点发送第一投票请求;
所述其他节点,用于根据所述第一投票请求中的日志信息和所述当前节点对应的目标权重值生成并反馈投票结果;
所述当前节点,还用于在所述投票结果满足预设条件时,向所述其他节点发送心跳报告以维持领导状态;
所述当前节点,还用于在所述其他节点中存在权重值大于所述目标权重值的特定节点且所述特定节点对应于最新的日志信息时,触发所述特定节点向所属的一致性群组内其余节点发送第二投票请求。
13.一种基于一致性协议的节点选举装置,其特征在于,包括:
选举发起单元,用于向所属的一致性群组内其他节点发送第一投票请求,以使得所述其他节点根据所述第一投票请求中的日志信息和所述当前节点对应的目标权重值生成并反馈投票结果;
心跳报告发送单元,用于在所述投票结果满足预设条件时,向所述其他节点发送心跳报告以维持领导状态;
选举触发单元,用于在所述其他节点中存在权重值大于所述目标权重值的特定节点且所述特定节点对应于最新的日志信息时,触发所述特定节点向所属的一致性群组内其余节点发送第二投票请求。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-11任一项所述的方法。
15.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011136140.3A CN112261135A (zh) | 2020-10-22 | 2020-10-22 | 基于一致性协议的节点选举方法、***、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011136140.3A CN112261135A (zh) | 2020-10-22 | 2020-10-22 | 基于一致性协议的节点选举方法、***、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112261135A true CN112261135A (zh) | 2021-01-22 |
Family
ID=74264714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011136140.3A Pending CN112261135A (zh) | 2020-10-22 | 2020-10-22 | 基于一致性协议的节点选举方法、***、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112261135A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113194146A (zh) * | 2021-05-06 | 2021-07-30 | 杭州复杂美科技有限公司 | 领导节点确定方法、计算机设备和存储介质 |
CN113470340A (zh) * | 2021-06-30 | 2021-10-01 | 高新兴科技集团股份有限公司 | 一种车辆编队方法及*** |
CN113965578A (zh) * | 2021-10-28 | 2022-01-21 | 上海达梦数据库有限公司 | 一种集群中主节点的选举方法、装置、设备及存储介质 |
CN114268532A (zh) * | 2021-11-24 | 2022-04-01 | 华人运通(上海)云计算科技有限公司 | 一种基于Raft协议的竞选方法、分布式***及存储介质 |
CN114461593A (zh) * | 2022-04-13 | 2022-05-10 | 云和恩墨(北京)信息技术有限公司 | 日志写入方法及其装置、电子设备及存储介质 |
CN114726856A (zh) * | 2022-02-28 | 2022-07-08 | 重庆市先进区块链研究院 | 一种基于Raft的自适应的选主方法 |
CN114844799A (zh) * | 2022-05-27 | 2022-08-02 | 深信服科技股份有限公司 | 一种集群管理方法、装置、主机设备及可读存储介质 |
CN115002143A (zh) * | 2022-08-01 | 2022-09-02 | 北京奥星贝斯科技有限公司 | 一种节点选举的方法、装置、存储介质及电子设备 |
CN115277718A (zh) * | 2022-05-20 | 2022-11-01 | 西安工业大学 | 一种基于节点状态信息的共识方法和分布式*** |
CN115794478A (zh) * | 2023-02-06 | 2023-03-14 | 天翼云科技有限公司 | ***配置方法、装置、电子设备及存储介质 |
-
2020
- 2020-10-22 CN CN202011136140.3A patent/CN112261135A/zh active Pending
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113194146A (zh) * | 2021-05-06 | 2021-07-30 | 杭州复杂美科技有限公司 | 领导节点确定方法、计算机设备和存储介质 |
CN113194146B (zh) * | 2021-05-06 | 2022-10-28 | 杭州复杂美科技有限公司 | 领导节点确定方法、计算机设备和存储介质 |
CN113470340A (zh) * | 2021-06-30 | 2021-10-01 | 高新兴科技集团股份有限公司 | 一种车辆编队方法及*** |
CN113965578B (zh) * | 2021-10-28 | 2024-01-02 | 上海达梦数据库有限公司 | 一种集群中主节点的选举方法、装置、设备及存储介质 |
CN113965578A (zh) * | 2021-10-28 | 2022-01-21 | 上海达梦数据库有限公司 | 一种集群中主节点的选举方法、装置、设备及存储介质 |
CN114268532A (zh) * | 2021-11-24 | 2022-04-01 | 华人运通(上海)云计算科技有限公司 | 一种基于Raft协议的竞选方法、分布式***及存储介质 |
CN114726856A (zh) * | 2022-02-28 | 2022-07-08 | 重庆市先进区块链研究院 | 一种基于Raft的自适应的选主方法 |
CN114461593A (zh) * | 2022-04-13 | 2022-05-10 | 云和恩墨(北京)信息技术有限公司 | 日志写入方法及其装置、电子设备及存储介质 |
CN114461593B (zh) * | 2022-04-13 | 2022-07-29 | 云和恩墨(北京)信息技术有限公司 | 日志写入方法及其装置、电子设备及存储介质 |
CN115277718A (zh) * | 2022-05-20 | 2022-11-01 | 西安工业大学 | 一种基于节点状态信息的共识方法和分布式*** |
CN115277718B (zh) * | 2022-05-20 | 2024-05-14 | 西安工业大学 | 一种基于节点状态信息的共识方法和分布式*** |
CN114844799A (zh) * | 2022-05-27 | 2022-08-02 | 深信服科技股份有限公司 | 一种集群管理方法、装置、主机设备及可读存储介质 |
CN115002143A (zh) * | 2022-08-01 | 2022-09-02 | 北京奥星贝斯科技有限公司 | 一种节点选举的方法、装置、存储介质及电子设备 |
WO2024027548A1 (zh) * | 2022-08-01 | 2024-02-08 | 北京奥星贝斯科技有限公司 | 一种节点选举的方法、装置、存储介质及电子设备 |
CN115002143B (zh) * | 2022-08-01 | 2023-01-20 | 北京奥星贝斯科技有限公司 | 一种节点选举的方法、装置、存储介质及电子设备 |
CN115794478A (zh) * | 2023-02-06 | 2023-03-14 | 天翼云科技有限公司 | ***配置方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112261135A (zh) | 基于一致性协议的节点选举方法、***、装置及设备 | |
CN109951331B (zh) | 用于发送信息的方法、装置和计算集群 | |
JP7214295B2 (ja) | 分散型システムのデータ同期方法、装置、コンピュータプログラム、及び電子機器 | |
CN107295080B (zh) | 应用于分布式服务器集群的数据存储方法和服务器 | |
US20210203751A1 (en) | Methods, systems, and devices for electronic note identifier allocation and electronic note generation | |
US9588851B2 (en) | Locality based quorums | |
EP4033374A1 (en) | Method and device for synchronizing node data | |
KR101871383B1 (ko) | 계층적 데이터 구조의 노드 상에서 재귀적 이벤트 리스너를 사용하기 위한 방법 및 시스템 | |
US10749954B2 (en) | Cross-data center hierarchical consensus scheme with geo-aware leader election | |
CN110795503A (zh) | 分布式存储***的多集群数据同步方法及相关装置 | |
CN105069152B (zh) | 数据处理方法及装置 | |
CN107220271B (zh) | 一种分布式数字资源存储处理与管理的方法及*** | |
CN112148798A (zh) | 应用于分布式***的数据处理方法及装置 | |
CN110633046A (zh) | 一种分布式***的存储方法、装置、存储设备及存储介质 | |
CN111338834B (zh) | 数据存储方法和装置 | |
US20200142759A1 (en) | Rest gateway for messaging | |
CN113342893B (zh) | 基于区块链的节点同步方法、装置、存储介质及服务器 | |
US10853892B2 (en) | Social networking relationships processing method, system, and storage medium | |
CN112671923B (zh) | 一种统一接口服务通讯调度方法及装置 | |
CN116540938A (zh) | 数据读取方法、装置、分布式存储***、设备和存储介质 | |
CN108459926B (zh) | 数据异地备份方法、装置及计算机可读介质 | |
CN113364874B (zh) | 基于区块链的节点同步方法、装置、存储介质及服务器 | |
CN115022307A (zh) | 一种文件下载方法及装置、存储介质及电子设备 | |
US12019652B2 (en) | Method and device for synchronizing node data | |
CN116166300B (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 |