CN115277114B - 分布式锁处理方法、装置、电子设备及存储介质 - Google Patents
分布式锁处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115277114B CN115277114B CN202210799772.0A CN202210799772A CN115277114B CN 115277114 B CN115277114 B CN 115277114B CN 202210799772 A CN202210799772 A CN 202210799772A CN 115277114 B CN115277114 B CN 115277114B
- Authority
- CN
- China
- Prior art keywords
- service
- target
- packet
- new
- 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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- 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/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种分布式锁处理方法、装置、电子设备及存储介质,该方法应用于分布式锁服务集群的管理设备中,所述分布式锁服务集群包括多个服务节点,每个所述服务节点配置有多个服务分组和多个冗余分组,包括:响应于对目标秘钥的迁移指令,将目标秘钥从目标服务分组迁移至目标冗余分组;获取目标秘钥待迁移到的新集群信息,新集群信息包括多个新的服务节点的服务节点信息;根据服务节点信息,启动多个新的服务节点,基于启动的新的服务节点对目标冗余分组进行扩容处理和缩容处理;将目标冗余分组所归属的集群由初始分布式锁服务集群更新为新集群。本发明实现了将目标秘钥从初始分布式锁服务集群中迁移到了新集群中。
Description
技术领域
本发明涉及分布式系统技术领域,尤其涉及一种分布式锁处理方法、装置、电子设备及存储介质。
背景技术
WLock是一种分布式锁服务,主要解决分布式环境下运行多进程、多线程对共享资源的互斥访问,协调他们对共享资源的访问调度。WLock通过Multi-Paxos算法实现高可靠、高性能的服务质量,提供了可重入锁、公平锁、带权重优先级锁等多种锁类型。目前WLock同一个客户端秘钥所有锁操作发送到同一个服务节点的同一个分组下,锁最大并发受限于单个分组的并发能力,一旦一个秘钥并发出现突增或者其他异常,就会影响到同一个分组下的其他业务锁请求。
在一个秘钥的流量较高时,通过Redis、Zookeeper等实现的分布式锁,常用的解决方案是通过集群扩容来提高集群的吞吐量。但是,这种方式是提高整个集群的容量,所有分组共用该集群的容量,一个秘钥流量过高时,还是会影响到其他分组下的请求。
发明内容
本发明实施例提供一种分布式锁处理方法、装置、电子设备及存储介质,以实现对秘钥的迁移,避免对其他分组造成影响。
依据本发明实施例的第一方面,提供了一种分布式锁处理方法,应用于分布式锁服务集群的管理设备中,所述分布式锁服务集群包括多个服务节点,每个所述服务节点配置有多个服务分组和多个冗余分组,任意两个服务节点配置的服务分组相同,任意两个服务节点配置的冗余分组相同,所述方法包括:
响应于对目标秘钥的迁移指令,将所述目标秘钥从目标服务分组迁移至与所述目标服务分组对应的目标冗余分组,所述目标秘钥是目标客户端的标识,所述目标客户端基于所述目标秘钥调用分布式锁服务,所述目标服务分组和所述目标冗余分组归属于初始分布式锁服务集群中的多个初始服务节点;
获取所述目标秘钥待迁移到的新集群信息,所述新集群信息包括多个新的服务节点所对应的服务节点信息,所述新的服务节点是当前未提供分布式锁服务的节点;
根据所述服务节点信息,启动多个所述新的服务节点,基于启动的所述新的服务节点对所述目标冗余分组进行扩容处理和缩容处理;
将所述目标冗余分组所归属的集群由所述初始分布式锁服务集群更新为所述新的集群信息所对应的新集群。
依据本发明实施例的第二方面,提供了一种分布式锁处理装置,应用于分布式锁服务集群的管理设备中,所述分布式锁服务集群包括多个服务节点,每个所述服务节点配置有多个服务分组和多个冗余分组,任意两个服务节点配置的服务分组相同,任意两个服务节点配置的冗余分组相同,所述装置包括:
秘钥正向迁移模块,用于响应于对目标秘钥的迁移指令,将所述目标秘钥从目标服务分组迁移至与所述目标服务分组对应的目标冗余分组,所述目标秘钥是目标客户端的标识,所述目标客户端基于所述目标秘钥调用分布式锁服务,所述目标服务分组和所述目标冗余分组归属于初始分布式锁服务集群中的多个初始服务节点;
新集群信息获取模块,用于获取所述目标秘钥待迁移到的新集群信息,所述新集群信息包括多个新的服务节点所对应的服务节点信息,所述新的服务节点是当前未提供分布式锁服务的节点;
分组扩缩容模块,用于根据所述服务节点信息,启动多个所述新的服务节点,基于启动的所述新的服务节点对所述目标冗余分组进行扩容处理和缩容处理;
集群拆分模块,用于将所述目标冗余分组所归属的集群由所述初始分布式锁服务集群更新为所述新的集群信息所对应的新集群。
依据本发明实施例的第三方面,提供了一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的分布式锁处理方法的步骤。
依据本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的分布式锁处理方法的步骤。
本发明实施例提供的分布式锁处理方法、装置、电子设备及存储介质,通过响应于对目标秘钥的迁移指令,将目标秘钥从目标服务分组迁移至与目标服务分组对应的目标冗余分组,获取目标秘钥待迁移到的新集群信息,根据新集群信息中的服务节点信息,启动多个新的服务节点,对目标冗余分组进行多个新的服务节点的扩容处理,并对目标冗余分组进行多个初始服务节点的缩容处理,将目标冗余分组所归属的集群由初始分布式锁服务集群更新为新的集群信息所对应的新集群,实现了基于目标冗余分组将目标秘钥从初始分布式锁服务集群中迁移到了新集群中,解决了基于Multi-Paxos算法实现分布式锁的场景下锁平滑迁移的问题,避免了目标秘钥流量过高时对其他分组服务造成影响,而且迁移过程中也不会影响到同一分组下的其他秘钥。
附图说明
图1是本发明实施例提供的一种分布式锁处理方法的流程图;
图2是本发明实施例中分布式锁服务系统的架构图;
图3a-图3c是本发明实施例中目标秘钥从目标服务分组迁移至目标冗余分组的示意图;
图4a-图4d是本发明实施例中对目标冗余分组进行扩缩容的示意图;
图5是本发明实施例中秘钥迁移过程的示意图;
图6是本发明实施例中的一种分布式锁服务集群的结构示意图;
图7是本发明实施例提供的一种分布式锁处理装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种分布式锁处理方法的流程图,该分布式锁处理方法应用于分布式锁服务集群的管理设备中,所述分布式锁服务集群包括多个服务节点,优选是包括至少三个服务节点,保证分布式锁服务的高可用性,每个所述服务节点配置有多个服务分组和多个冗余分组,任意两个服务节点配置的服务分组相同,任意两个服务节点配置的冗余分组相同,在同一服务节点中,服务分组的数量可以与冗余分组的数量相同,每一服务分组对应一冗余分组。在一个分布式锁服务集群中,每个服务节点分别作为不同服务分组的主节点,不同服务分组的主节点在多个服务节点中均匀分布,也就是每个服务节点作为主节点的服务分组数量相同,例如分布式锁服务集群中有A、B、C三个服务节点,有服务分组1、服务分组2、服务分组3三个分组,服务分组1的主节点为A,服务分组2的主节点为B,服务分组3的主节点为B;由于冗余分组与服务分组对应,与服务分组对应的冗余分组的主节点与服务分组的主节点是同一服务节点。其中,分布式锁服务集群是基于Paxos协议的,所述服务分组和冗余分组均为Paxos分组。服务分组用于提供锁操作服务,一个服务节点中的多个服务分组可以并行进行数据处理。冗余分组用于进行秘钥迁移,秘钥是客户端的标识,客户端基于自己的秘钥调用分布式锁服务。
图2是本发明实施例中分布式锁服务系统的架构图,如图2所示,分布式锁服务系统包括管理设备21、多个分布式锁服务集群22(图2中以两个集群为例),管理设备可以提供Web客户端23,供管理人员操作。每个分布式锁服务集群22中包括多个服务节点(图2中以三个服务节点为例),集群1中包括服务节点S11、S12、S13,集群2中包括服务节点S21、S22、S23。在一个分布式锁服务集群的每个服务节点中配置了多个服务分组(图2中以三个服务分组为例)和多个冗余分组(图2中以三个冗余分组为例),如图2所示,分组1-分组3为服务分组,即提供锁服务的分组,分组4-分组6为冗余分组,用于作为秘钥迁移的分组,服务分组与冗余分组的迁移对应关系可以是固定的,即分组1向分组4进行秘钥迁移,分组2向分组5进行秘钥迁移,分组3向分组6进行秘钥迁移,也就是说,与服务分组对应的冗余分组的ID为该服务分组的ID与服务分组数量之和。
如图1所示,该分布式锁处理方法包括:
步骤110,响应于对目标秘钥的迁移指令,将所述目标秘钥从目标服务分组迁移至与所述目标服务分组对应的目标冗余分组,所述目标秘钥是目标客户端的标识,所述目标客户端基于所述目标秘钥调用分布式锁服务,所述目标服务分组和所述目标冗余分组归属于初始分布式锁服务集群中的多个初始服务节点。
在活动或促销时,目标秘钥的流量会出现突增,比如从平时的100QPS达到上千QPS;或者,锁操作请求出现异常导致所有的锁操作请求均失败,或者,目标客户端出现问题,导致目标客户端一致在发送锁操作请求,使得目标秘钥的流量突增。在目标秘钥的流量突增,即目标秘钥的流量超过流量阈值时,目标秘钥的流量会影响到其他分组的服务,这时为了避免目标秘钥影响其他分组的服务,可以将目标秘钥从初始分布式锁服务集群迁移至一个新的分布式锁服务集群中。
管理人员在发现目标秘钥出现流量突增或者其他问题时,可以操作Web客户端给出对目标秘钥的迁移指令,Web客户端将对目标秘钥的迁移指令发送至管理设备,管理设备接收到对目标秘钥的迁移指令;或者,管理设备还可以监控目标秘钥的流量,在目标秘钥的流量超过流量阈值时,触发对目标秘钥的迁移,确定接收到对目标秘钥的迁移指令。
在管理设备接收到对目标秘钥的迁移指令时,管理设备对目标秘钥进行迁移,将目标秘钥从目标秘钥初始所在的目标服务分组迁移至与目标服务分组对应的目标冗余分组,目标秘钥所在的初始分布式锁服务集群中的主节点基于管理设备的秘钥迁移操作,向该集群中其他初始服务节点发送秘钥迁移操作的Propose请求,使得该集群中的各个初始服务节点将目标秘钥从目标服务分组迁移至目标冗余分组。
在将目标秘钥从目标服务分组迁移至目标冗余分组后,通知目标客户端,使得目标客户端在发送锁操作请求时发送至目标冗余分组。
在本发明的一个实施例中,将所述目标秘钥从目标服务分组迁移至与所述目标服务分组对应的目标冗余分组,包括:在进入迁移开始状态后,向所述目标服务分组中的主节点发送所述目标秘钥的迁移开始状态信息,所述主节点用于向所述目标服务分组中的从节点发送所述迁移开始状态信息,在迁移过程中,所述目标服务分组将接收到的锁操作请求转发至所述目标冗余分组;在进入迁移安全状态后,将所述目标服务分组的主节点确定为所述目标冗余分组的主节点;向所述目标秘钥所对应的目标客户端发送分组变更指令,所述分组变更指令用于指示所述目标客户端将所使用的分组由所述目标服务分组切换为所述目标冗余分组。
管理人员可以通过Web客户端控制目标秘钥的迁移状态,管理设备接收到Web客户端发送的迁移开始状态指令后,确定进入迁移开始状态,管理设备向目标服务分组中的主节点发送目标秘钥的迁移开始状态信息,目标服务分组的主节点向从节点发起Propose,以更新秘钥迁移状态为迁移开始状态,之后进行迁移过程,在迁移过程中,目标服务分组将目标客户端发送来的锁操作请求转发至目标冗余分组,由目标冗余分组对锁操作请求进行处理。
锁操作请求通过转发方式切换到目标冗余分组之后进入迁移安全状态,开启目标冗余分组的主节点(master)选举机制,保证将目标服务分组的主节点选举为目标冗余分组的主节点,并且为了避免主节点漂移,这个过程中关闭主节点负载均衡机制。其中,主节点负载均衡机制是集群内每个服务节点作为主节点的分组数量基本一致的策略,主节点负载均衡是为了保证每个分组都有一个主节点,例如,有三个服务节点A、B、C,9个分组1、2、3、4、5、6、7、8、9,服务节点A分别作为分组1、2、3的主节点,服务节点B分别作为分组4、5、6的主节点,服务节点C分别作为分组7、8、9的主节点,达到了主节点负载均衡,如果服务节点A挂掉,原分组1、2、3的主节点漂移到服务节点B,使用主节点负载均衡机制,服务节点A在重启后,会重新夺取到分组1、2、3的主节点。本发明实施例为了避免在迁移过程中出现主节点漂移和夺取的问题,所以需要关闭主节点负载均衡机制。
在迁移安全状态的操作执行成功后,管理设备向目标客户端下发分组变更指令,目标客户端将使用的分组由目标服务分组切换为目标冗余分组,完成了目标秘钥的正向迁移。
图3a-图3c是本发明实施例中目标秘钥从目标服务分组迁移至目标冗余分组的示意图,如图3a-图3c所示,分组1、分组2、分组3是服务分组,分组4、分组5、分组6是冗余分组,分组3为目标服务分组,分组6为目标冗余分组。如图3a所示,在目标秘钥迁移前,目标客户端将锁操作请求发送至分组3,并由分组3进行锁操作请求的处理;如图3b所示,在迁移开始状态,目标客户端将锁操作请求发送至分组3,分组3将锁操作请求转发至分组6,由分组6进行锁操作请求的处理;如图3c所示,在迁移结束状态,目标客户端将所使用的分组由分组3切换为分组6。
通过在秘钥迁移过程中,由目标服务分组将目标客户端的锁操作请求转发至目标冗余分组,实现了在目标客户端无感知的情况下进行秘钥迁移。
在本发明的一个实施例中,所述目标服务分组将接收到的锁操作请求转发至目标冗余分组后,目标冗余分组中的状态机在确定所述锁操作请求所对应的请求标识大于或等于所述目标服务分组在开始迁移时的请求标识的最大值,确定所述迁移开始状态执行成功。
目标服务分组在处理目标客户端的锁操作请求时,目标服务分组中的主节点基于锁操作请求向从节点发送Propose请求,每发送一次Propose请求就会记录该Propose请求的请求标识instanceId,instanceId是在目标服务分组内递增的,请求标识instanceId与锁操作请求也是对应的。目标服务分组将锁操作请求转发至目标冗余分组后,目标冗余分组中的主节点基于锁操作请求向从节点发送Propose请求,每发送一次Propose请求就会记录该Propose请求的请求标识instanceId,目标冗余分组中的第一个Propose请求会同步分组(group)版本,即同步目标服务分组当前最大的请求标识instanceId。目标冗余分组中的状态机在确定目标服务分组转发来的锁操作请求对应的请求标识大于或等于目标服务分组在开始迁移时的最大值(即sourceGroupMasxInstanceId)时,确定迁移开始状态执行成功,这样可以保证当前迁移的目标秘钥在目标服务分组和目标冗余分组这两个分组中的锁操作是串行执行的,可以避免遗漏掉未被处理的锁操作请求。
在本发明的一个实施例中,在进入迁移开始状态后,向所述目标服务分组中的主节点发送所述目标秘钥的迁移开始状态信息之前,还包括:响应于对目标秘钥的迁移指令,从数据库中获取待迁移的所述目标秘钥、目标服务分组的分组信息以及所述目标服务分组中的多个初始服务节点的节点信息;在进入迁移准备状态后,向所述目标服务分组中的主节点发送所述目标秘钥的迁移准备状态信息,所述主节点用于向所述目标服务分组中的从节点发送所述迁移准备状态信息。
其中,所述分组信息可以包括分组标识以及主节点标识,节点信息可以是节点标识,例如可以是IP地址。
管理人员在Web客户端中指定待迁移的目标秘钥、目标服务分组的分组信息以及目标服务分组中的多个初始服务节点的节点信息,Web客户端将目标秘钥、目标服务分组的分组信息以及目标服务分组中的多个初始服务节点的节点信息存储至数据库中,完成迁移的初始化。迁移初始化完成后,Web客户端将对目标秘钥的迁移指令发送至管理设备,管理设备接收到对目标秘钥的迁移指令后,从数据库中获取出待迁移的目标秘钥所对应的目标服务分组的分组信息以及目标服务分组中的多个初始服务节点的节点信息,后续进入迁移装备状态后,管理设备基于分组信息和节点信息,向目标服务分组中的主节点发送目标秘钥的迁移准备状态信息,目标服务分组中的主节点接收到迁移准备状态信息后,向目标服务分组中的从节点发起携带迁移准备信息的Propose,目标服务分组中的各个节点更新秘钥迁移状态并持久化存储到本地磁盘中,使得目标服务分组中的各个节点了解到待迁移的目标秘钥,并做好迁移准备。
步骤120,获取所述目标秘钥待迁移到的新集群信息,所述新集群信息包括多个新的服务节点所对应的服务节点信息,所述新的服务节点是当前未提供分布式锁服务的节点。
其中,服务节点信息可以是服务节点的标识信息,如可以是IP地址。
管理人员可以通过Web客户端指定目标秘钥待迁移到的新集群信息,管理设备在接收到Web客户端发送的目标秘钥待迁移到的新集群信息后,可以校验该新集群信息所对应新集群中多个新的服务节点是否是当前未提供分布式锁服务的节点,如果新集群中多个新的服务节点是当前未提供分布式锁服务的节点,则可以将该新集群信息作为目标秘钥待迁移到的新集群信息,如果新集群中多个新的服务节点不是当前未提供分布式锁服务的节点,则可以提示管理人员重新指定新集群信息。
除了上述管理人员通过Web客户端指定新集群信息外,管理设备还可以基于已经注册的集群信息,从中筛选出当前未提供分布式锁服务的集群,将该集群的集群信息作为目标秘钥待迁移到的新集群信息。
步骤130,根据所述服务节点信息,启动多个所述新的服务节点,基于启动的所述新的服务节点对所述目标冗余分组进行扩容处理和缩容处理。
根据服务节点信息,对目标冗余分组下的服务节点进行扩缩容处理,即启动多个新的服务节点,并将多个新的服务节点添加至目标冗余分组中,将初始服务节点从目标冗余分组中删除,使得多个新的服务节点中的目标冗余分组来承接目标秘钥的分布式锁服务。
在本发明的一个实施例中,根据所述服务节点信息,启动多个所述新的服务节点,基于启动的所述新的服务节点对所述目标冗余分组进行扩容处理和缩容处理,包括:
根据所述服务节点信息,启动多个所述新的服务节点中的一个新的服务节点;
在所述目标冗余分组中添加启动的所述新的服务节点,作为所述目标冗余分组的一个新的从节点,所述目标冗余分组中的主节点向目标冗余分组中的初始从节点和所述新的从节点发送分组成员变更请求;
在所述目标冗余分组中删除一个所述初始从节点,所述主节点向其他初始从节点和所述新的从节点发送分组成员变更请求;
循环执行启动新的服务节点、在所述目标冗余分组中添加新的服务节点和删除初始从节点的操作,直至将所述多个新的服务节点全部添加至所述目标冗余分组,删除所述目标冗余分组中的主节点。
根据服务节点信息,首先启动多个新的服务节点中的一个新的服务节点;之后在目标冗余分组中进行该新的服务节点的扩容处理,即在目标冗余分组中添加启动的新的服务节点,作为目标冗余分组的一个新的从节点,每个服务节点定时从管理设备拉取自身配置信息,自身配置信息包括节点标识、分组标识以及每个分组标识下的分组成员列表,目标冗余分组中的主节点基于该分组标识下的分组成员列表确定添加了一个新的从节点时,向目标冗余分组中的初始从节点和新的从节点发起携带分组成员变更的Propose请求,使得目标冗余分组中的各节点进行分组成员的变更,在各节点中均添加新的从节点信息;最后,在目标冗余分组中进行一个初始从节点的缩容处理,即在目标冗余分组中删除一个初始从节点,每个服务节点定时从管理设备拉取自身配置信息,自身配置信息包括节点标识、分组标识以及每个分组标识下的分组成员列表,目标冗余分组中的主节点基于该分组标识下的分组成员列表确定删除了一个初始从节点时,向目标冗余分组中的初始从节点和新的从节点发起携带分组成员变更的Propose请求,使得目标冗余分组中的各节点进行分组成员的变更,在各节点中均删除该初始从节点的信息;经过上述处理,完成了一个新的节点扩容和初始从节点的缩容过程,循环执行上述过程,直至将多个新的服务节点全部添加至目标冗余分组,最后将目标冗余分组中的主节点删除,使得目标冗余分组中的节点全部是新的服务节点。
图4a-图4d是本发明实施例中对目标冗余分组进行扩缩容的示意图。如图4a所示,在扩缩容前目标冗余分组中的节点为节点1、节点2和节点3,主节点为节点3;如图4b所示,经过一次扩容后,目标冗余分组中添加了节点4,进行一次缩容后,目标冗余分组中删除了节点1,这样经过一次扩缩容,目标冗余分组中的节点为节点4、节点2和节点3;如图4c所示,经过第二次扩容后,目标冗余分组中添加了节点5,进行第二次缩容后,目标冗余分组中删除了节点2,这样经过两次扩缩容,目标冗余分组中的节点为节点4、节点5和节点3;如图4d所示,经过第三次扩容后,目标冗余分组中添加了节点6,进行第三次缩容后,目标冗余分组中删除了作为主节点的节点3,这样经过三次扩缩容,目标冗余分组中的节点为节点4、节点5和节点6,这样将秘钥迁移到了新的节点中。
通过扩缩容交叉处理并最后缩容掉主节点,保证对目标冗余分组扩缩容的准确性,可以避免对目标秘钥的分布式锁服务造成影响,避免破坏分组中数据的一致性。
在本发明的一个实施例中,根据所述服务节点信息,启动多个所述新的服务节点中的一个新的服务节点,包括:根据所述服务节点信息,从多个所述新的服务节点中选取数据库中没有记录启动时间的新的服务节点,并启动所选取的新的服务节点;
在本发明的一个实施例中,所述方法还包括:
在目标冗余分组中添加新的服务节点或删除初始从节点时,记录目标冗余分组中服务节点的节点标识、分组标识和分组成员列表的对应关系;
响应于目标冗余分组中服务节点的配置获取请求,将所述对应关系发送至服务节点,使得所述目标冗余分组中的主节点接收到所述对应关系后,向目标冗余分组中的初始从节点和新的从节点发送分组成员变更请求。
管理设备在目标冗余分组中添加新的服务节点或删除初始从节点时,即每一次扩缩容操作都记录目标冗余分组中服务节点的节点标识、分组标识和分组成员列表的对应关系,这样管理设备基于服务节点定时发送的配置获取请求,从记录中获取该服务节点的节点标识、分组标识和分组成员列表的对应关系,并将该对应关系发送至服务节点,目标冗余分组的主节点在接收到节点标识、分组标识和分组成员列表的对应关系后,从分组成员列表中确定初始从节点和新的从节点,并向初始从节点和新的从节点发送分组成员变更请求,保证各节点记录分组成员的一致性。通过记录节点标识、分组标识和分组成员列表的对应关系,该对应关系也就是在迁移过程中的配置信息,在不同的迁移状态下,基于节点标识将对应关系发送至相应的服务节点,实现在不同的迁移状态下不同的服务节点拉取到的配置信息不同。
步骤140,将所述目标冗余分组所归属的集群由所述初始分布式锁服务集群更新为所述新的集群信息所对应的新集群。
经过对目标冗余分组下的服务节点进行扩缩容处理后,目标冗余分组中的服务节点均是新的服务节点,不再有初始服务节点,这时将目标冗余分组从初始分布式锁服务集群中拆分出来,拆分为一个新集群,即将目标冗余分组所归属的集群由初始分布式锁服务集群更新为新的集群信息所对应的新集群。
本实施例提供的分布式锁处理方法,通过响应于对目标秘钥的迁移指令,将目标秘钥从目标服务分组迁移至与目标服务分组对应的目标冗余分组,获取目标秘钥待迁移到的新集群信息,根据新集群信息中的服务节点信息,启动多个新的服务节点,对目标冗余分组进行多个新的服务节点的扩容处理,并对目标冗余分组进行多个初始服务节点的缩容处理,将目标冗余分组所归属的集群由初始分布式锁服务集群更新为新的集群信息所对应的新集群,实现了基于目标冗余分组将目标秘钥从初始分布式锁服务集群中迁移到了新集群中,解决了基于Multi-Paxos算法实现分布式锁的场景下锁平滑迁移的问题,避免了目标秘钥流量过高时对其他分组服务造成影响,而且迁移过程中也不会影响到同一分组下的其他秘钥。
在上述技术方案的基础上,在所述将所述目标冗余分组所归属的集群由所述初始分布式锁服务集群更新为所述新的集群信息所对应的新集群之后,还包括:将所述目标秘钥从所述目标冗余分组迁移至所述新集群中与所述目标冗余分组所对应的新的服务分组中。
上述将目标秘钥从目标服务分组迁移至目标冗余分组的过程是秘钥正向迁移过程,而此处将目标秘钥从目标冗余分组迁移至新集群中新的服务分组的过程是秘钥逆向迁移过程,秘钥逆向迁移过程与秘钥正向迁移过程类似。
在一个实施例中,将所述目标秘钥从所述目标冗余分组迁移至所述新集群中与所述目标冗余分组所对应的新的服务分组中,可以包括:
响应于对目标秘钥的再次迁移指令,从数据库中获取待迁移的所述目标秘钥、目标冗余分组的分组信息以及所述目标冗余分组中的多个新的服务节点的节点信息;
在进入迁移准备状态后,向所述目标冗余分组中的主节点发送所述目标秘钥的迁移准备状态信息,所述主节点用于向所述目标冗余分组中的从节点发送所述迁移准备状态信息;
在进入迁移开始状态后,向所述目标冗余分组中的主节点发送所述目标秘钥的迁移开始状态信息,所述主节点用于向所述目标冗余分组中的从节点发送所述迁移开始状态信息,在迁移过程中,所述目标冗余分组将接收到的锁操作请求转发至所述新的服务分组;
在进入迁移安全状态后,将所述目标冗余分组的主节点确定为所述新的服务分组的主节点;
向所述目标秘钥所对应的目标客户端发送分组变更指令,所述分组变更指令用于指示所述目标客户端将所使用的分组由所述目标冗余分组切换为所述新的服务分组。
上述各步骤的具体内容同上述秘钥正向迁移过程,这里不再赘述。
图5是本发明实施例中秘钥迁移过程的示意图,如图5所示,在集群1和集群2中,分组1-分组3为服务分组,分组4-分组6为冗余分组,秘钥迁移前,初始服务节点S11为分组4的主节点,在秘钥迁移前是集群1中的分组1提供目标秘钥的分布式锁服务,在进行迁移过程中,将目标秘钥从集群1中的分组1迁移至分组4,实现秘钥正向迁移;对分组4进行扩缩容,使得分组4中添加了新的服务节点S21、S22和S33,并删除了集群1中的初始服务节点S11、S12、S13;将分组4从集群1拆分至集群2中,即更新分组4所归属的集群由集群1更新为集群2;最后将目标秘钥从集群2中的分组4迁移至分组1中,实现秘钥逆向迁移,之后由集群2中的分组1提供目标秘钥的分布式锁服务。这样将目标秘钥从集群1中迁移到新的集群2中,之后目标客户端的锁操作请求会发送至集群2中新的服务分组1的主节点S21中,避免了在目标秘钥流量过高时对其他分组造成影响。
图6是本发明实施例中的一种分布式锁服务集群的结构示意图,如图6所示,该分布式锁服务集群包括:
由多台服务器61(图6中仅示出三台服务器61,但不限于三台)中的服务模块组成的多个一致性算法服务集群62(图6中仅示出三个一致性算法服务集群62,但不限于三个);以及
由多台所述服务器61中的冗余模块组成的多个一致性算法冗余集群63(图6中仅示出三个一致性算法冗余集群63,但不限于三个);
其中,每台所述服务器作为一个所述服务节点,且每台所述服务器中均设置有多个所述服务模块和多个所述冗余模块,每一一致性算法服务集群62对应一一致性算法冗余集群63;每一一致性算法服务集群62分别包括每台所述服务器中的一个所述服务模块,且不同的所述一致性算法服务集群中的所述服务模块不同,同一服务器中的不同服务模块对应配置于不同的服务分组,且配置于同一服务分组的服务模块组成一个一致性算法服务集群62;每一所述一致性算法冗余集群63分别包括每台服务器61中的一个所述冗余模块,且不同的一致性算法冗余集群中的所述冗余模块不同,同一服务器61中的不同冗余模块对应配置于不同的冗余分组,且配置于同一冗余分组的冗余模块组成一个一致性算法冗余集群63。
一般情况下,所述多个一致性算法服务集群62中作为主节点的所述服务模块均匀分布在多台服务器61中,所述一致性算法冗余集群63中作为主节点的冗余模块与所对应的一致性算法服务集群62中作为主节点的服务模块一般位于同一台服务器61中。作为服务分组的一致性算法服务集群62用于提供分布式锁服务,作为冗余分组的一致性算法冗余集群63用于进行秘钥迁移。
服务器61可以为硬件电子设备,服务器61中的多个服务模块可以为该硬件电子设备中由软件实现的服务器。这里,针对每台服务器61,各个服务模块相互之间相互独立,即独立运行,并行工作。可以理解的是,在每台服务器61中均设置有多个服务模块的情况下,可以分别选取每台服务器61中的一个服务模块组成一个一致性算法服务集群62,进而得到多个一致性算法服务集群62。这里,各一致性算法服务集群62中不存在相同的服务模块,因此,各一致性算法服务集群62相互之间可以独立运行,每一一致性算法服务集群62只需处理自己接收到的锁操作请求即可。其中,一致性算法冗余集群63中冗余模块的配置方式与一致性算法服务集群62中服务模块的配置方式类似,不再赘述。
在一致性算法服务集群62中组成其的各服务模块可以视为各节点,由于一致性算法服务集群62包括一个主节点和若干个从节点,因此,一致性算法服务集群62中存在一个服务模块作为主节点,剩余服务模块作为从节点。
本发明实施例中,由多台服务器61中的服务模块组成的多个一致性算法服务集群62,在锁操作请求的并发量较大的情况下,通过多个一致性算法服务集群62中作为主节点的服务模块分别接收具有不同锁标识的锁操作请求,进而分别利用每个一致性算法服务集群62分别对其接收到的锁操作请求进行处理,实现了对锁操作请求的并行处理,提升了处理效率。
在上述技术方案的基础上,根据所述服务节点信息,启动多个所述新的服务节点,基于启动的所述新的服务节点对所述目标冗余分组进行扩容处理和缩容处理,包括:
根据所述服务节点信息,启动多个所述新的服务节点中的一个新的服务节点,并确定启动的所述新的服务节点中与所述目标冗余分组所对应的新的冗余模块;
在所述目标冗余分组中添加所述新的冗余模块,作为所述目标冗余分组的一个新的从节点,所述目标冗余分组中的主节点向目标冗余分组中的初始从节点和所述新的从节点发送分组成员变更请求;
在所述目标冗余分组中删除一个所述初始从节点,所述主节点向其他初始从节点和所述新的从节点发送分组成员变更请求;
循环执行启动新的服务节点、在所述目标冗余分组中添加新的冗余模块和删除初始从节点的操作,直至将所述多个新的服务节点中新的冗余模块全部添加至所述目标冗余分组,删除所述目标冗余分组中的主节点。
其中,所述初始从节点是初始服务节点中的服务模块,主节点是多个初始服务节点中一个初始服务节点中的服务模块,新的从节点是新的服务节点中的冗余模块。
根据服务节点信息,首先启动多个新的服务节点中的一个新的服务节点,并确定启动的新的服务节点中与目标冗余分组所对应冗余分组(即新的服务节点中与目标冗余分组相同分组标识的冗余分组)中的新的冗余模块,启动该新的冗余模块;之后在目标冗余分组中进行该新的冗余模块的扩容处理,即在目标冗余分组中添加所述新的冗余模块,作为目标冗余分组的一个新的从节点,每个服务节点定时从管理设备拉取自身配置信息,自身配置信息包括节点标识、分组标识以及每个分组标识下的分组成员列表,目标冗余分组中的主节点基于该分组标识下的分组成员列表确定添加了一个新的从节点时,向目标冗余分组中的初始从节点和新的从节点发起携带分组成员变更的Propose请求,使得目标冗余分组中的各节点进行分组成员的变更,在各节点中均添加新的从节点信息;最后,在目标冗余分组中进行一个初始从节点的缩容处理,即在目标冗余分组中删除一个初始从节点,每个服务节点定时从管理设备拉取自身配置信息,自身配置信息包括节点标识、分组标识以及每个分组标识下的分组成员列表,目标冗余分组中的主节点基于该分组标识下的分组成员列表确定删除了一个初始从节点时,向目标冗余分组中的初始从节点和新的从节点发起携带分组成员变更的Propose请求,使得目标冗余分组中的各节点进行分组成员的变更,在各节点中均删除该初始从节点的信息;经过上述处理,完成了一个新的从节点扩容和初始从节点的缩容过程,循环执行上述过程,直至将多个新的服务节点中的新的冗余模块全部添加至目标冗余分组,最后将目标冗余分组中的主节点删除,使得目标冗余分组中的节点全部是新的服务节点中新的冗余模块。
通过扩缩容交叉处理并最后缩容掉主节点,保证对目标冗余分组扩缩容的准确性,可以避免对目标秘钥的分布式锁服务造成影响,避免破坏分组中数据的一致性。
在本发明的一个实施例中,根据所述服务节点信息,启动多个所述新的服务节点中的一个新的服务节点,包括:根据所述服务节点信息,从多个所述新的服务节点中选取数据库中没有记录启动时间的新的服务节点,并启动所选取的新的服务节点;
在根据所述服务节点信息,启动多个所述新的服务节点中的一个新的服务节点之后,还包括:在数据库中记录所述新的服务节点的启动时间。
每启动一个服务节点后,在数据库中记录该服务节点的启动时间,进而在根据服务节点信息启动一个新的服务节点时,该新的服务节点必须是数据库中没有记录启动时间的服务节点,保证启动的新的服务节点确实是一个新节点,即没有提供分布式锁服务的节点。这样设置是因为分组中节点(即新的冗余模块、主节点和初始从节点)在发起第一次Propose的时候会决定自身的成员标识,如果有多个节点发起第一Propose都通过了就会发生脑裂,而通过数据库记录服务节点的第一次启动时间,每一个要添加进来的新的冗余模型所在服务节点必须是数据库中没有记录启动时间的服务节点,而原来的主节点最后缩容掉,这样就避免了在扩缩容过程中多个节点发起Propose的问题。
在本发明的一个实施例中,所述方法还包括:
在目标冗余分组中添加新的冗余模块或删除初始从节点时,记录所述冗余模块或所述初始从节点所在服务节点的节点标识、分组标识和分组成员列表的对应关系;
响应于所述冗余模块或所述初始从节点所在服务节点的配置获取请求,将所述对应关系发送至所述冗余模块或所述初始从节点所在服务节点,使得所述目标冗余分组中的主节点接收到所述对应关系后,向目标冗余分组中的初始从节点和新的从节点发送分组成员变更请求。
管理设备在目标冗余分组中添加新的冗余模块或删除初始从节点时,即每一次扩缩容操作都记录该新的冗余模块或初始从节点所在服务节点的节点标识、分组标识和分组成员列表的对应关系,这样管理设备基于服务节点定时发送的配置获取请求,从记录中获取该服务节点的节点标识、分组标识和分组成员列表的对应关系,并将该对应关系发送至服务节点,目标冗余分组的主节点基于所在服务节点接收到的节点标识、分组标识和分组成员列表的对应关系,从分组成员列表中确定初始从节点和新的从节点,并向初始从节点和新的从节点发送分组成员变更请求,保证各节点记录分组成员的一致性。通过记录节点标识、分组标识和分组成员列表的对应关系,该对应关系也就是在迁移过程中的配置信息,在不同的迁移状态下,基于节点标识将对应关系发送至相应的服务节点,实现在不同的迁移状态下不同的服务节点拉取到的配置信息不同。
图7是本发明实施例提供的一种分布式锁处理装置的结构框图,应用于分布式锁服务集群的管理设备中,所述分布式锁服务集群包括多个服务节点,每个所述服务节点配置有多个服务分组和多个冗余分组,任意两个服务节点配置的服务分组相同,任意两个服务节点配置的冗余分组相同,如图7所示,该分布式锁处理装置包括:
秘钥正向迁移模块710,用于响应于对目标秘钥的迁移指令,将所述目标秘钥从目标服务分组迁移至与所述目标服务分组对应的目标冗余分组,所述目标秘钥是目标客户端的标识,所述目标客户端基于所述目标秘钥调用分布式锁服务,所述目标服务分组和所述目标冗余分组归属于初始分布式锁服务集群中的多个初始服务节点;
新集群信息获取模块720,用于获取所述目标秘钥待迁移到的新集群信息,所述新集群信息包括多个新的服务节点所对应的服务节点信息,所述新的服务节点是当前未提供分布式锁服务的节点;
分组扩缩容模块730,用于根据所述服务节点信息,启动多个所述新的服务节点,基于启动的所述新的服务节点对所述目标冗余分组进行扩容处理和缩容处理;
集群拆分模块740,用于将所述目标冗余分组所归属的集群由所述初始分布式锁服务集群更新为所述新的集群信息所对应的新集群。
可选的,所述装置还包括:
秘钥逆向迁移模块,用于将所述目标秘钥从所述目标冗余分组迁移至所述新集群中与所述目标冗余分组所对应的新的服务分组中。
可选的,所述秘钥正向迁移模块包括:
迁移开始状态处理单元,用于在进入迁移开始状态后,向所述目标服务分组中的主节点发送所述目标秘钥的迁移开始状态信息,所述主节点用于向所述目标服务分组中的从节点发送所述迁移开始状态信息,在迁移过程中,所述目标服务分组将接收到的锁操作请求转发至所述目标冗余分组;
迁移安全状态处理单元,用于在进入迁移安全状态后,将所述目标服务分组的主节点确定为所述目标冗余分组的主节点;
迁移结束状态处理单元,用于向所述目标秘钥所对应的目标客户端发送分组变更指令,所述分组变更指令用于指示所述目标客户端将所使用的分组由所述目标服务分组切换为所述目标冗余分组。
可选的,所述目标服务分组将接收到的锁操作请求转发至目标冗余分组后,目标冗余分组中的状态机在确定所述锁操作请求所对应的请求标识大于或等于所述目标服务分组在开始迁移时的请求标识的最大值,确定所述迁移开始状态执行成功。
可选的,所述秘钥正向迁移模块还包括:
数据初始化单元,用于响应于对目标秘钥的迁移指令,从数据库中获取待迁移的所述目标秘钥、目标服务分组的分组信息以及所述目标服务分组中的多个初始服务节点的节点信息;
迁移准备状态处理单元,用于在进入迁移准备状态后,向所述目标服务分组中的主节点发送所述目标秘钥的迁移准备状态信息,所述主节点用于向所述目标服务分组中的从节点发送所述迁移准备状态信息。
可选的,所述分布式锁服务集群包括:
由多台服务器中的服务模块组成的多个一致性算法服务集群;以及
由多台所述服务器中的冗余模块组成的多个一致性算法冗余集群;
其中,每台所述服务器作为一个所述服务节点,且每台所述服务器中均设置有多个所述服务模块和多个所述冗余模块,每一所述一致性算法服务集群对应一所述一致性算法冗余集群;每一所述一致性算法服务集群分别包括每台所述服务器中的一个所述服务模块,且不同的所述一致性算法服务集群中的所述服务模块不同,同一服务器中的不同服务模块对应配置于不同的服务分组,且配置于同一服务分组的服务模块组成一个一致性算法服务集群;每一所述一致性算法冗余集群分别包括每台所述服务器中的一个所述冗余模块,且不同的所述一致性算法冗余集群中的所述冗余模块不同,同一服务器中的不同冗余模块对应配置于不同的冗余分组,且配置于同一冗余分组的冗余模块组成一个一致性算法冗余集群。
可选的,所述分组扩缩容模块包括:
节点启动单元,用于根据所述服务节点信息,启动多个所述新的服务节点中的一个新的服务节点,并确定启动的所述新的服务节点中与所述目标冗余分组所对应的新的冗余模块;
新节点扩容单元,用于在所述目标冗余分组中添加所述新的冗余模块,作为所述目标冗余分组的一个新的从节点,所述目标冗余分组中的主节点向目标冗余分组中的初始从节点和所述新的从节点发送分组成员变更请求;
初始节点缩容单元,用于在所述目标冗余分组中删除一个所述初始从节点,所述主节点向其他初始从节点和所述新的从节点发送分组成员变更请求;
循环控制单元,用于循环执行启动新的服务节点、在所述目标冗余分组中添加新的冗余模块和删除初始从节点的操作,直至将所述多个新的中新的冗余模块全部添加至所述目标冗余分组,删除所述目标冗余分组中的主节点。
可选的,所述节点启动单元具体用于:
根据所述服务节点信息,从多个所述新的服务节点中选取数据库中没有记录启动时间的新的服务节点,并启动所选取的新的服务节点;
所述分组扩缩容模块还包括:
节点启动时间记录单元,用于在数据库中记录所述新的服务节点的启动时间。
可选的,所述装置还包括:
节点配置记录模块,用于在目标冗余分组中添加新的冗余模块或删除初始从节点时,记录所述冗余模块或所述初始从节点所在服务节点的节点标识、分组标识和分组成员列表的对应关系;
节点配置发送模块,用于响应于所述冗余模块或所述初始从节点所在服务节点的配置获取请求,将所述对应关系发送至所述冗余模块或所述初始从节点所在服务节点,使得所述目标冗余分组中的主节点根据所述对应关系,向目标冗余分组中的初始从节点和新的从节点发送分组成员变更请求。
本发明实施例提供的分布式锁处理装置,用于实现本发明实施例所述的分布式锁处理方法的各步骤,装置的各模块的具体实施方式参见相应步骤,此处不再赘述。
本发明实施例提供的分布式锁处理装置,通过响应于对目标秘钥的迁移指令,将目标秘钥从目标服务分组迁移至与目标服务分组对应的目标冗余分组,获取目标秘钥待迁移到的新集群信息,根据新集群信息中的服务节点信息,启动多个新的服务节点,对目标冗余分组进行多个新的服务节点的扩容处理,并对目标冗余分组进行多个初始服务节点的缩容处理,将目标冗余分组所归属的集群由初始分布式锁服务集群更新为新的集群信息所对应的新集群,实现了基于目标冗余分组将目标秘钥从初始分布式锁服务集群中迁移到了新集群中,解决了基于Multi-Paxos算法实现分布式锁的场景下锁平滑迁移的问题,避免了目标秘钥流量过高时对其他分组服务造成影响,而且迁移过程中也不会影响到同一分组下的其他秘钥。
优选的,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述分布式锁处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述分布式锁处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种分布式锁处理方法,其特征在于,应用于分布式锁服务集群的管理设备中,所述分布式锁服务集群包括多个服务节点,每个所述服务节点配置有多个服务分组和多个冗余分组,任意两个服务节点配置的服务分组相同,任意两个服务节点配置的冗余分组相同,所述方法包括:
响应于对目标秘钥的迁移指令,将所述目标秘钥从目标服务分组迁移至与所述目标服务分组对应的目标冗余分组,所述目标秘钥是目标客户端的标识,所述目标客户端基于所述目标秘钥调用分布式锁服务,所述目标服务分组和所述目标冗余分组归属于初始分布式锁服务集群中的多个初始服务节点;
获取所述目标秘钥待迁移到的新集群信息,所述新集群信息包括多个新的服务节点所对应的服务节点信息,所述新的服务节点是当前未提供分布式锁服务的节点;
根据所述服务节点信息,启动多个所述新的服务节点,基于启动的所述新的服务节点对所述目标冗余分组进行扩容处理和缩容处理;
将所述目标冗余分组所归属的集群由所述初始分布式锁服务集群更新为所述新的集群信息所对应的新集群。
2.根据权利要求1所述的方法,其特征在于,在所述将所述目标冗余分组所归属的集群由所述初始分布式锁服务集群更新为所述新的集群信息所对应的新集群之后,还包括:
将所述目标秘钥从所述目标冗余分组迁移至所述新集群中与所述目标冗余分组所对应的新的服务分组中。
3.根据权利要求1所述的方法,其特征在于,将所述目标秘钥从目标服务分组迁移至与所述目标服务分组对应的目标冗余分组,包括:
在进入迁移开始状态后,向所述目标服务分组中的主节点发送所述目标秘钥的迁移开始状态信息,所述主节点用于向所述目标服务分组中的从节点发送所述迁移开始状态信息,在迁移过程中,所述目标服务分组将接收到的锁操作请求转发至所述目标冗余分组;
在进入迁移安全状态后,将所述目标服务分组的主节点确定为所述目标冗余分组的主节点;
向所述目标秘钥所对应的目标客户端发送分组变更指令,所述分组变更指令用于指示所述目标客户端将所使用的分组由所述目标服务分组切换为所述目标冗余分组。
4.根据权利要求3所述的方法,其特征在于,所述目标服务分组将接收到的锁操作请求转发至目标冗余分组后,目标冗余分组中的状态机在确定所述锁操作请求所对应的请求标识大于或等于所述目标服务分组在开始迁移时的请求标识的最大值,确定所述迁移开始状态执行成功。
5.根据权利要求3所述的方法,其特征在于,在进入迁移开始状态后,向所述目标服务分组中的主节点发送所述目标秘钥的迁移开始状态信息之前,还包括:
响应于对目标秘钥的迁移指令,从数据库中获取待迁移的所述目标秘钥、目标服务分组的分组信息以及所述目标服务分组中的多个初始服务节点的节点信息;
在进入迁移准备状态后,向所述目标服务分组中的主节点发送所述目标秘钥的迁移准备状态信息,所述主节点用于向所述目标服务分组中的从节点发送所述迁移准备状态信息。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述分布式锁服务集群包括:
由多台服务器中的服务模块组成的多个一致性算法服务集群;以及
由多台所述服务器中的冗余模块组成的多个一致性算法冗余集群;
其中,每台所述服务器作为一个所述服务节点,且每台所述服务器中均设置有多个所述服务模块和多个所述冗余模块,每一所述一致性算法服务集群对应一所述一致性算法冗余集群;每一所述一致性算法服务集群分别包括每台所述服务器中的一个所述服务模块,且不同的所述一致性算法服务集群中的所述服务模块不同,同一服务器中的不同服务模块对应配置于不同的服务分组,且配置于同一服务分组的服务模块组成一个一致性算法服务集群;每一所述一致性算法冗余集群分别包括每台所述服务器中的一个所述冗余模块,且不同的所述一致性算法冗余集群中的所述冗余模块不同,同一服务器中的不同冗余模块对应配置于不同的冗余分组,且配置于同一冗余分组的冗余模块组成一个一致性算法冗余集群。
7.根据权利要求6所述的方法,其特征在于,根据所述服务节点信息,启动多个所述新的服务节点,基于启动的所述新的服务节点对所述目标冗余分组进行扩容处理和缩容处理,包括:
根据所述服务节点信息,启动多个所述新的服务节点中的一个新的服务节点,并确定启动的所述新的服务节点中与所述目标冗余分组所对应的新的冗余模块;
在所述目标冗余分组中添加所述新的冗余模块,作为所述目标冗余分组的一个新的从节点,所述目标冗余分组中的主节点向目标冗余分组中的初始从节点和所述新的从节点发送分组成员变更请求;
在所述目标冗余分组中删除一个所述初始从节点,所述主节点向其他初始从节点和所述新的从节点发送分组成员变更请求;
循环执行启动新的服务节点,在所述目标冗余分组中添加新的冗余模块和删除初始从节点的操作,直至将所述多个新的服务节点中新的冗余模块全部添加至所述目标冗余分组,删除所述目标冗余分组中的主节点。
8.根据权利要求7所述的方法,其特征在于,根据所述服务节点信息,启动多个所述新的服务节点中的一个新的服务节点,包括:
根据所述服务节点信息,从多个所述新的服务节点中选取数据库中没有记录启动时间的新的服务节点,并启动所选取的新的服务节点;
在根据所述服务节点信息,启动多个所述新的服务节点中的一个新的服务节点之后,还包括:
在数据库中记录所述新的服务节点的启动时间。
9.根据权利要求7所述的方法,其特征在于,还包括:
在目标冗余分组中添加新的冗余模块或删除初始从节点时,记录所述冗余模块或所述初始从节点所在服务节点的节点标识、分组标识和分组成员列表的对应关系;
响应于所述冗余模块或所述初始从节点所在服务节点的配置获取请求,将所述对应关系发送至所述冗余模块或所述初始从节点所在服务节点,使得所述目标冗余分组中的主节点根据所述对应关系,向目标冗余分组中的初始从节点和新的从节点发送分组成员变更请求。
10.一种分布式锁处理装置,其特征在于,应用于分布式锁服务集群的管理设备中,所述分布式锁服务集群包括多个服务节点,每个所述服务节点配置有多个服务分组和多个冗余分组,任意两个服务节点配置的服务分组相同,任意两个服务节点配置的冗余分组相同,所述装置包括:
秘钥正向迁移模块,用于响应于对目标秘钥的迁移指令,将所述目标秘钥从目标服务分组迁移至与所述目标服务分组对应的目标冗余分组,所述目标秘钥是目标客户端的标识,所述目标客户端基于所述目标秘钥调用分布式锁服务,所述目标服务分组和所述目标冗余分组归属于初始分布式锁服务集群中的多个初始服务节点;
新集群信息获取模块,用于获取所述目标秘钥待迁移到的新集群信息,所述新集群信息包括多个新的服务节点所对应的服务节点信息,所述新的服务节点是当前未提供分布式锁服务的节点;
分组扩缩容模块,用于根据所述服务节点信息,启动多个所述新的服务节点,对所述目标冗余分组进行多个所述新的服务节点的扩容处理,并对所述目标冗余分组进行多个所述初始服务节点的缩容处理;
集群拆分模块,用于将所述目标冗余分组所归属的集群由所述初始分布式锁服务集群更新为所述新的集群信息所对应的新集群。
11.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至9中任一项所述的分布式锁处理方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的分布式锁处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210799772.0A CN115277114B (zh) | 2022-07-08 | 2022-07-08 | 分布式锁处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210799772.0A CN115277114B (zh) | 2022-07-08 | 2022-07-08 | 分布式锁处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115277114A CN115277114A (zh) | 2022-11-01 |
CN115277114B true CN115277114B (zh) | 2023-07-21 |
Family
ID=83764089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210799772.0A Active CN115277114B (zh) | 2022-07-08 | 2022-07-08 | 分布式锁处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115277114B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109639794A (zh) * | 2018-12-10 | 2019-04-16 | 杭州数梦工场科技有限公司 | 一种有状态集群恢复方法、装置、设备及可读存储介质 |
CN110677453A (zh) * | 2019-08-15 | 2020-01-10 | 平安普惠企业管理有限公司 | 基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质 |
CN111324596A (zh) * | 2020-03-06 | 2020-06-23 | 腾讯科技(深圳)有限公司 | 数据库集群的数据迁移方法、装置及电子设备 |
CN113297168A (zh) * | 2021-02-22 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 分布式系统中数据迁移方法及装置 |
CN113297166A (zh) * | 2020-07-27 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理系统、方法以及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107105049B (zh) * | 2017-05-10 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 数据迁移方法和装置 |
-
2022
- 2022-07-08 CN CN202210799772.0A patent/CN115277114B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109639794A (zh) * | 2018-12-10 | 2019-04-16 | 杭州数梦工场科技有限公司 | 一种有状态集群恢复方法、装置、设备及可读存储介质 |
CN110677453A (zh) * | 2019-08-15 | 2020-01-10 | 平安普惠企业管理有限公司 | 基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质 |
CN111324596A (zh) * | 2020-03-06 | 2020-06-23 | 腾讯科技(深圳)有限公司 | 数据库集群的数据迁移方法、装置及电子设备 |
CN113297166A (zh) * | 2020-07-27 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理系统、方法以及装置 |
CN113297168A (zh) * | 2021-02-22 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 分布式系统中数据迁移方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115277114A (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110535676B (zh) | Smf动态容灾的实现方法、装置、设备及存储介质 | |
US20200120580A1 (en) | Communication method, network device, terminal device, and system | |
US9407703B2 (en) | Connection management system, and a method for linking connection management server in thin client system | |
WO2019134648A1 (zh) | 一种控制面资源迁移的实现方法、装置及网络功能实体 | |
CN109995844B (zh) | 一种控制面资源迁移的实现方法、装置及网络功能实体 | |
CN107820043B (zh) | 视频监控系统的控制方法、装置及系统 | |
WO2011116715A2 (zh) | 一种虚拟网络迁移方法、相关装置以及系统 | |
EP3364310A1 (en) | Data processing method and device | |
JP6582445B2 (ja) | シンクライアントシステム、接続管理装置、仮想マシン稼働装置、方法、および、プログラム | |
CN111901705B (zh) | 一种olt设备的omci功能虚拟化系统 | |
CN110474802B (zh) | 设备切换方法及装置、服务系统 | |
CN113572864B (zh) | 一种数据处理方法、网元设备以及可读存储介质 | |
WO2020057445A1 (zh) | 一种通信系统、方法及装置 | |
EP2442596B1 (en) | Method and apparatus for providing distributed mobility management in a network | |
CN115134941A (zh) | 通信方法和装置 | |
US11689943B2 (en) | Network function redundancy using binding header enhancements | |
CN112492030B (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
CN105790985B (zh) | 数据倒换的方法、第一设备、第二设备及系统 | |
CN115277114B (zh) | 分布式锁处理方法、装置、电子设备及存储介质 | |
CN107306289B (zh) | 一种基于云计算的负载均衡方法及设备 | |
CN116346834A (zh) | 一种会话同步方法、装置、计算设备及计算机存储介质 | |
CN111106966B (zh) | 一种信息处理方法及装置、设备、存储介质 | |
JP2024514467A (ja) | 地理的に分散されたハイブリッドクラウドクラスタ | |
CN110110004B (zh) | 一种数据操作方法、装置和存储介质 | |
CN108123822B (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 |