CN112367373A - 分布式系统的节点确定方法和装置及存储介质 - Google Patents
分布式系统的节点确定方法和装置及存储介质 Download PDFInfo
- Publication number
- CN112367373A CN112367373A CN202011166073.XA CN202011166073A CN112367373A CN 112367373 A CN112367373 A CN 112367373A CN 202011166073 A CN202011166073 A CN 202011166073A CN 112367373 A CN112367373 A CN 112367373A
- Authority
- CN
- China
- Prior art keywords
- node
- information
- session
- locking
- local
- 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
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/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/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Hardware Redundancy (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种分布式系统的节点确定方法和装置及存储介质。其中,该方法包括:获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息;通过第一会话信息和第二会话信息判断第一节点和第二节点所创建的会话是否创建成功,以及通过第一加锁信息和第二加锁信息判断第一节点和第二节点抢占加锁是否成功,以在第一节点与第二节点之间确定出主节点和次节点,其中,主节点用于处理次节点接收的事务请求。本发明解决了分布式系统的节点的确定容错能力较低的技术问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种分布式系统的节点确定方法和装置及存储介质。
背景技术
在分布式系统中,为了达到共识一致性,需要涉及到集群的Leader选举。经典的共识一致性算法Paxos在集群Leader选举中扮演着颇为重要的角色,其与衍生的算法占据了集群Leader选举的大片市场,为大数据分布式系统领域做出了卓越贡献;
但上述集群Leader选举的方法仅针对多节点集群场景,而在面对双节点场景下时,上述集群Leader选举的方法的容错能力低的缺陷就暴露无遗了,例如当出现网络波动的时候,会造成选举异常,进而导致出现多主的现象,即脑裂现象。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种分布式系统的节点确定方法和装置及存储介质,以至少解决分布式系统的节点的确定容错能力较低的技术问题。
根据本发明实施例的一个方面,提供了一种分布式系统的节点确定方法,包括:获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,其中,上述第一会话信息是上述第一节点所创建的会话的结果信息,上述第二会话信息是上述第二节点所创建的会话的结果信息,上述第一加锁信息是上述第一节点抢占加锁的结果信息,上述第二加锁信息是上述第二节点抢占加锁的结果信息;通过上述第一会话信息和上述第二会话信息判断上述第一节点和上述第二节点所创建的会话是否创建成功,以及通过上述第一加锁信息和上述第二加锁信息判断上述第一节点和上述第二节点抢占加锁是否成功,以在上述第一节点与上述第二节点之间确定出主节点和次节点,其中,上述主节点用于处理上述次节点接收的事务请求。
根据本发明实施例的另一方面,还提供了一种分布式系统的节点确定装置,包括:获取单元,用于获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,其中,上述第一会话信息是上述第一节点所创建的会话的结果信息,上述第二会话信息是上述第二节点所创建的会话的结果信息,上述第一加锁信息是上述第一节点抢占加锁的结果信息,上述第二加锁信息是上述第二节点抢占加锁的结果信息;确定单元,用于通过上述第一会话信息和上述第二会话信息判断上述第一节点和上述第二节点所创建的会话是否创建成功,以及通过上述第一加锁信息和上述第二加锁信息判断上述第一节点和上述第二节点抢占加锁是否成功,以在上述第一节点与上述第二节点之间确定出主节点和次节点,其中,上述主节点用于处理上述次节点接收的事务请求。
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述分布式系统的节点确定方法。
根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的分布式系统的节点确定方法。
在本发明实施例中,获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,其中,上述第一会话信息是上述第一节点所创建的会话的结果信息,上述第二会话信息是上述第二节点所创建的会话的结果信息,上述第一加锁信息是上述第一节点抢占加锁的结果信息,上述第二加锁信息是上述第二节点抢占加锁的结果信息;基于上述第一会话信息和上述第二会话信息以及上述第一加锁信息和上述第二加锁信息,在上述第一节点与上述第二节点之间确定出主节点以及次节点,其中,上述主节点用于处理上述次节点接收的事务请求,基于创建会话以及抢占加锁的双重判定,降低了在分布式系统中的两个节点中确定唯一的主节点的过程中,发生异常情况的概率,从而达到了避免因异常情况发生而导致主节点的确定错误的目的,进而实现了提高节点的确定容错能力的效果,进而解决了分布式系统的节点的确定容错能力较低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的分布式系统的节点确定方法的流程图的示意图;
图2是根据本发明实施例的一种可选的分布式系统的节点确定方法的示意图;
图3是根据本发明实施例的另一种可选的分布式系统的节点确定方法的示意图;
图4是根据本发明实施例的另一种可选的分布式系统的节点确定方法的示意图;
图5是根据本发明实施例的另一种可选的分布式系统的节点确定方法的示意图;
图6是根据本发明实施例的另一种可选的分布式系统的节点确定方法的示意图;
图7是根据本发明实施例的一种可选的分布式系统的节点确定装置的示意图;
图8是根据本发明实施例的一种可选的电子装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
可选地,作为一种可选的实施方式,如图1所示,分布式系统的节点确定方法包括:
S102,获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,其中,第一会话信息是第一节点所创建的会话的结果信息,第二会话信息是第二节点所创建的会话的结果信息,第一加锁信息是第一节点抢占加锁的结果信息,第二加锁信息是第二节点抢占加锁的结果信息;
S104,通过第一会话信息和第二会话信息判断第一节点和第二节点所创建的会话是否创建成功,以及通过第一加锁信息和第二加锁信息判断第一节点和第二节点抢占加锁是否成功,以在第一节点与第二节点之间确定出主节点和次节点,其中,主节点用于处理次节点接收的事务请求。
可选的,分布式系统的节点确定方法可以但不限于应用在分布式系统中,为了达到共识一致性,需要涉及到的双节点双数据中心的consul集群的Leader选举场景,其中,Leader可以但不限于为双节点中的主节点,双节点中主节点外的节点即为次节点。可选的,Leader选举可以但不限于在当超过一台服务器启动,且服务器之间已能够进行互相通信,每台服务器都将试图找到一个主节点(Leader)。可选的,Consul可以但不限于是一种基于Raft协议的微服务工具,提供服务注册、服务发现、健康检查、数据中心、Key/Value存储等功能,而Raft协议是由Paxos算法派生而来。
需要说明的是,获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,其中,第一会话信息是第一节点所创建的会话的结果信息,第二会话信息是第二节点所创建的会话的结果信息,第一加锁信息是第一节点抢占加锁的结果信息,第二加锁信息是第二节点抢占加锁的结果信息;通过第一会话信息和第二会话信息判断第一节点和第二节点所创建的会话是否创建成功,以及通过第一加锁信息和第二加锁信息判断第一节点和第二节点抢占加锁是否成功,以在第一节点与第二节点之间确定出主节点和次节点,其中,主节点用于处理次节点接收的事务请求。
进一步举例说明,可选的例如图2所示,分布式系统中包括第一节点202以及第二节点204,由第一节点202以及第二节点204搭建双数据中心的consul集群,每个节点都运行监控进程,第一节点202通过第一监控进程2022的操作,以及第二节点204通过第二监控进程2042的操作去竞争主节点(Leader),具体步骤如下所示:
步骤1:首先,分别获取第一监控进程2022以及第二监控进程204创建的第一会话信息以及第二会话信息,其中,第一会话信息以及第二会话信息包括第一节点202创建本地会话(local session)和远程会话(remote session)的相关信息,以及第二节点204的创建本地会话(local session)和远程会话(remote session)的相关信息,其中,第一监控进程2022以及第二监控进程204分别开启多线程去实时renew上述会话(session)来保活session,确保session存活从而自身进行抢占锁,竞争主节点(Leader)角色。加锁时先本地获取(acquire),然后远程acquire,其中,增加一个KV键LeaderCount表示Leader被激活的次数,初始化时都是0未激活,开机自启动时置为0。
步骤2:双数据中心监控程序(第一监控进程2022以及第二监控进程204)竞争Leader角色(主节点),Leader角色选举规则可选的如图3所示,具体如下:
a.本地加锁成功,远程加锁成功,即为Leader,表示为YYYY;
b.本地加锁不成功,即为Follower,释放本地锁,LeaderCount清零,表示为XXNX;
c.本地加锁成功,远程加锁不成功,此时需要区分不同情况:
若是远程session创建成功,即表示为YYYN,此时需要比较两个数据中心中的历史Leader次数(LeaderCount)的大小,LeaderCount Number大的成为Leader,若是双方LeaderCount Number相等则选择预先设置的默认的节点为Leader,反之LeaderCountNumber小的成为follower(次节点),成为follower的一方释放本地锁,LeaderCount清零;
若是远程session创建失败,远程加锁必定失败,即表示为YNYN。发生此情况时,需要判断本地网络是否正常,若是本地网络正常本地成为Leader,反之成为Follower,释放本地锁,LeaderCount清零。当然,有可能出现两边都出现认为本地的网络正常,此时会导致短暂脑裂的现象。当双方网络通信正常时,有可能出现本地锁不释放,去抢占远程锁时,出现上述本地锁成功、远程create session成功、远程锁失败的情况,即YYYN的现象,此时根据上述YYYN现象的处理原则即可保证脑裂收敛;
步骤3:双数据中心监控程序成为Leader时首先杀掉数据同步程序consul-replicate,同时加当选Leader角色的记录键LeaderCount的number数加一。反之,成为Follower时,将Leader当选记录键LeaderCount清零,同时开启跨数据中心同步插件consul-replicate进行拉取同步远程Leader数据中心的数据。
此外,可选的在本实施例中,还可以但不限于包括以下场景的节点确定:
1、在本地会话都创建成功,但一方节点本地加锁抢占失败的情况下,确定另一方本地加锁抢占成功的节点为主节点;
2、在远程会话都创建成功,但一方节点远程加锁抢占失败的情况下,确定另一方远程加锁抢占成功的节点为主节点;
3、在本地加锁都抢占成功,但一方节点远程会话创建失败的情况下,确定另一方远程会话创建成功的节点为主节点;
4、在远程会话都创建成功,但一方节点远程加锁抢占失败的情况下,确定另一方远程加锁抢占成功的节点为主节点。
通过本申请提供的实施例,获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,其中,第一会话信息是第一节点所创建的会话的结果信息,第二会话信息是第二节点所创建的会话的结果信息,第一加锁信息是第一节点抢占加锁的结果信息,第二加锁信息是第二节点抢占加锁的结果信息;通过第一会话信息和第二会话信息判断第一节点和第二节点所创建的会话是否创建成功,以及通过第一加锁信息和第二加锁信息判断第一节点和第二节点抢占加锁是否成功,以在第一节点与第二节点之间确定出主节点和次节点,其中,主节点用于处理次节点接收的事务请求,基于创建会话以及抢占加锁的双重判定,降低了在分布式系统中的两个节点中确定唯一的主节点的过程中,发生异常情况的概率,从而达到了避免因异常情况发生而导致主节点的确定错误的目的,进而实现了提高节点的确定容错能力的效果。
作为一种可选的方案,通过第一会话信息和第二会话信息判断第一节点和第二节点所创建的会话是否创建成功,以及通过第一加锁信息和第二加锁信息判断第一节点和第二节点抢占加锁是否成功,以在第一节点与第二节点之间确定出主节点和次节点,包括:
S1,在第一会话信息指示会话创建成功,且第一加锁信息指示加锁成功的情况下,确定第一节点为主节点;
S2,在第二会话信息指示会话创建成功,且第二加锁信息指示加锁成功的情况下,确定第二节点为主节点。
需要说明的是,在第一会话信息指示会话创建成功,且第一加锁信息指示加锁成功的情况下,确定第一节点为主节点;在第二会话信息指示会话创建成功,且第二加锁信息指示加锁成功的情况下,确定第二节点为主节点。
进一步举例说明,可选的例如图3所示,在发生“YYYY”的情况下,即表示该节点会话创建成功以及加锁抢占成功,则确定该节点为主节点,其中,加锁抢占可以但不限于表示唯一节点可抢占成功加锁,换言之,在该节点抢占成功加锁的情况下,其余节点无法继续抢占成功加锁。
通过本申请提供的实施例,在第一会话信息指示会话创建成功,且第一加锁信息指示加锁成功的情况下,确定第一节点为主节点;在第二会话信息指示会话创建成功,且第二加锁信息指示加锁成功的情况下,确定第二节点为主节点,达到了保持一致的指示条件,以确定唯一主节点的目的,实现了节点的确定一致性的效果。
作为一种可选的方案,获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,包括:
S1,获取第一会话信息中第一节点所创建的本地会话的第一本地会话信息,以及所创建的远程会话的第一远程会话信息,并获取第二会话信息中第二节点所创建的本地会话的第二本地会话信息,以及所创建的第二远程会话的远程会话信息,其中,本地会话用于本地加锁,远程会话用于远程加锁;
S2,获取第一加锁信息中第一节点抢占本地加锁的第一本地加锁信息,以及抢占远程加锁的第一远程加锁信息,并获取第二加锁信息中第二节点抢占本地加锁的第二本地加锁信息,以及抢占远程加锁的第二远程加锁信息。
需要说明的是,获取第一会话信息中第一节点所创建的本地会话的第一本地会话信息,以及所创建的远程会话的第一远程会话信息,并获取第二会话信息中第二节点所创建的本地会话的第二本地会话信息,以及所创建的第二远程会话的远程会话信息,其中,本地会话用于本地加锁,远程会话用于远程加锁;获取第一加锁信息中第一节点抢占本地加锁的第一本地加锁信息,以及抢占远程加锁的第一远程加锁信息,并获取第二加锁信息中第二节点抢占本地加锁的第二本地加锁信息,以及抢占远程加锁的第二远程加锁信息。
进一步举例说明,可选的例如创建会话分为创建本地会话和创建远程会话,抢占加锁分为抢占本地加锁与抢占远程加锁,其中,创建本地会话可以但不限于为抢占本地加锁的基础,创建远程会话可以但不限于为抢占远程加锁的基础,而创建本地会话和创建远程会话可以但不限于并行执行,互不影响,同样的,抢占本地加锁与抢占远程加锁也可以但不限于并行执行,互不影响。
通过本申请提供的实施例,获取第一会话信息中第一节点所创建的本地会话的第一本地会话信息,以及所创建的远程会话的第一远程会话信息,并获取第二会话信息中第二节点所创建的本地会话的第二本地会话信息,以及所创建的第二远程会话的远程会话信息,其中,本地会话用于本地加锁,远程会话用于远程加锁;获取第一加锁信息中第一节点抢占本地加锁的第一本地加锁信息,以及抢占远程加锁的第一远程加锁信息,并获取第二加锁信息中第二节点抢占本地加锁的第二本地加锁信息,以及抢占远程加锁的第二远程加锁信息,达到了并行执行多种类型的会话创建以及加锁抢占的目的,实现了提高节点的确定效率的效果。
作为一种可选的方案,通过第一会话信息和第二会话信息判断第一节点和第二节点所创建的会话是否创建成功,以及通过第一加锁信息和第二加锁信息判断第一节点和第二节点抢占加锁是否成功,以在第一节点与第二节点之间确定出主节点和次节点,包括:
S1,在第一本地会话信息指示第一节点的本地会话创建失败的情况下,确定第一节点为次节点;
S2,在第二本地会话信息指示第二节点的本地会话创建失败的情况下,确定第二节点为次节点。
需要说明的是,在第一本地会话信息指示第一节点的本地会话创建失败的情况下,确定第一节点为次节点;在第二本地会话信息指示第二节点的本地会话创建失败的情况下,确定第二节点为次节点。可选的,在确定第一节点为次节点的情况下,因第一节点与第二节点之间的数据共享,可以但不限于直接确定第二节点为主节点,也可以但不限于影响第二节点的确定过程,也可以但不限于不影响第二节点的确定过程。
进一步举例说明,可选的例如图4所示,包括第一节点402与第二节点404,在获取到第一节点402本地会话创建失败的信息后,确定第一节点402为次节点;
进一步,在获取到第二节点404本地会话创建成功的信息后,直接确定第二节点404为主节点。
通过本申请提供的实施例,在第一本地会话信息指示第一节点的本地会话创建失败的情况下,确定第一节点为次节点;在第二本地会话信息指示第二节点的本地会话创建失败的情况下,确定第二节点为次节点,达到了依据本地会话创建信息,快速确定节点的目的,实现了提高节点的确定效率的效果。
作为一种可选的方案,通过第一会话信息和第二会话信息判断第一节点和第二节点所创建的会话是否创建成功,以及通过第一加锁信息和第二加锁信息判断第一节点和第二节点抢占加锁是否成功,以在第一节点与第二节点之间确定出主节点和次节点,包括:
S1,在第一远程会话信息和第二远程会话信息指示第一节点和第二节点的远程会话都创建成功,且第一远程加锁信息和第二远程加锁信息指示第一节点和第二节点的远程加锁都抢占失败的情况下,在所述第一远程会话信息指示所述第一节点的所述远程会话创建成功,所述第二远程会话信息指示所述第二节点的所述远程会话创建成功,且所述第一远程加锁信息指示所述第一节点的所述远程加锁抢占失败,所述第二远程加锁信息指示所述第二节点的所述远程加锁抢占失败的情况下,获取第一节点以及第二节点的第一历史身份数据,其中,第一历史身份数据中记录有将第一节点确定;
S2,比对第一历史次数以及第二历史次数,以获得第一比对结果;
S3,基于第一比对结果,在第一节点与第二节点之间确定主节点。
需要说明的是,在第一远程会话信息和第二远程会话信息指示第一节点和第二节点的远程会话都创建成功,且第一远程加锁信息和第二远程加锁信息指示第一节点和第二节点的远程加锁都抢占失败的情况下,在所述第一远程会话信息指示所述第一节点的所述远程会话创建成功,所述第二远程会话信息指示所述第二节点的所述远程会话创建成功,且所述第一远程加锁信息指示所述第一节点的所述远程加锁抢占失败,所述第二远程加锁信息指示所述第二节点的所述远程加锁抢占失败的情况下,获取第一节点以及第二节点的第一历史身份数据,其中,第一历史身份数据中记录有将第一节点确定;比对第一历史次数以及第二历史次数,以获得第一比对结果;基于第一比对结果,在第一节点与第二节点之间确定主节点。
进一步举例说明,可选的例如图5所示,包括第一节点502以及第二节点504,在获取到第一节点502本地加锁成功但远程加锁失败,以及第二节点502本地加锁成功但远程加锁失败的情况下,分别获取第一节点502的第一历史次数5022,以及第二节点504的第二历史次数5042,其中,第一历史次数502用于表示确定第一节点502为主节点的次数,第二历史次数5042用于表示确定第二节点504为主节点的次数;
进一步,比对第一历史次数5022,以及第二历史次数5042,以获得第一比对结果506。
通过本申请提供的实施例,在第一远程会话信息和第二远程会话信息指示第一节点和第二节点的远程会话都创建成功,且第一远程加锁信息和第二远程加锁信息指示第一节点和第二节点的远程加锁都抢占失败的情况下,在所述第一远程会话信息指示所述第一节点的所述远程会话创建成功,所述第二远程会话信息指示所述第二节点的所述远程会话创建成功,且所述第一远程加锁信息指示所述第一节点的所述远程加锁抢占失败,所述第二远程加锁信息指示所述第二节点的所述远程加锁抢占失败的情况下,获取第一节点以及第二节点的第一历史身份数据,其中,第一历史身份数据中记录有将第一节点确定;比对第一历史次数以及第二历史次数,以获得第一比对结果;基于第一比对结果,在第一节点与第二节点之间确定主节点,达到了基于历史次数确定节点的目的,实现了提高节点的确定全面性的效果。
作为一种可选的方案,基于第一比对结果,在节点与第二节点之间确定主节点,包括:
S1,在第一历史次数高于第二历史次数的情况下,将第一节点确定为主节点;
S2,在第二历史次数高于第一历史次数的情况下,将第二节点确定为主节点;
S3,在第一历史次数等于第二历史次数的情况下,在第一节点与第二节点之间,将携带有主节点标签的节点确定为主节点,其中,主节点标签为预先分配的标签。
需要说明的是,在第一历史次数高于第二历史次数的情况下,将第一节点确定为主节点;在第二历史次数高于第一历史次数的情况下,将第二节点确定为主节点;在第一历史次数等于第二历史次数的情况下,在第一节点与第二节点之间,将携带有主节点标签的节点确定为主节点,其中,主节点标签为预先分配的标签。
进一步举例说明,可选的例如图5所示,假设第一历史次数5022为3,第二历史次数5042为0,则第一比对结果506用于表示次数3与次数0的比对结果,即3大于0,换言之,第一比对结果506用于表示第一历史次数5022大于第二历史次数5042。
进一步举例说明,可选的例如图5所示,假设第一历史次数5022为0,第二历史次数5042为0,则第一比对结果506用于表示次数0与次数0的比对结果,即0等于0,换言之,第一比对结果506用于表示第一历史次数5022等于第二历史次数5042;
进一步,假设在本实施例执行前,预先为第一节点502分配有主节点标签,则在上述第一历史次数5022等于第二历史次数5042的情况下,确定分配有主节点标签的第一节点502为主节点。
通过本申请提供的实施例,在第一历史次数高于第二历史次数的情况下,将第一节点确定为主节点;在第二历史次数高于第一历史次数的情况下,将第二节点确定为主节点;在第一历史次数等于第二历史次数的情况下,在第一节点与第二节点之间,将携带有主节点标签的节点确定为主节点,其中,主节点标签为预先分配的标签,达到了在多种情况下,都能准确地确定节点的目的,实现了提高节点确定的容错率的效果。
作为一种可选的方案,基于会话信息以及加锁信息,在第一节点与第二节点之间确定主节点,包括:
S1,在第一远程会话信息指示第一节点的远程会话创建失败,且第二远程会话信息指示第二节点的远程会话创建失败的情况下,获取第一节点的第一本地网络信息以及第二节点的第二本地网络信息,其中,第一本地网络信息为第一节点的本地网络的运行情况,第二本地网络信息为第二节点的本地网络的运行情况;
S2,基于第一本地网络信息和第二本地网络信息,在节点与第二节点之间确定主节点。
需要说明的是,在第一远程会话信息指示第一节点的远程会话创建失败,且第二远程会话信息指示第二节点的远程会话创建失败的情况下,获取第一节点的第一本地网络信息以及第二节点的第二本地网络信息,其中,第一本地网络信息为第一节点的本地网络的运行情况,第二本地网络信息为第二节点的本地网络的运行情况;基于第一本地网络信息和第二本地网络信息,在节点与第二节点之间确定主节点。
进一步举例说明,可选的例如图6所示,包括第一节点602以及第二节点604,在获取到第一节点602抢占本地加锁成功,但创建远程会话失败,以及第二节点604抢占本地加锁成功,但创建远程会话失败的情况下,分别获取第一节点602的第一本地网络信息6022以及第二节点604的第二本地网络信息6024;
进一步,基于第一节点602的第一本地网络信息6022所表示的第一节点602的网络情况,以及第二节点604的第二本地网络信息6024所表示的第二节点604的网络情况,获得节点确定结果606,其中,节点确定结果606用于表示主节点的确定结果。
通过本申请提供的实施例,在第一远程会话信息指示第一节点的远程会话创建失败,且第二远程会话信息指示第二节点的远程会话创建失败的情况下,获取第一节点的第一本地网络信息以及第二节点的第二本地网络信息,其中,第一本地网络信息为第一节点的本地网络的运行情况,第二本地网络信息为第二节点的本地网络的运行情况;基于第一本地网络信息和第二本地网络信息,在节点与第二节点之间确定主节点,达到了在多种情况下,都能准确地确定节点的目的,实现了提高节点确定的容错率的效果。
作为一种可选的方案,基于第一本地网络信息和第二本地网络信息,在节点与第二节点之间确定主节点,包括:
S1,在第一本地网络信息指示第一节点的本地网络运行正常,且第二节点的本地网络运行异常的情况下,确定第一节点为主节点;
S2,在第一本地网络信息指示第一节点的本地网络运行异常,且第二本地网络信息指示第二节点的本地网络运行正常的情况下,确定第二节点为主节点;
S3,在第一本地网络信息和第二本地网络信息指示第一节点和第二节点的本地网络都运行正常的情况下,获取第一节点以及第二节点的第二历史身份数据,其中,第二历史身份数据中记录有将第一节点确定为主节点的第三历史次数,以及将第二节点确定为主节点的第四历史次数;
S4,比对第三历史次数以及第四历史次数,以获得第二比对结果;
S5,基于第二比对结果,在第一节点与第二节点之间确定主节点。
需要说明的是,在第一本地网络信息指示第一节点的本地网络运行正常,且第二节点的本地网络运行异常的情况下,确定第一节点为主节点;在第一本地网络信息指示第一节点的本地网络运行异常,且第二本地网络信息指示第二节点的本地网络运行正常的情况下,确定第二节点为主节点;在第一本地网络信息和第二本地网络信息指示第一节点和第二节点的本地网络都运行正常的情况下,获取第一节点以及第二节点的第二历史身份数据,其中,第二历史身份数据中记录有将第一节点确定为主节点的第三历史次数,以及将第二节点确定为主节点的第四历史次数;比对第三历史次数以及第四历史次数,以获得第二比对结果;基于第二比对结果,在第一节点与第二节点之间确定主节点。
进一步举例说明,可选的例如图6所示,假设第一本地网络信息6022表示第一节点602的本地网络运行异常,第二本地网络信息6024表示第二节点604的本地网络运行正常,则可确定本地网络运行正常的第二节点604为主节点,本地网络运行异常的第一节点602为次节点。
进一步举例说明,可选的例如图6所示,假设第一本地网络信息6022表示第一节点602的本地网络运行异常,第二本地网络信息6024表示第二节点604的本地网络也运行异常,则进一步比对第一节点602与第二节点604的历史数据,其中,历史数据包括第三历史次数以及第四历史次数,第三历史次数用于表示确定第一节点602的历史次数,第四历史次数用于表示确定第二节点604的历史次数;
进一步,基于上述历史数据的比对结果,确定主节点以及次节点。
通过本申请提供的实施例,在第一本地网络信息指示第一节点的本地网络运行正常,且第二节点的本地网络运行异常的情况下,确定第一节点为主节点;在第一本地网络信息指示第一节点的本地网络运行异常,且第二本地网络信息指示第二节点的本地网络运行正常的情况下,确定第二节点为主节点;在第一本地网络信息和第二本地网络信息指示第一节点和第二节点的本地网络都运行正常的情况下,获取第一节点以及第二节点的第二历史身份数据,其中,第二历史身份数据中记录有将第一节点确定为主节点的第三历史次数,以及将第二节点确定为主节点的第四历史次数;比对第三历史次数以及第四历史次数,以获得第二比对结果;基于第二比对结果,在第一节点与第二节点之间确定主节点,达到了在多种情况下,都能准确地确定节点的目的,实现了提高节点确定的容错率的效果。
作为一种可选的方案,在基于会话信息以及加锁信息,在第一节点与第二节点之间确定主节点以及次节点之后,包括:
S1,在将第一节点确定为主节点的情况下,更新第一节点的第一目标历史次数,其中,第一目标历史次数用于记录将第一节点确定为主节点的次数;
S2,在将第二节点确定为主节点的情况下,更新第二节点的第二目标历史次数,其中,第二目标历史次数用于记录将第二节点确定为主节点的次数
S3,在将第一节点确定为次节点的情况下,清零第一目标历史次数;
S4,在将第二节点确定为次节点的情况下,清零第二目标历史次数。
需要说明的是,在将第一节点确定为主节点的情况下,更新第一节点的第一目标历史次数,其中,第一目标历史次数用于记录将第一节点确定为主节点的次数;在将第二节点确定为主节点的情况下,更新第二节点的第二目标历史次数,其中,第二目标历史次数用于记录将第二节点确定为主节点的次数;在将第一节点确定为次节点的情况下,清零第一目标历史次数;在将第二节点确定为次节点的情况下,清零第二目标历史次数。
进一步举例说明,可选的例如图5所示,假设在基于第一比对结果506确定主节点与次节点之前,第一历史次数5022为3,第二历史次数5042为5,则在基于第一比对结果506确定次数较高的第二历史次数5042对应的第二节点为主节点后,更新第一历史次数5022以及第二历史次数5042,具体的,第二历史次数5042中的次数加一,更新为6,而第一历史次数5022中的次数清零,更新为0。
通过本申请提供的实施例,在将第一节点确定为主节点的情况下,更新第一节点的第一目标历史次数,其中,第一目标历史次数用于记录将第一节点确定为主节点的次数;在将第二节点确定为主节点的情况下,更新第二节点的第二目标历史次数,其中,第二目标历史次数用于记录将第二节点确定为主节点的次数;在将第一节点确定为次节点的情况下,清零第一目标历史次数;在将第二节点确定为次节点的情况下,清零第二目标历史次数,达到了实时更新节点的历史数据的目的,实现了节点确定的实时性的效果。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的另一个方面,还提供了一种用于实施上述分布式系统的节点确定方法的分布式系统的节点确定装置。如图7所示,该装置包括:
获取单元702,用于获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,其中,第一会话信息是第一节点所创建的会话的结果信息,第二会话信息是第二节点所创建的会话的结果信息,第一加锁信息是第一节点抢占加锁的结果信息,第二加锁信息是第二节点抢占加锁的结果信息;
确定单元704,用于通过第一会话信息和第二会话信息判断第一节点和第二节点所创建的会话是否创建成功,以及通过第一加锁信息和第二加锁信息判断第一节点和第二节点抢占加锁是否成功,以在第一节点与第二节点之间确定出主节点和次节点,其中,主节点用于处理次节点接收的事务请求。
可选的,分布式系统的节点确定装置可以但不限于应用在分布式系统中,为了达到共识一致性,需要涉及到的双节点双数据中心的consul集群的Leader选举场景,其中,Leader可以但不限于为双节点中的主节点,双节点中主节点外的节点即为次节点。可选的,Leader选举可以但不限于在当超过一台服务器启动,且服务器之间已能够进行互相通信,每台服务器都将试图找到一个主节点(Leader)。可选的,Consul可以但不限于是一种基于Raft协议的微服务工具,提供服务注册、服务发现、健康检查、数据中心、Key/Value存储等功能,而Raft协议是由Paxos算法派生而来。
需要说明的是,获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,其中,第一会话信息是第一节点所创建的会话的结果信息,第二会话信息是第二节点所创建的会话的结果信息,第一加锁信息是第一节点抢占加锁的结果信息,第二加锁信息是第二节点抢占加锁的结果信息;通过第一会话信息和第二会话信息判断第一节点和第二节点所创建的会话是否创建成功,以及通过第一加锁信息和第二加锁信息判断第一节点和第二节点抢占加锁是否成功,以在第一节点与第二节点之间确定出主节点和次节点,其中,主节点用于处理次节点接收的事务请求。
具体实施例可以参考上述分布式系统的节点确定方法中所示示例,本示例中在此不再赘述。
通过本申请提供的实施例,获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,其中,第一会话信息是第一节点所创建的会话的结果信息,第二会话信息是第二节点所创建的会话的结果信息,第一加锁信息是第一节点抢占加锁的结果信息,第二加锁信息是第二节点抢占加锁的结果信息;通过第一会话信息和第二会话信息判断第一节点和第二节点所创建的会话是否创建成功,以及通过第一加锁信息和第二加锁信息判断第一节点和第二节点抢占加锁是否成功,以在第一节点与第二节点之间确定出主节点和次节点,其中,主节点用于处理次节点接收的事务请求,基于创建会话以及抢占加锁的双重判定,降低了在分布式系统中的两个节点中确定唯一的主节点的过程中,发生异常情况的概率,从而达到了避免因异常情况发生而导致主节点的确定错误的目的,进而实现了提高节点的确定容错能力的效果。
作为一种可选的方案,确定单元704,包括:
第一确定模块,用于在第一会话信息指示会话创建成功,且第一加锁信息指示加锁成功的情况下,确定第一节点为主节点;
第二确定模块,用于在第二会话信息指示会话创建成功,且第二加锁信息指示加锁成功的情况下,确定第二节点为主节点。
具体实施例可以参考上述分布式系统的节点确定方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,获取单元702,包括:
第一获取模块,用于获取第一会话信息中第一节点所创建的本地会话的第一本地会话信息,以及所创建的远程会话的第一远程会话信息,并获取第二会话信息中第二节点所创建的本地会话的第二本地会话信息,以及所创建的第二远程会话的远程会话信息,其中,本地会话用于本地加锁,远程会话用于远程加锁;
第二获取模块,用于获取第一加锁信息中第一节点抢占本地加锁的第一本地加锁信息,以及抢占远程加锁的第一远程加锁信息,并获取第二加锁信息中第二节点抢占本地加锁的第二本地加锁信息,以及抢占远程加锁的第二远程加锁信息。
具体实施例可以参考上述分布式系统的节点确定方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,确定单元704,包括:
第三确定模块,用于在第一本地会话信息指示第一节点的本地会话创建失败的情况下,确定第一节点为次节点;
第四确定模块,用于在第二本地会话信息指示第二节点的本地会话创建失败的情况下,确定第二节点为次节点。
具体实施例可以参考上述分布式系统的节点确定方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,确定单元704,包括:
第五确定模块,用于在第一远程会话信息和第二远程会话信息指示第一节点和第二节点的远程会话都创建成功,且第一远程加锁信息和第二远程加锁信息指示第一节点和第二节点的远程加锁都抢占失败的情况下,在所述第一远程会话信息指示所述第一节点的所述远程会话创建成功,所述第二远程会话信息指示所述第二节点的所述远程会话创建成功,且所述第一远程加锁信息指示所述第一节点的所述远程加锁抢占失败,所述第二远程加锁信息指示所述第二节点的所述远程加锁抢占失败的情况下,获取第一节点以及第二节点的第一历史身份数据,其中,第一历史身份数据中记录有将第一节点确定;
比对模块,用于比对第一历史次数以及第二历史次数,以获得第一比对结果;
第六确定模块,用于基于第一比对结果,在第一节点与第二节点之间确定主节点。
具体实施例可以参考上述分布式系统的节点确定方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,第六确定模块,包括:
第一确定子模块,用于在第一历史次数高于第二历史次数的情况下,将第一节点确定为主节点;
第二确定子模块,用于在第二历史次数高于第一历史次数的情况下,将第二节点确定为主节点;
第三确定子模块,用于在第一历史次数等于第二历史次数的情况下,在第一节点与第二节点之间,将携带有主节点标签的节点确定为主节点,其中,主节点标签为预先分配的标签。
具体实施例可以参考上述分布式系统的节点确定方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,确定单元704,包括:
第三获取模块,用于在第一远程会话信息指示第一节点的远程会话创建失败,且第二远程会话信息指示第二节点的远程会话创建失败的情况下,获取第一节点的第一本地网络信息以及第二节点的第二本地网络信息,其中,第一本地网络信息为第一节点的本地网络的运行情况,第二本地网络信息为第二节点的本地网络的运行情况;
第七确定模块,用于基于第一本地网络信息和第二本地网络信息,在节点与第二节点之间确定主节点。
具体实施例可以参考上述分布式系统的节点确定方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,第七确定模块,包括:
第四确定子模块,用于在第一本地网络信息指示第一节点的本地网络运行正常,且第二节点的本地网络运行异常的情况下,确定第一节点为主节点;
第五确定子模块,用于在第一本地网络信息指示第一节点的本地网络运行异常,且第二本地网络信息指示第二节点的本地网络运行正常的情况下,确定第二节点为主节点;
第六确定子模块,用于在第一本地网络信息和第二本地网络信息指示第一节点和第二节点的本地网络都运行正常的情况下,获取第一节点以及第二节点的第二历史身份数据,其中,第二历史身份数据中记录有将第一节点确定为主节点的第三历史次数,以及将第二节点确定为主节点的第四历史次数;
比对子模块,用于比对第三历史次数以及第四历史次数,以获得第二比对结果;
第七确定子模块,用于基于第二比对结果,在第一节点与第二节点之间确定主节点。
具体实施例可以参考上述分布式系统的节点确定方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,包括:
第一更新单元,用于在基于会话信息以及加锁信息,在第一节点与第二节点之间确定主节点以及次节点之后,在将第一节点确定为主节点的情况下,更新第一节点的第一目标历史次数,其中,第一目标历史次数用于记录将第一节点确定为主节点的次数;
第二更新单元,用于在基于会话信息以及加锁信息,在第一节点与第二节点之间确定主节点以及次节点之后,在将第二节点确定为主节点的情况下,更新第二节点的第二目标历史次数,其中,第二目标历史次数用于记录将第二节点确定为主节点的次数;
第三更新单元,用于在基于会话信息以及加锁信息,在第一节点与第二节点之间确定主节点以及次节点之后,在将第一节点确定为次节点的情况下,清零第一目标历史次数;
第四更新单元,用于在基于会话信息以及加锁信息,在第一节点与第二节点之间确定主节点以及次节点之后,在将第二节点确定为次节点的情况下,清零第二目标历史次数。
具体实施例可以参考上述分布式系统的节点确定方法中所示示例,本示例中在此不再赘述。
根据本发明实施例的又一个方面,还提供了一种用于实施上述分布式系统的节点确定方法的电子装置,如图8所示,该电子装置包括存储器802和处理器804,该存储器802中存储有计算机程序,该处理器804被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,其中,第一会话信息是第一节点所创建的会话的结果信息,第二会话信息是第二节点所创建的会话的结果信息,第一加锁信息是第一节点抢占加锁的结果信息,第二加锁信息是第二节点抢占加锁的结果信息;
S2,通过第一会话信息和第二会话信息判断第一节点和第二节点所创建的会话是否创建成功,以及通过第一加锁信息和第二加锁信息判断第一节点和第二节点抢占加锁是否成功,以在第一节点与第二节点之间确定出主节点和次节点,其中,主节点用于处理次节点接收的事务请求。
可选地,本领域普通技术人员可以理解,图8所示的结构仅为示意,电子装置也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图8其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图8中所示更多或者更少的组件(如网络接口等),或者具有与图8所示不同的配置。
其中,存储器802可用于存储软件程序以及模块,如本发明实施例中的分布式系统的节点确定方法和装置对应的程序指令/模块,处理器804通过运行存储在存储器802内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的分布式系统的节点确定方法。存储器802可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器802可进一步包括相对于处理器804远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器802具体可以但不限于用于存储第一会话信息、第二会话信息、第一加锁信息、第二加锁信息、主节点以及次节点等信息。作为一种示例,如图8所示,上述存储器802中可以但不限于包括上述分布式系统的节点确定装置中的获取单元702及确定单元704。此外,还可以包括但不限于上述分布式系统的节点确定装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置806用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置806包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置806为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子装置还包括:显示器808,用于显示上述第一会话信息、第二会话信息、第一加锁信息、第二加锁信息、主节点以及次节点等信息;和连接总线810,用于连接上述电子装置中的各个模块部件。
根据本发明的实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,其中,第一会话信息是第一节点所创建的会话的结果信息,第二会话信息是第二节点所创建的会话的结果信息,第一加锁信息是第一节点抢占加锁的结果信息,第二加锁信息是第二节点抢占加锁的结果信息;
S2,通过第一会话信息和第二会话信息判断第一节点和第二节点所创建的会话是否创建成功,以及通过第一加锁信息和第二加锁信息判断第一节点和第二节点抢占加锁是否成功,以在第一节点与第二节点之间确定出主节点和次节点,其中,主节点用于处理次节点接收的事务请求。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (15)
1.一种分布式系统的节点确定方法,其特征在于,包括:
获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息和第二加锁信息,其中,所述第一会话信息是所述第一节点所创建的会话的结果信息,所述第二会话信息是所述第二节点所创建的会话的结果信息,所述第一加锁信息是所述第一节点抢占加锁的结果信息,所述第二加锁信息是所述第二节点抢占加锁的结果信息;
通过所述第一会话信息和所述第二会话信息判断所述第一节点和所述第二节点所创建的会话是否创建成功,以及通过所述第一加锁信息和所述第二加锁信息判断所述第一节点和所述第二节点抢占加锁是否成功,以在所述第一节点与所述第二节点之间确定出主节点和次节点,其中,所述主节点用于处理所述次节点接收的事务请求。
2.根据权利要求1所述的方法,其特征在于,所述通过所述第一会话信息和所述第二会话信息判断所述第一节点和所述第二节点所创建的会话是否创建成功,以及通过所述第一加锁信息和所述第二加锁信息判断所述第一节点和所述第二节点抢占加锁是否成功,以在所述第一节点与所述第二节点之间确定出主节点和次节点,包括:
在所述第一会话信息指示会话创建成功,且所述第一加锁信息指示加锁成功的情况下,确定所述第一节点为所述主节点;
在所述第二会话信息指示会话创建成功,且所述第二加锁信息指示加锁成功的情况下,确定所述第二节点为所述主节点。
3.根据权利要求1所述的方法,其特征在于,所述获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,包括:
获取所述第一会话信息中所述第一节点所创建的本地会话的第一本地会话信息,以及所创建的远程会话的第一远程会话信息,并获取所述第二会话信息中所述第二节点所创建的本地会话的第二本地会话信息,以及所创建的第二远程会话的远程会话信息,其中,所述本地会话用于本地加锁,所述远程会话用于远程加锁;
获取所述第一加锁信息中所述第一节点抢占所述本地加锁的第一本地加锁信息,以及抢占所述远程加锁的第一远程加锁信息,并获取所述第二加锁信息中所述第二节点抢占所述本地加锁的第二本地加锁信息,以及抢占所述远程加锁的第二远程加锁信息。
4.根据权利要求3所述的方法,其特征在于,所述通过所述第一会话信息和所述第二会话信息判断所述第一节点和所述第二节点所创建的会话是否创建成功,以及通过所述第一加锁信息和所述第二加锁信息判断所述第一节点和所述第二节点抢占加锁是否成功,以在所述第一节点与所述第二节点之间确定出主节点和次节点,包括:
在所述第一本地会话信息指示所述第一节点的所述本地会话创建失败的情况下,确定所述第一节点为所述次节点;
在所述第二本地会话信息指示所述第二节点的所述本地会话创建失败的情况下,确定所述第二节点为所述次节点。
5.根据权利要求3所述的方法,其特征在于,所述通过所述第一会话信息和所述第二会话信息判断所述第一节点和所述第二节点所创建的会话是否创建成功,以及通过所述第一加锁信息和所述第二加锁信息判断所述第一节点和所述第二节点抢占加锁是否成功,以在所述第一节点与所述第二节点之间确定出主节点和次节点,包括:
在所述第一远程会话信息和所述第二远程会话信息指示所述第一节点和所述第二节点的所述远程会话都创建成功,且所述第一远程加锁信息和所述第二远程加锁信息指示所述第一节点和所述第二节点的所述远程加锁都抢占失败的情况下,获取所述第一节点以及所述第二节点的第一历史身份数据,其中,所述第一历史身份数据中记录有将所述第一节点确定为所述主节点的第一历史次数,以及将所述第二节点确定为所述主节点的第二历史次数;
比对所述第一历史次数以及所述第二历史次数,以获得第一比对结果;
基于所述第一比对结果,在所述第一节点与所述第二节点之间确定所述主节点。
6.根据权利要求5所述的方法,其特征在于,所述基于所述第一比对结果,在所述节点与所述第二节点之间确定所述主节点,包括:
在所述第一历史次数高于所述第二历史次数的情况下,将所述第一节点确定为所述主节点;
在所述第二历史次数高于所述第一历史次数的情况下,将所述第二节点确定为所述主节点;
在所述第一历史次数等于所述第二历史次数的情况下,在所述第一节点与所述第二节点之间,将携带有主节点标签的节点确定为所述主节点,其中,所述主节点标签为预先分配的标签。
7.根据权利要求3所述的方法,其特征在于,所述通过所述第一会话信息和所述第二会话信息判断所述第一节点和所述第二节点所创建的会话是否创建成功,以及通过所述第一加锁信息和所述第二加锁信息判断所述第一节点和所述第二节点抢占加锁是否成功,以在所述第一节点与所述第二节点之间确定出主节点和次节点,包括:
在所述第一远程会话信息指示所述第一节点的所述远程会话创建失败,且所述第二远程会话信息指示所述第二节点的所述远程会话创建失败的情况下,获取所述第一节点的第一本地网络信息以及所述第二节点的第二本地网络信息,其中,所述第一本地网络信息为所述第一节点的本地网络的运行情况,所述第二本地网络信息为所述第二节点的本地网络的运行情况;
基于所述第一本地网络信息和所述第二本地网络信息,在所述节点与所述第二节点之间确定所述主节点。
8.根据权利要求7所述的方法,其特征在于,所述基于所述第一本地网络信息和所述第二本地网络信息,在所述节点与所述第二节点之间确定所述主节点,包括:
在所述第一本地网络信息指示所述第一节点的本地网络运行正常,且所述第二节点的本地网络运行异常的情况下,确定所述第一节点为所述主节点;
在所述第一本地网络信息指示所述第一节点的本地网络运行异常,且所述第二本地网络信息指示所述第二节点的本地网络运行正常的情况下,确定所述第二节点为所述主节点;
在所述第一本地网络信息和所述第二本地网络信息指示所述第一节点和所述第二节点的本地网络都运行正常的情况下,获取所述第一节点以及所述第二节点的第二历史身份数据,其中,所述第二历史身份数据中记录有将所述第一节点确定为所述主节点的第三历史次数,以及将所述第二节点确定为所述主节点的第四历史次数;
比对所述第三历史次数以及所述第四历史次数,以获得第二比对结果;
基于所述第二比对结果,在所述第一节点与所述第二节点之间确定所述主节点。
9.根据权利要求1至8中任一项所述的方法,其特征在于,在所述基于所述会话信息以及所述加锁信息,在所述第一节点与所述第二节点之间确定主节点以及次节点之后,包括:
在将所述第一节点确定为所述主节点的情况下,更新所述第一节点的第一目标历史次数,其中,所述第一目标历史次数用于记录将所述第一节点确定为所述主节点的次数;
在将所述第二节点确定为所述主节点的情况下,更新所述第二节点的第二目标历史次数,其中,所述第二目标历史次数用于记录将所述第二节点确定为所述主节点的次数;
在将所述第一节点确定为所述次节点的情况下,清零所述第一目标历史次数;
在将所述第二节点确定为所述次节点的情况下,清零所述第二目标历史次数。
10.一种分布式系统的节点确定装置,其特征在于,包括:
获取单元,用于获取分布式系统中第一节点的第一会话信息和第一加锁信息,以及第二节点的第二会话信息以及第二加锁信息,其中,所述第一会话信息是所述第一节点所创建的会话的结果信息,所述第二会话信息是所述第二节点所创建的会话的结果信息,所述第一加锁信息是所述第一节点抢占加锁的结果信息,所述第二加锁信息是所述第二节点抢占加锁的结果信息;
确定单元,用于通过所述第一会话信息和所述第二会话信息判断所述第一节点和所述第二节点所创建的会话是否创建成功,以及通过所述第一加锁信息和所述第二加锁信息判断所述第一节点和所述第二节点抢占加锁是否成功,以在所述第一节点与所述第二节点之间确定出主节点和次节点,其中,所述主节点用于处理所述次节点接收的事务请求。
11.根据权利要求10所述的装置,其特征在于,所述确定单元,包括:
第一确定模块,用于在所述第一会话信息指示会话创建成功,且所述第一加锁信息指示加锁成功的情况下,确定所述第一节点为所述主节点;
第二确定模块,用于在所述第二会话信息指示会话创建成功,且所述第二加锁信息指示加锁成功的情况下,确定所述第二节点为所述主节点。
12.根据权利要求10所述的装置,其特征在于,所述获取单元,包括:
第一获取模块,用于获取所述第一会话信息中所述第一节点所创建的本地会话的第一本地会话信息,以及所创建的远程会话的第一远程会话信息,并获取所述第二会话信息中所述第二节点所创建的本地会话的第二本地会话信息,以及所创建的第二远程会话的远程会话信息,其中,所述本地会话用于本地加锁,所述远程会话用于远程加锁;
第二获取模块,用于获取所述第一加锁信息中所述第一节点抢占所述本地加锁的第一本地加锁信息,以及抢占所述远程加锁的第一远程加锁信息,并获取所述第二加锁信息中所述第二节点抢占所述本地加锁的第二本地加锁信息,以及抢占所述远程加锁的第二远程加锁信息。
13.根据权利要求12所述的装置,其特征在于,所述确定单元,包括:
第三确定模块,用于在所述第一本地会话信息指示所述第一节点的所述本地会话创建失败的情况下,确定所述第一节点为所述次节点;
第四确定模块,用于在所述第二本地会话信息指示所述第二节点的所述本地会话创建失败的情况下,确定所述第二节点为所述次节点。
14.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至9任一项中所述的方法。
15.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至9任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011166073.XA CN112367373B (zh) | 2020-10-27 | 2020-10-27 | 分布式系统的节点确定方法和装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011166073.XA CN112367373B (zh) | 2020-10-27 | 2020-10-27 | 分布式系统的节点确定方法和装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112367373A true CN112367373A (zh) | 2021-02-12 |
CN112367373B CN112367373B (zh) | 2022-06-24 |
Family
ID=74510778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011166073.XA Active CN112367373B (zh) | 2020-10-27 | 2020-10-27 | 分布式系统的节点确定方法和装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112367373B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115269248A (zh) * | 2022-07-28 | 2022-11-01 | 江苏安超云软件有限公司 | 双节点集群下防止脑裂方法和装置、电子设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104156367A (zh) * | 2013-05-14 | 2014-11-19 | 阿里巴巴集团控股有限公司 | 一种搜索引擎的扩容方法及搜索服务系统 |
CN104702655A (zh) * | 2014-03-21 | 2015-06-10 | 杭州海康威视系统技术有限公司 | 云存储资源分配方法及其系统 |
CN107092533A (zh) * | 2017-03-29 | 2017-08-25 | 弘成科技发展有限公司 | 基于ActiveMQ+Redis的同步消息队列 |
CN108898463A (zh) * | 2018-07-02 | 2018-11-27 | 山东大学 | 一种高并发的农产品网上交易系统及其搭建方法、运行方法 |
US10367676B1 (en) * | 2015-09-28 | 2019-07-30 | Amazon Technologies, Inc. | Stable leader selection for distributed services |
CN110888719A (zh) * | 2019-09-18 | 2020-03-17 | 广州市巨硅信息科技有限公司 | 一种基于web服务的分布式任务调度系统及方法 |
CN111460030A (zh) * | 2020-03-18 | 2020-07-28 | 紫光云技术有限公司 | 基于ZooKeeper的分布式数据交换系统 |
-
2020
- 2020-10-27 CN CN202011166073.XA patent/CN112367373B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104156367A (zh) * | 2013-05-14 | 2014-11-19 | 阿里巴巴集团控股有限公司 | 一种搜索引擎的扩容方法及搜索服务系统 |
CN104702655A (zh) * | 2014-03-21 | 2015-06-10 | 杭州海康威视系统技术有限公司 | 云存储资源分配方法及其系统 |
US10367676B1 (en) * | 2015-09-28 | 2019-07-30 | Amazon Technologies, Inc. | Stable leader selection for distributed services |
CN107092533A (zh) * | 2017-03-29 | 2017-08-25 | 弘成科技发展有限公司 | 基于ActiveMQ+Redis的同步消息队列 |
CN108898463A (zh) * | 2018-07-02 | 2018-11-27 | 山东大学 | 一种高并发的农产品网上交易系统及其搭建方法、运行方法 |
CN110888719A (zh) * | 2019-09-18 | 2020-03-17 | 广州市巨硅信息科技有限公司 | 一种基于web服务的分布式任务调度系统及方法 |
CN111460030A (zh) * | 2020-03-18 | 2020-07-28 | 紫光云技术有限公司 | 基于ZooKeeper的分布式数据交换系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115269248A (zh) * | 2022-07-28 | 2022-11-01 | 江苏安超云软件有限公司 | 双节点集群下防止脑裂方法和装置、电子设备和存储介质 |
CN115269248B (zh) * | 2022-07-28 | 2023-08-08 | 安超云软件有限公司 | 双节点集群下防止脑裂方法和装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112367373B (zh) | 2022-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10979286B2 (en) | Method, device and computer program product for managing distributed system | |
US7225356B2 (en) | System for managing operational failure occurrences in processing devices | |
CN109344014B (zh) | 一种主备切换方法、装置及通信设备 | |
US7518983B2 (en) | Proxy response apparatus | |
KR100812374B1 (ko) | 클러스터 시스템에서 프로토콜 네트워크 장애 관리 시스템및 방법 | |
EP3214865B1 (en) | Cluster arbitration method and multi-cluster coordination system | |
CN111475576A (zh) | 基于区块链的分布式数据库存储方法及系统 | |
EP2323344A1 (en) | Method for preventing thread hanging in a multi-thread communication program | |
CN110830283A (zh) | 故障检测方法、装置、设备和系统 | |
CN109391691A (zh) | 一种单节点故障下nas服务的恢复方法及相关装置 | |
CN115277712B (zh) | 分布式锁服务提供方法、装置、系统及电子设备 | |
CN112367373B (zh) | 分布式系统的节点确定方法和装置及存储介质 | |
CN116743625A (zh) | 一种fttr网关设备的客户端故障诊断方法和装置 | |
KR101075462B1 (ko) | 서브넷에서 마스터 노드를 선출하는 방법 | |
EP2406923A1 (en) | System and methods for a managed application server restart | |
CN104657240B (zh) | 多内核操作系统的失效控制方法及装置 | |
US9015518B1 (en) | Method for hierarchical cluster voting in a cluster spreading more than one site | |
US20230126682A1 (en) | Fault tolerance method and apparatus of network device system, computer device, and storage medium | |
US10122588B2 (en) | Ring network uplink designation | |
CN113835621B (zh) | Ip仲裁进程数量管控方法、系统、终端及存储介质 | |
CN115643237B (zh) | 一种用于会议的数据处理系统 | |
CN115277379A (zh) | 分布式锁容灾处理方法、装置、电子设备及存储介质 | |
CN117056131B (zh) | 基于区块链网络的数据处理方法及相关设备 | |
CN114143127B (zh) | 数据广播方法、装置和电子设备 | |
CN115086173B (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 |