CN115277379B - 分布式锁容灾处理方法、装置、电子设备及存储介质 - Google Patents
分布式锁容灾处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115277379B CN115277379B CN202210800856.1A CN202210800856A CN115277379B CN 115277379 B CN115277379 B CN 115277379B CN 202210800856 A CN202210800856 A CN 202210800856A CN 115277379 B CN115277379 B CN 115277379B
- Authority
- CN
- China
- Prior art keywords
- node
- lock
- service
- target
- master node
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0668—Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
-
- 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/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明提供了一种分布式锁容灾处理方法、装置、电子设备及存储介质,该方法应用于锁客户端中,对分布式锁服务集群进行容灾处理,分布式锁服务集群包括多个服务节点,每个服务节点配置有多个分组,任意两个服务节点配置的分组相同,不同分组的主节点在多个服务节点中均匀分布,包括:根据锁操作请求中的锁标识,确定与锁标识对应的目标分组,根据节点分组信息,确定目标分组对应的目标主节点;若锁客户端与目标主节点之间通信故障,根据节点分组信息确定与目标主节点对应的候选节点;将锁操作请求发送至候选节点,使得候选节点在目标分组中启动锁操作的同步处理。本发明解决了主节点故障时无法提供服务的问题,提高了分布式锁操作服务的容灾能力。
Description
技术领域
本发明涉及分布式系统技术领域,尤其涉及一种分布式锁容灾处理方法、装置、电子设备及存储介质。
背景技术
在分布式部署的应用集群中,经常会存在一些业务场景,为了保证某些业务逻辑的准确性,或者避免某些逻辑被重复执行,需要限制多个应用进程或线程对共享数据资源进行互斥访问,例如秒杀下单、商品抢购等场景,通常的解决方案是引入分布式锁技术。
现有技术中,可以通过Redis或者Zookeeper来实现分布式锁。通过Redis实现的分布式锁包括Redisson Lock和RedLock。Redisson Lock提供了丰富的锁操作接口,服务端单主(Master)节点提供服务,主从节点数据基于异步复制机制,具有很高的并发能力,但是,由于主从节点基于异步复制机制,数据同步存在延迟,保证不了主从节点间数据的强一致性;当主节点宕掉时,锁状态可能没及时同步到从节点,主节点切换到从节点继续提供服务时,有可能会导致锁的互斥性被破坏,可靠性比较低。为了弥补Redisson Lock在可靠性方面的不足,Redis还提供了另外一种锁RedLock,集群采用多主节点部署,每次锁操作都需要过半主节点的应答,若有少数主节点宕掉,其它主节点可继续提供服务,保证锁操作的可靠性,但是,由于多个主节点间并不会实时同步数据,若有主节点宕掉,内存数据丢失,节点重启后锁状态清空,不能立即添加到集群中继续提供服务,集群恢复正常状态周期比较长,而且当客户端与服务节点出现网络抖动或者隔离时,对应服务节点不可提供服务。基于Zookeeper创建临时有序节点实现的分布式锁,通过ZAB协议保证集群多节点数据的强一致性,可靠性与容灾能力较高。但是,系统并发能力与吞吐量不高,而且在原主节点关闭,未选举出新主节点时,不能正常提供锁操作服务。
可见,通过Redis和Zookeeper实现的分布式锁在主节点故障时,不能正常提高锁操作服务,容灾能力较低,可用性较低,稳定性较差。
发明内容
本发明实施例提供一种分布式锁容灾处理方法、装置、电子设备及存储介质,以提高分布式锁操作服务的容灾能力,提高分布式锁操作服务的可用性和稳定性。
依据本发明实施例的第一方面,提供了一种分布式锁容灾处理方法,应用于锁客户端中,对分布式锁服务集群进行容灾处理,所述分布式锁服务集群包括多个服务节点,每个所述服务节点配置有多个分组,任意两个所述服务节点配置的分组相同,不同分组对应的主节点在所述多个服务节点中均匀分布,所述方法包括:
根据锁操作请求中的锁标识,确定与所述锁标识对应的目标分组,并根据节点分组信息,确定所述目标分组对应的目标主节点;
若所述锁客户端与所述目标主节点之间通信故障,则根据所述节点分组信息确定与所述目标主节点对应的候选节点;
将所述锁操作请求发送至所述候选节点,使得所述候选节点在所述目标分组中启动锁操作的同步处理。
依据本发明实施例的第二方面,提供了一种分布式锁容灾处理装置,应用于锁客户端中,对分布式锁服务集群进行容灾处理,所述分布式锁服务集群包括多个服务节点,每个所述服务节点配置有多个分组,任意两个所述服务节点配置的分组相同,不同分组的主节点在所述多个服务节点中均匀分布,所述装置包括:
目标主节点确定模块,用于根据锁操作请求中的锁标识,确定与所述锁标识对应的目标分组,并根据节点分组信息,确定所述目标分组对应的目标主节点;
候选节点确定模块,用于若所述锁客户端与所述目标主节点之间通信故障,则根据所述节点分组信息确定与所述目标主节点对应的候选节点;
锁操作请求发送模块,用于将所述锁操作请求发送至所述候选节点,使得所述候选节点在所述目标分组中启动锁操作的同步处理。
依据本发明实施例的第三方面,提供了一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的分布式锁容灾处理方法的步骤。
依据本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的分布式锁容灾处理方法的步骤。
本发明实施例提供的分布式锁容灾处理方法、装置、电子设备及存储介质,通过根据锁操作请求中的锁标识确定与锁标识对应的目标分组,并根据节点分组信息确定目标分组对应的目标主节点,在锁客户端与目标主节点之间通信故障时,根据节点分组信息确定与目标主节点对应的候选节点,将锁操作请求发送至候选节点,使得候选节点在目标分组中启动锁操作的同步处理,实现了在锁客户端与目标主节点之间通信故障时,由候选节点启动锁操作的同步处理,解决了主节点故障时无法提供锁操作服务的问题,提高了分布式锁操作服务的容灾能力,进而提高了分布式锁操作服务的可用性和稳定性。
附图说明
图1是本发明实施例提供的一种分布式锁容灾处理方法的流程图;
图2是本发明实施例中分布式锁服务系统的架构图;
图3是本发明实施例中目标主节点关闭时的容灾处理示意图;
图4是本发明实施例中目标主节点宕机时的容灾处理示意图;
图5是本发明实施例中锁客户端与目标主节点之间网络抖动或隔离时的容灾处理示意图;
图6是本发明实施例中的一种分布式锁服务集群的结构示意图;
图7是本发明实施例提供的一种分布式锁容灾处理装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种分布式锁容灾处理方法的流程图,该分布式锁容灾处理方法应用于锁客户端中,对分布式锁服务集群进行容灾处理,所述分布式锁服务集群包括多个服务节点,优选是包括至少三个服务节点,保证分布式锁服务的高可用性,每个所述服务节点配置有多个分组,任意两个所述服务节点配置的分组相同,不同分组对应的主节点在多个服务节点中均匀分布,也就是每个服务节点作为主节点的分组数量相同,例如分布式锁服务集群中有A、B、C三个服务节点,有分组1、分组2、分组3三个分组,分组1的主节点为A,分组2的主节点为B,分组3的主节点为B。其中,分布式锁服务集群可以是基于一致性算法,例如Paxos协议的,以Paxos协议为例,那么多个分组即多个Paxos分组。一个服务节点可以理解为是一台服务器,一个服务节点中的多个分组可以并行进行数据处理,可以理解为一个服务节点中有多个线程并行进行数据处理。锁客户端是请求锁操作的客户端,可以是一个业务对应的用于请求该业务下的锁操作的客户端,也可以认为是一种业务服务器,用于接收用户终端的访问请求,并基于访问请求生成锁操作请求。
图2是本发明实施例中分布式锁服务系统的架构图,如图2所示,多个分布式锁服务集群(集群1-集群n)和注册中心服务器组成分布式锁服务系统,每个分布式锁服务集群的架构相同,以集群1为例,集群1中包括S1、S2、S3三个服务节点,每个服务节点中都配置了g0、g1、g2、g3、g4、g5六个分组,g0分组和g1分组的主节点为S1,g2分组和g3分组的主节点为S2,g4分组和g5分组的主节点为S3,这样保证了不同分组的主节点在多个服务节点中均匀分布。注册中心服务器用于管理所有的分布式锁服务集群,服务节点定时向注册中心服务器上报节点分组信息,节点分组信息包括分组的主节点分布信息,锁客户端启动时先从注册中心服务器拉取集群节点地址以及节点分组信息,根据锁标识和固定的哈希规则,将同一个锁标识哈希到某一个分组,并将锁操作请求发送至对应分组的主(Master)节点,锁更新操作由主节点发起锁同步操作(Propose)请求到从节点,保证数据一致性同步。多个分组的主节点可并行处理不同的锁操作请求,也大大提升了系统的并发处理能力。
如图1所示,该分布式锁容灾处理方法包括:
步骤110,根据锁操作请求中的锁标识,确定与所述锁标识对应的目标分组,并根据节点分组信息,确定所述目标分组对应的目标主节点。
锁客户端基于用户终端的访问请求,生成锁操作请求,按照设定的哈希规则,对锁操作请求中的锁标识进行哈希计算,将所述锁标识映射到多个分组中的一个分组中,该分组即为所述目标分组。其中,所述锁操作请求用于请求一次锁操作,例如可以请求加锁或释放锁等。
节点分组信息是从注册中心服务器拉取来的,注册中心服务器用于管理分布式锁服务集群,记录分布式锁服务集群中每个分组对应的节点分组信息,节点分组信息中包括一个分组下的主节点所对应的主节点标识和从节点所对应的从节点标识,这样基于节点分组信息可以确定目标分组对应的目标主节点。
步骤120,若所述锁客户端与所述目标主节点之间通信故障,则根据所述节点分组信息确定与所述目标主节点对应的候选节点。
锁客户端与目标主节点之间通信故障可以是由目标主节点关闭引起的,也可以是由目标主节点宕机或者目标主节点与从节点之间网络抖动引起的,还可以是锁客户端与目标主节点之间网络抖动或者隔离引起的。目标主节点关闭可以是目标主节点正常关闭,也可以是目标主节点异常关闭。
在锁客户端与目标主节点之间通信故障时,锁客户端无法将锁操作请求成功发送至目标主节点,这时锁客户端可以根据节点分组信息,从目标分组中确定与目标主节点对应的候选节点,可以将目标分组中任意一个从节点确定为所述候选节点,也可以基于设定规则确定目标分组中的一个特定从节点为所述候选节点。
在本发明的一个实施例中,所述根据所述节点分组信息确定与所述目标主节点对应的候选节点,包括:根据所述节点分组信息,将与所述目标主节点相邻的下一个服务节点确定为所述候选节点。
节点分组信息包括目标分组下的节点列表,锁客户端根据节点分组信息,将节点列表中与目标主节点相邻的下一个服务节点确定为候选节点,与目标主节点相邻的下一个服务节点可以是目标主节点的标识(ID)加1所对应的服务节点。
通过将与目标主节点相邻的下一个服务节点确定为候选节点,可以提高候选节点竞选为目标分组中新的主节点的概率。
步骤130,将所述锁操作请求发送至所述候选节点,使得所述候选节点在所述目标分组中启动锁操作的同步处理。
锁客户端在确定与目标主节点对应的候选节点后,将锁操作请求发送至候选节点,候选节点在接收到锁客户端发送的锁操作请求后,可以在目标分组中启动锁操作的同步处理。候选节点在目标分组中启动锁操作的同步处理可以是在目标主节点关闭或者宕机时,候选节点向目标分组中的其他从节点发送Propose请求,以同步锁操作;候选节点在目标分组中启动锁操作的同步处理还可以是在目标主节点服务正常时,即由于锁客户端与目标主节点之间网络抖动引起的锁客户端与目标主节点之间通信故障,则候选节点将锁操作请求转发至目标主节点,由目标主节点向包括候选节点在内的从节点发送Propose请求,以同步锁操作。
本实施例提供的分布式锁容灾处理方法,通过根据锁操作请求中的锁标识确定与锁标识对应的目标分组,并根据节点分组信息确定目标分组对应的目标主节点,在锁客户端与目标主节点之间通信故障时,根据节点分组信息确定与目标主节点对应的候选节点,将锁操作请求发送至候选节点,使得候选节点在目标分组中启动锁操作的同步处理,实现了在锁客户端与目标主节点之间通信故障时,由候选节点启动锁操作的同步处理,解决了主节点故障时无法提供锁操作服务的问题,提高了分布式锁操作服务的容灾能力,进而提高了分布式锁操作服务的可用性和稳定性。
在本发明的一个实施例中,在所述若所述锁客户端与所述目标主节点之间通信故障,则锁客户端根据所述节点分组信息确定所述目标主节点对应的候选节点之前,还包括下述其中一种:
在接收到所述目标主节点发送的关闭命令时,确定所述锁客户端与所述目标主节点之间通信故障;
在捕获到连接关闭信号时,确定所述锁客户端与所述目标主节点之间通信故障;
在将所述锁操作请求发送至所述主节点的失败次数达到次数阈值时,确定所述锁客户端与所述目标主节点之间通信故障。
当目标主节点正常关闭时,首先会向锁客户端发送关闭命令,并立即放弃作为目标分组的主节点(drop master),通知其它服务节点竞选目标分组的主节点;目标主节点异常关闭时(非宕机情况),目标主节点所在服务器的操作系统会将连接关闭信号在操作系统层面进行存储,以便于锁客户端捕获到该连接关闭信号,在这种情况下,需要等待目标主节点的有效周期过后,才会有其它服务节点竞选目标分组的主节点。锁客户端接收到目标主节点发送的关闭命令时,确定目标主节点正常关闭,导致锁客户端与目标主节点之间通信故障;锁客户端监听目标主节点的连接关闭信号,在捕获到该连接关闭信号时,确定目标主节点异常关闭,导致锁客户端与目标主节点之间通信故障。在目标分组选举出新的主节点之前,目标分组会出现无主节点的现象。当客户端接收到目标主节点的关闭命令或者捕获到连接关闭信号时,可以直接标记目标主节点不可用,并将锁操作请求统一发送至候选节点。
当目标主节点宕机(即目标主节点所在服务器宕机)或者目标主节点与分布式锁服务集群中其它服务节点出现网络抖动时,目标主节点续约失败。这时,锁客户端将锁操作请求发送至目标主节点时,会导致锁操作请求发送失败,在连续失败次数达到次数阈值时,锁客户端可以确定与目标主节点之间通信故障。
上述锁客户端与目标主节点之间通信故障的三种情况,均是目标主节点不能提供锁操作服务的情况,这时可以由确定的候选节点来进行锁操作的同步处理,保证各节点间锁状态的强一致性,并可以持续提供分布式锁服务。
在上述技术方案的基础上,所述候选节点接收到所述锁操作请求后,若在所述目标分组中未选举出新的主节点,则所述候选节点基于所述锁操作请求,向所述目标分组中的其他服务节点发送锁同步操作请求。在目标分组中从节点确定目标主节点关闭或者宕机时,会启动主节点选举机制,以选举出新的主节点。候选节点在接收到锁客户端发送的锁操作请求时,如果目标分组中还未选举出新的主节点,则由候选节点向目标分组中目标主节点以外的其他服务节点发送锁同步操作请求,这样候选节点和其他服务节点可以进行锁操作的同步处理,保证锁状态的强一致性,保证分布式锁服务的持续可用,提升了分布式锁服务的质量。
在上述技术方案的基础上,在所述将所述锁操作请求发送至所述候选节点之后,还包括:接收所述候选节点发送来的新的主节点信息,所述新的主节点信息是所述候选节点在所述目标分组中选举出新的主节点且所述新的主节点是所述候选节点以外的服务节点时发送的;根据所述新的主节点信息,将所述锁操作请求重新发送至所述新的主节点,由所述新的主节点向所述目标分组中的其他服务节点发送锁同步操作请求。
多数情况下,候选节点竞选为新的主节点的概率最大,但是也会存在候选节点没有竞选为新的主节点的情况。候选节点接收到锁客户端发送的锁操作请求时,如果目标分组中已选举出新的主节点且新的主节点是候选节点以外的服务节点,则候选节点将新的主节点信息发送至锁客户端,锁客户端接收到候选节点发送的新的主节点信息,将锁操作请求重新发送至新的主节点信息所对应的新的主节点,新的主节点接收到锁操作请求后,向目标分组中新的主节点以外的其他服务节点发送锁同步操作请求。新的主节点信息是新的主节点的标识信息,例如可以是新的主节点的IP地址等信息。
候选节点接收到锁客户端发送的锁操作请求时,如果目标分组中已选举出新的主节点且新的主节点不是候选节点,候选节点将新的主节点信息发送至锁客户端,锁客户端重新向新的主节点发送锁操作请求,这样可以快速恢复目标分组的分布式锁服务。
在上述技术方案的基础上,在所述将所述锁操作请求发送至所述候选节点之后,还包括:接收注册中心服务器发送来的所述目标分组中新的主节点信息,所述注册中心服务器用于管理所述分布式锁服务集群。
在目标分组中选举出新的主节点时,分布式锁服务集群在定时向注册中心服务器上报主节点的分布情况时,会将目标分组中新的主节点信息上报至注册中心服务器,注册中心服务器接收到目标分组中新的主节点信息时,确定目标分组中主节点有变化,将目标分组中新的主节点信息推送至锁客户端,以便于锁客户端保存目标分组中各节点信息,并将后续的锁操作请求发送至新的主节点。
在本发明的另一个实施例中,在所述若所述锁客户端与所述目标主节点之间通信故障,则根据所述节点分组信息确定所述目标主节点对应的候选节点之前,还包括:若向所述目标主节点发送心跳信息失败,且等待预设时间所述心跳信息未发送成功,则确定所述锁客户端与所述目标主节点之间通信故障。
当锁客户端与目标主节点之间网络出现抖动或隔离时,分布式锁服务集群状态正常,不会发生主节点的变更,此时,锁客户端发向目标主节点的心跳信息会发送失败,如果等待预设时间心跳信息仍未发送成功,则锁客户端确定与目标主节点之间通信故障,但是分布式锁服务集群状态正常,为了及时获取锁服务可以将锁操作请求发送至候选节点。其中,预设时间可以是最大心跳健康检测周期,例如可以是20s。
在上述技术方案的基础上,所述将所述锁操作请求发送至所述候选节点,包括:将具有强制转发标记的锁操作请求发送至所述候选节点,所述强制转发标记用于指示所述候选节点将所述锁操作请求转发至所述目标主节点。
锁客户端在基于心跳信息确定与目标主节点之间通信故障时,强制关闭与目标主节点之间的连接,之后再探测重连,在探测到目标主节点连接状态恢复正常之前,此时锁客户端会将锁操作请求发送到候选节点,并在锁操作请求中携带强制转发标记,候选节点接收到锁客户端发送的锁操作请求后,识别出锁操作请求中的强制转发标记,将锁操作请求转发至目标主节点,由目标主节点向目标分组中的服务节点发送锁同步操作请求(即Propose)。
通过将具有强制转发标记的锁操作请求发送至候选节点,由候选节点将锁操作请求转发至目标主节点,可以防止网络异常情况下,锁客户端长期请求失败导致分布式锁服务不可用的情况,保证服务的可用性。
在本发明的一个实施例中,在所述分布式锁服务集群中,每个分组的主节点检测分布式锁的过期状态,并向所述主节点以外的服务节点发送删除处于过期状态的分布式锁的同步操作请求。
基于Paxos协议,在分布式锁服务集群中,每个分组的主节点检测分布式锁的过期状态,在主节点检测到分布式锁处于过期状态时,向该分组中主节点以外的服务节点发送删除处于过期状态的分布式锁的同步操作请求,这样可以避免集群中服务节点间的时钟状态不一致时不同节点对分布式锁的过期处理状态不同的现象,降低了时钟不一致对分布式锁服务的影响。
图3是本发明实施例中目标主节点关闭时的容灾处理示意图,如图3所示,锁客户端确定锁操作请求中的锁标识映射到分组g2中,在分组g2中目标主节点正常关闭时,目标主节点会向锁客户端发送关闭命令,这时锁客户端可以将锁操作请求发送至与目标主节点对应的候选节点。由于Paxos协议支持任何成员节点均可发起Propose请求,在选举出新的主节点之前,可由候选节点发起Propose同步锁操作,保证了主节点关闭以及主节点漂移,无主节点状态下服务的可用性。当选举出新的主节点后,候选节点将新的主节点信息发送至锁客户端,锁客户端再将锁请求切换发送到新的主节点,但多数情况下,候选节点竞选为新的主节点的概率最大。
图4是本发明实施例中目标主节点宕机时的容灾处理示意图,如图4所示,锁客户端确定锁操作请求中的锁标识映射到分组g2中,当分组g2中目标主节点宕机或者目标主节点与集群中其他服务节点出现网络抖动时,目标主节点续约失败,锁客户端向目标主节点发送锁操作请求的失败次数达到次数阈值时,锁客户端确定与目标主节点之间通信故障,可以将锁操作请求发送至与目标主节点对应的候选节点。由于Paxos协议支持任何成员节点均可发起Propose请求,在选举出新的主节点之前,可由候选节点发起Propose同步锁操作,保证了主节点宕机时分布式锁服务的可用性。当选举出新的主节点后,候选节点将新的主节点信息发送至锁客户端,锁客户端再将锁请求切换发送到新的主节点,但多数情况下,候选节点竞选为新的主节点的概率最大。
图5是本发明实施例中锁客户端与目标主节点之间网络抖动或隔离时的容灾处理示意图,如图5所示,锁客户端确定锁操作请求中的锁标识映射到分组g2中,当锁客户端与分组g2中目标主节点之间网络出现抖动或隔离时,服务端集群状态正常,不会发生主节点的变更,此时,锁客户端发向目标主节点的心跳信息会失败,等待预设时间未恢复时,与目标主节点的连接会被锁客户端强制关闭,锁客户端之后再探测重连,在探测到目标主节点连接状态恢复正常之前,此时锁客户端会将锁操作请求发送到候选节点,并携带强制转发标记,由候选节点将锁操作请求转发至目标主节点处理。该机制可以防止网络异常情况下锁客户端长期请求失败导致服务不可用的情况,提高了服务的可用性和稳定性。
图6是本发明实施例中的一种分布式锁服务集群的结构示意图,如图6所示,该分布式锁服务集群包括:
由多台服务器61(图6中仅示出三台服务器61,但不限于三台)中的服务模块组成的多个一致性算法集群62(图6中仅示出三个一致性算法集群62,但不限于三个),
其中,每台服务器61作为一个所述服务节点,且每台服务器61中均设置有多个所述服务模块,每一所述一致性算法集群62分别包括每台服务器61中的一个所述服务模块,且不同的一致性算法集群62中的所述服务模块不同,同一服务器62中的不同服务模块对应配置于不同的分组,且配置于同一分组的服务模块组成一个一致性算法集群62;所述多个一致性算法集群中作为主节点的所述服务模块均匀分布在多台服务器62中。
服务器61为硬件电子设备,服务器61中的多个服务模块可以为该硬件电子设备中由软件实现的服务器。这里,针对每台服务器61,各个服务模块相互之间相互独立,即独立运行,并行工作。可以理解的是,在每台服务器61中均设置有多个服务模块的情况下,可以分别选取每台服务器61中的一个服务模块组成一个一致性算法集群62,进而得到多个一致性算法集群62。这里,各一致性算法集群62中不存在相同的服务模块,因此,各一致性算法集群62相互之间可以独立运行,每一一致性算法集群62只需处理自己接收到的锁操作请求即可。
在一致性算法集群62中组成其的各服务模块可以视为各节点,由于一致性算法集群62包括一个主节点和若干个从节点,因此,一致性算法集群62中存在一个服务模块作为主节点,剩余服务模块作为从节点。
其中,服务器为分布式锁服务集群(大集群)中的一个服务节点,可以理解为一个进程,服务模块为一致性算法集群(小集群)中的一个节点,可以理解为进程下的线程,具体根据需求一个服务模块可以对应于一个或多个线程,一个分组对应于一个小集群,可以理解一个小集群中各服务模块属于一个分组,一个小集群中包含多个线程,通过小集群中作为主节点的线程处理锁操作请求。
需要说明的是,在分布式锁服务集群如图6所示的架构下,前述实施例中目标分组对应的主节点也就是与目标分组对应的一致性算法集群中作为主节点的服务模块,候选节点也就是与目标分组对应的一致性算法集群中作为从节点的一个服务模块,该服务模块与作为主节点的服务模块相邻,即该服务模块的标识可以为作为主节点的服务模块的标识与1之和。
本发明实施例中,由多台服务器61中的服务模块组成的多个一致性算法服务集群62,在锁操作请求的并发量较大的情况下,通过多个一致性算法服务集群62中作为主节点的服务模块分别接收具有不同锁标识的锁操作请求,进而分别利用每个一致性算法服务集群62分别对其接收到的锁操作请求进行处理,实现了对锁操作请求的并行处理,提升了处理效率,并可以实现数据的强一致性。
图7是本发明实施例提供的一种分布式锁容灾处理装置的结构框图,应用于锁客户端中,对分布式锁服务集群进行容灾处理,所述分布式锁服务集群包括多个服务节点,每个所述服务节点配置有多个分组,任意两个所述服务节点配置的分组相同,不同分组对应的主节点在所述多个服务节点中均匀分布,如图7所示,该分布式锁容灾处理装置包括:
目标主节点确定模块710,用于根据锁操作请求中的锁标识,确定与所述锁标识对应的目标分组,并根据节点分组信息,确定所述目标分组对应的目标主节点;
候选节点确定模块720,用于若所述锁客户端与所述目标主节点之间通信故障,则根据所述节点分组信息确定与所述目标主节点对应的候选节点;
锁操作请求发送模块730,用于将所述锁操作请求发送至所述候选节点,使得所述候选节点在所述目标分组中启动锁操作的同步处理。
可选的,所述候选节点确定模块包括:
候选节点确定单元,用于根据所述节点分组信息,将与所述目标主节点相邻的下一个服务节点确定为所述候选节点。
可选的,所述装置还包括第一通信故障确定模块,所述第一通信故障确定模块用于执行下述其中一种:
在接收到所述目标主节点发送的关闭命令时,确定所述锁客户端与所述目标主节点之间通信故障;
在捕获到连接关闭信号时,确定所述锁客户端与所述目标主节点之间通信故障;
在将所述锁操作请求发送至所述主节点的失败次数达到次数阈值时,确定所述锁客户端与所述目标主节点之间通信故障。
可选的,所述候选节点接收到所述锁操作请求后,若在所述目标分组中未选举出新的主节点,则所述候选节点基于所述锁操作请求,向所述目标分组中的其他服务节点发送锁同步操作请求。
可选的,所述装置还包括:
第一新的主节点信息接收模块,用于接收所述候选节点发送来的新的主节点信息,所述新的主节点信息是所述候选节点在所述目标分组中选举出新的主节点且所述新的主节点是所述候选节点以外的服务节点时发送的;
锁操作请求重新发送模块,用于根据所述新的主节点信息,将所述锁操作请求重新发送至所述新的主节点,由所述新的主节点向所述目标分组中的其他服务节点发送锁同步操作请求。
可选的,所述装置还包括:
第二新的主节点信息接收模块,用于接收注册中心服务器发送来的所述目标分组中新的主节点信息,所述注册中心服务器用于管理所述分布式锁服务集群。
可选的,所述装置还包括:
第二通信故障确定模块,用于若向所述目标主节点发送心跳信息失败,且等待预设时间所述心跳信息未发送成功,则确定所述锁客户端与所述目标主节点之间通信故障。
可选的,所述锁操作请求发送模块具体用于:
将具有强制转发标记的锁操作请求发送至所述候选节点,所述强制转发标记用于指示所述候选节点将所述锁操作请求转发至所述目标主节点。
可选的,在所述分布式锁服务集群中,每个分组的主节点检测分布式锁的过期状态,并向所述主节点以外的服务节点发送删除处于过期状态的分布式锁的同步操作请求。
可选的,所述分布式锁服务集群包括:
由多台服务器中的服务模块组成的多个一致性算法集群,
其中,每台所述服务器作为一个所述服务节点,且每台所述服务器中均设置有多个所述服务模块,每一所述一致性算法集群分别包括每台所述服务器中的一个所述服务模块,且不同的所述一致性算法集群中的所述服务模块不同,同一服务器中的不同服务模块对应配置于不同的分组,且配置于同一分组的服务模块组成一个一致性算法集群;所述多个一致性算法集群的作为主节点的所述服务模块均匀分布在所述多台服务器中。
本发明实施例提供的分布式锁容灾处理装置,用于实现本发明实施例所述的分布式锁容灾处理方法的各步骤,装置的各模块的具体实施方式参见相应步骤,此处不再赘述。
本发明实施例提供的分布式锁容灾处理装置,通过根据锁操作请求中的锁标识确定与锁标识对应的目标分组,并根据节点分组信息确定目标分组对应的目标主节点,在锁客户端与目标主节点之间通信故障时,根据节点分组信息确定与目标主节点对应的候选节点,将锁操作请求发送至候选节点,使得候选节点在目标分组中启动锁操作的同步处理,实现了在锁客户端与目标主节点之间通信故障时,由候选节点启动锁操作的同步处理,解决了主节点故障时无法提供锁操作服务的问题,提高了分布式锁操作服务的容灾能力,进而提高了分布式锁操作服务的可用性和稳定性。
优选的,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述分布式锁容灾处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述分布式锁容灾处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random AccessMemory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (13)
1.一种分布式锁容灾处理方法,其特征在于,应用于锁客户端中,对分布式锁服务集群进行容灾处理,所述分布式锁服务集群包括多个服务节点,每个所述服务节点配置有多个分组,任意两个所述服务节点配置的分组相同,不同分组对应的主节点在所述多个服务节点中均匀分布,每个所述服务节点通过多个分组并行处理数据,所述方法包括:
根据锁操作请求中的锁标识,确定与所述锁标识对应的目标分组,并根据节点分组信息,确定所述目标分组对应的目标主节点;
若所述锁客户端与所述目标主节点之间通信故障,则根据所述节点分组信息确定与所述目标主节点对应的候选节点;
将所述锁操作请求发送至所述候选节点,使得所述候选节点在所述目标分组中启动锁操作的同步处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述节点分组信息确定与所述目标主节点对应的候选节点,包括:
根据所述节点分组信息,将与所述目标主节点相邻的下一个服务节点确定为所述候选节点。
3.根据权利要求1或2所述的方法,其特征在于,在所述若所述锁客户端与所述目标主节点之间通信故障,则锁客户端根据所述节点分组信息确定所述目标主节点对应的候选节点之前,还包括下述其中一种:
在接收到所述目标主节点发送的关闭命令时,确定所述锁客户端与所述目标主节点之间通信故障;
在捕获到连接关闭信号时,确定所述锁客户端与所述目标主节点之间通信故障;
在将所述锁操作请求发送至所述主节点的失败次数达到次数阈值时,确定所述锁客户端与所述目标主节点之间通信故障。
4.根据权利要求3所述的方法,其特征在于,所述候选节点接收到所述锁操作请求后,若在所述目标分组中未选举出新的主节点,则所述候选节点基于所述锁操作请求,向所述目标分组中的其他服务节点发送锁同步操作请求。
5.根据权利要求3所述的方法,其特征在于,在所述将所述锁操作请求发送至所述候选节点之后,还包括:
接收所述候选节点发送来的新的主节点信息,所述新的主节点信息是所述候选节点在所述目标分组中选举出新的主节点且所述新的主节点是所述候选节点以外的服务节点时发送的;
根据所述新的主节点信息,将所述锁操作请求重新发送至所述新的主节点,由所述新的主节点向所述目标分组中的其他服务节点发送锁同步操作请求。
6.根据权利要求3所述的方法,其特征在于,在所述将所述锁操作请求发送至所述候选节点之后,还包括:
接收注册中心服务器发送来的所述目标分组中新的主节点信息,所述注册中心服务器用于管理所述分布式锁服务集群。
7.根据权利要求1或2所述的方法,其特征在于,在所述若所述锁客户端与所述目标主节点之间通信故障,则根据所述节点分组信息确定所述目标主节点对应的候选节点之前,还包括:
若向所述目标主节点发送心跳信息失败,且等待预设时间所述心跳信息未发送成功,则确定所述锁客户端与所述目标主节点之间通信故障。
8.根据权利要求7所述的方法,其特征在于,所述将所述锁操作请求发送至所述候选节点,包括:
将具有强制转发标记的锁操作请求发送至所述候选节点,所述强制转发标记用于指示所述候选节点将所述锁操作请求转发至所述目标主节点。
9.根据权利要求1或2所述的方法,其特征在于,在所述分布式锁服务集群中,每个分组的主节点检测分布式锁的过期状态,并向所述主节点以外的服务节点发送删除处于过期状态的分布式锁的同步操作请求。
10.根据权利要求1或2所述的方法,其特征在于,所述分布式锁服务集群包括:
由多台服务器中的服务模块组成的多个一致性算法集群,
其中,每台所述服务器作为一个所述服务节点,且每台所述服务器中均设置有多个所述服务模块,每一所述一致性算法集群分别包括每台所述服务器中的一个所述服务模块,且不同的所述一致性算法集群中的所述服务模块不同,同一服务器中的不同服务模块对应配置于不同的分组,且配置于同一分组的服务模块组成一个一致性算法集群;所述多个一致性算法集群的作为主节点的所述服务模块均匀分布在所述多台服务器中。
11.一种分布式锁容灾处理装置,其特征在于,应用于锁客户端中,对分布式锁服务集群进行容灾处理,所述分布式锁服务集群包括多个服务节点,每个所述服务节点配置有多个分组,任意两个所述服务节点配置的分组相同,不同分组对应的主节点在所述多个服务节点中均匀分布,每个所述服务节点通过多个分组并行处理数据,所述装置包括:
目标主节点确定模块,用于根据锁操作请求中的锁标识,确定与所述锁标识对应的目标分组,并根据节点分组信息,确定所述目标分组对应的目标主节点;
候选节点确定模块,用于若所述锁客户端与所述目标主节点之间通信故障,则根据所述节点分组信息确定与所述目标主节点对应的候选节点;
锁操作请求发送模块,用于将所述锁操作请求发送至所述候选节点,使得所述候选节点在所述目标分组中启动锁操作的同步处理。
12.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至10中任一项所述的分布式锁容灾处理方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至10中任一项所述的分布式锁容灾处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210800856.1A CN115277379B (zh) | 2022-07-08 | 2022-07-08 | 分布式锁容灾处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210800856.1A CN115277379B (zh) | 2022-07-08 | 2022-07-08 | 分布式锁容灾处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115277379A CN115277379A (zh) | 2022-11-01 |
CN115277379B true CN115277379B (zh) | 2023-08-01 |
Family
ID=83764633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210800856.1A Active CN115277379B (zh) | 2022-07-08 | 2022-07-08 | 分布式锁容灾处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115277379B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018036148A1 (zh) * | 2016-08-23 | 2018-03-01 | 东方网力科技股份有限公司 | 一种服务器集群系统 |
CN112231399A (zh) * | 2020-09-25 | 2021-01-15 | 中国建设银行股份有限公司 | 一种应用于图数据库的方法和装置 |
CN113726553A (zh) * | 2021-07-29 | 2021-11-30 | 浪潮电子信息产业股份有限公司 | 一种节点故障恢复方法、装置、电子设备及可读存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060053216A1 (en) * | 2004-09-07 | 2006-03-09 | Metamachinix, Inc. | Clustered computer system with centralized administration |
CN101309167B (zh) * | 2008-06-27 | 2011-04-20 | 华中科技大学 | 基于集群备份的容灾系统及方法 |
US10049022B2 (en) * | 2013-06-24 | 2018-08-14 | Oracle International Corporation | Systems and methods to retain and reclaim resource locks and client states after server failures |
JP6388290B2 (ja) * | 2014-11-12 | 2018-09-12 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 分散システムにおけるロック・サーバの故障を処理するための方法およびシステム |
KR102016702B1 (ko) * | 2015-12-30 | 2019-08-30 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 잠금 획득 요청을 처리하는 방법 및 서버 |
CN106254100B (zh) * | 2016-07-27 | 2019-04-16 | 腾讯科技(深圳)有限公司 | 一种数据容灾方法、装置和系统 |
CN108881489A (zh) * | 2018-08-03 | 2018-11-23 | 高新兴科技集团股份有限公司 | 一种分布式服务的协调系统及方法 |
CN109753364A (zh) * | 2018-12-28 | 2019-05-14 | 北京明朝万达科技股份有限公司 | 一种基于网络的分布式锁的实现方法、设备及介质 |
CN110519348A (zh) * | 2019-08-15 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 一种多服务分布式集群部署系统及方法 |
CN111400112B (zh) * | 2020-03-18 | 2021-04-13 | 深圳市腾讯计算机系统有限公司 | 分布式集群的存储系统的写入方法、装置及可读存储介质 |
CN111901422B (zh) * | 2020-07-28 | 2022-11-11 | 浪潮电子信息产业股份有限公司 | 一种集群中节点的管理方法、系统及装置 |
CN113904914A (zh) * | 2020-12-31 | 2022-01-07 | 京东科技控股股份有限公司 | 一种服务切换方法、装置、系统和存储介质 |
CN113660350A (zh) * | 2021-10-18 | 2021-11-16 | 恒生电子股份有限公司 | 分布式锁协调方法、装置、设备及存储介质 |
CN114070739B (zh) * | 2021-11-11 | 2024-01-26 | 杭州和利时自动化有限公司 | 一种集群部署方法、装置、设备和计算机可读存储介质 |
-
2022
- 2022-07-08 CN CN202210800856.1A patent/CN115277379B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018036148A1 (zh) * | 2016-08-23 | 2018-03-01 | 东方网力科技股份有限公司 | 一种服务器集群系统 |
CN112231399A (zh) * | 2020-09-25 | 2021-01-15 | 中国建设银行股份有限公司 | 一种应用于图数据库的方法和装置 |
CN113726553A (zh) * | 2021-07-29 | 2021-11-30 | 浪潮电子信息产业股份有限公司 | 一种节点故障恢复方法、装置、电子设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
大容量环境下设备升级模块设计与实现;许驰;东南大学;40-50 * |
Also Published As
Publication number | Publication date |
---|---|
CN115277379A (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109344014B (zh) | 一种主备切换方法、装置及通信设备 | |
US7518983B2 (en) | Proxy response apparatus | |
KR100812374B1 (ko) | 클러스터 시스템에서 프로토콜 네트워크 장애 관리 시스템및 방법 | |
CN110830283B (zh) | 故障检测方法、装置、设备和系统 | |
CN108055157B (zh) | 一种服务节点的获取方法及装置 | |
CN103581276A (zh) | 集群管理装置、系统、业务客户端及相应方法 | |
CN111130879B (zh) | 一种基于pbft算法的集群异常恢复方法 | |
CN110674096B (zh) | 节点故障排查方法、装置、设备及计算机可读存储介质 | |
CN110635941A (zh) | 一种数据库节点集群故障迁移方法与装置 | |
CN108512753B (zh) | 一种集群文件系统中消息传输的方法及装置 | |
CN107046474B (zh) | 一种服务集群 | |
KR101075462B1 (ko) | 서브넷에서 마스터 노드를 선출하는 방법 | |
CN111752488A (zh) | 存储集群的管理方法、装置、管理节点及存储介质 | |
CN115277379B (zh) | 分布式锁容灾处理方法、装置、电子设备及存储介质 | |
CN113765690A (zh) | 集群切换方法、系统、装置、终端、服务器及存储介质 | |
CN110351122B (zh) | 容灾方法、装置、系统与电子设备 | |
CN110661836B (zh) | 消息路由方法、装置及系统、存储介质 | |
CN113055203A (zh) | Sdn控制平面的异常恢复方法及装置 | |
CN107819591B (zh) | 数据同步方法、装置、系统和网络设备 | |
CN114124803B (zh) | 设备管理方法、装置、电子设备及存储介质 | |
CN112104531B (zh) | 一种备份实现方法及装置 | |
Sakic et al. | Decoupling of distributed consensus, failure detection and agreement in sdn control plane | |
US20200296607A1 (en) | Channel establishment method and base station | |
CN112367373B (zh) | 分布式系统的节点确定方法和装置及存储介质 | |
CN114301763A (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 |