CN115277712B - 分布式锁服务提供方法、装置、系统及电子设备 - Google Patents
分布式锁服务提供方法、装置、系统及电子设备 Download PDFInfo
- Publication number
- CN115277712B CN115277712B CN202210800850.4A CN202210800850A CN115277712B CN 115277712 B CN115277712 B CN 115277712B CN 202210800850 A CN202210800850 A CN 202210800850A CN 115277712 B CN115277712 B CN 115277712B
- Authority
- CN
- China
- Prior art keywords
- lock
- distributed lock
- requests
- distributed
- service
- 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
- 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
- H04L67/1012—Server selection for load balancing based on compliance of requirements or conditions with available server resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明实施例提供了一种分布式锁服务提供方法、装置、系统及电子设备。该系统包括:由至少三台服务器中的服务模块组成的多个一致性算法集群;每一所述一致性算法集群分别包括每台服务器中的一个服务模块,且不同的一致性算法集群中的服务模块不同。多个一致性算法集群通过作为主节点的服务模块分别接收具有不同锁标识的分布式锁请求;利用多个线程对接收到的分布式锁请求依次进行处理,得到目标请求;针对目标请求按照一致性算法向作为从节点的服务模块发起提案;在提案通过的情况下,获取目标请求中锁标识对应的分布式锁。在保证数据一致性的同时,实现分布式锁请求的并行处理,从而提升了吞吐量。
Description
技术领域
本发明涉及分布式技术领域,尤其涉及一种分布式锁服务提供方法、装置、系统及电子设备。
背景技术
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。假如某个时刻,数据库里面的某个商品库存为1,购买该商品的两个请求同时到来,则均可以响应请求,从而导致卖出了2个商品。然而实际库存只有1个。这就是典型的库存超卖问题。分布式锁正好可以解决这种问题。
目前,在使用到分布式锁的场景中,通常利用已有的Zookeeper实现分布式锁服务。其中,Zookeeper是一个分布式应用程序协调服务软件,其通过ZAB(Zookeeper原子广播,Zookeeper Atomic Broadcast)协议保证了分布式锁的可靠性,进而保证了数据的一致性。
然而,不管是Zookeeper还是其他提供分布式锁服务的装置,虽然可以保证数据的一致性,但其运行机制导致了在分布式锁请求大量并发的情况下,很容易产生阻塞,这就造成了现有提供分布式锁服务的装置吞吐量较低的问题。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的分布式锁服务提供方法、装置、系统及电子设备。
第一方面,本发明实施例提供了一种分布式锁服务提供系统,所述系统包括:
由至少三台服务器中的服务模块组成的多个一致性算法集群;
其中,每台所述服务器中均设置有多个所述服务模块,每一所述一致性算法集群分别包括每台所述服务器中的一个所述服务模块,且不同的所述一致性算法集群中的所述服务模块不同;
所述多个一致性算法集群,用于通过作为主节点的所述服务模块分别接收具有不同锁标识的分布式锁请求,其中,具有相同锁标识的所述分布式锁请求被同一所述服务模块接收;
每一所述一致性算法集群,还用于在作为主节点的所述服务模块中利用多个线程对接收到的所述分布式锁请求依次进行处理,得到目标请求;其中,具有相同锁标识的所述分布式锁请求位于同一线程中,所述目标请求为锁标识对应的分布式锁未被占用的分布式锁请求;
每一所述一致性算法集群,还用于在作为主节点的所述服务模块中,针对所述目标请求按照一致性算法向作为从节点的所述服务模块发起提案;
每一所述一致性算法集群,还用于在作为主节点的所述服务模块中,在针对所述目标请求的提案通过的情况下,获取所述目标请求中锁标识对应的分布式锁。
可选地,所述多个一致性算法集群的作为主节点的所述服务模块均匀分布在所述至少三台服务器中。
可选地,所述系统还包括:设置于业务服务器内的路由模块;
其中,所述路由模块,用于获取所述业务服务器生成的分布式锁请求,并根据所述分布式锁请求中的锁标识,向多个所述一致性算法集群中作为主节点的所述服务模块发送所述分布式锁请求,且具有相同锁标识的所述分布式锁请求向同一所述服务模块发送。
可选地,所述系统还包括:注册服务器;
所述注册服务器,用于获取作为主节点的所述服务模块在所述至少三台服务器中的分布信息,并将所述分布信息发送至所述业务服务器;
所述业务服务器,具体用于根据所述分布式锁请求中的锁标识,确定接收所述分布式锁请求的所述一致性算法集群,基于所述分布信息,将所述分布式锁请求发送至所述一致性算法集群的作为主节点的所述服务模块。
可选地,在所述一致性算法为Paxos算法,且所述目标请求的数量为多个的情况下,所述一致性算法集群,具体用于在作为主节点的所述服务模块中,针对多个所述目标请求按照Paxos算法向作为从节点的所述服务模块发起批量提案。
第二方面,本发明实施例还提供一种分布式锁服务提供方法,应用于由至少三台服务器中的服务模块组成的多个一致性算法集群,所述方法包括:
通过多个一致性算法集群中作为主节点的所述服务模块分别接收具有不同锁标识的分布式锁请求,其中,具有相同锁标识的所述分布式锁请求被同一所述服务模块接收;
在每一作为主节点的所述服务模块中利用多个线程对接收到的所述分布式锁请求依次进行处理,得到目标请求;其中,具有相同锁标识的所述分布式锁请求位于同一线程中,所述目标请求为锁标识对应的分布式锁未被占用的所述分布式锁请求;
在每一作为主节点的所述服务模块中,针对所述目标请求按照一致性算法向作为从节点的服务模块发起提案;
在每一作为主节点的所述服务模块中,在针对所述目标请求的提案通过的情况下,获取所述目标请求中锁标识对应的分布式锁。
可选地,在所述一致性算法为Paxos算法,且所述目标请求的数量为多个的情况下,所述针对所述目标请求按照一致性算法向作为从节点的服务模块发起提案,包括:
针对多个所述目标请求按照Paxos算法向作为从节点的所述服务模块发起批量提案。
第三方面,本发明实施例还提供一种分布式锁服务提供方法,应用于业务服务器,所述方法包括:
获取分布式锁请求;
根据所述分布式锁请求中的锁标识,向多个一致性算法集群中作为主节点的所述服务模块发送所述分布式锁请求,以使所述多个一致性算法集群基于所述分布式锁请求,获取目标请求中锁标识对应的分布式锁,其中,所述目标请求为锁标识对应的分布式锁未被占用的所述分布式锁请求。
第四方面,本发明实施例还提供一种分布式锁服务提供装置,其特征在于,应用于由至少三台服务器中的服务模块组成的多个一致性算法集群,所述装置包括:
接收模块,用于通过多个一致性算法集群中作为主节点的所述服务模块分别接收具有不同锁标识的分布式锁请求,其中,具有相同锁标识的所述分布式锁请求被同一所述服务模块接收;
处理模块,用于在每一作为主节点的所述服务模块中利用多个线程对接收到的所述分布式锁请求依次进行处理,得到目标请求;其中,具有相同锁标识的所述分布式锁请求位于同一线程中,所述目标请求为锁标识对应的分布式锁未被占用的所述分布式锁请求;
提案模块,用于在每一作为主节点的所述服务模块中,针对所述目标请求按照一致性算法向作为从节点的服务模块发起提案;
锁模块,用于在每一作为主节点的所述服务模块中,在针对所述目标请求的提案通过的情况下,获取所述目标请求中锁标识对应的分布式锁。
第五方面,本发明实施例还提供一种分布式锁服务提供装置,应用于业务服务器,所述装置包括:
获取单元,用于获取分布式锁请求;
发送单元,用于根据所述分布式锁请求中的锁标识,向多个一致性算法集群中作为主节点的所述服务模块发送所述分布式锁请求,以使所述多个一致性算法集群基于所述分布式锁请求,获取目标请求中锁标识对应的分布式锁,其中,所述目标请求为锁标识对应的分布式锁未被占用的所述分布式锁请求。
第六方面,本发明实施例还提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的所述的分布式锁服务提供方法中的步骤。
第七方面,本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的所述的分布式锁服务提供方法中的步骤。
在本发明实施例中,分布式锁服务提供系统包括:由至少三台服务器中的服务模块组成的多个一致性算法集群,从而在分布式锁请求的并发量较大的情况下,通过多个一致性算法集群中作为主节点的服务模块分别接收具有不同锁标识的分布式锁请求,进而分别利用每个一致性算法集群分别对其接收到的分布式锁请求进行处理,实现了对分布式锁请求的并行处理,提升了处理效率。同时,具有相同锁标识的分布式锁请求被同一服务模块接收,具有相同锁标识的分布式锁请求位于同一线程中,在作为主节点的服务模块中确定锁标识对应的分布式锁未被占用的目标请求之后,针对目标请求,按照一致性算法向作为从节点的服务模块发起提案,并在提案通过的情况下获取目标请求中锁标识对应的分布式锁,保证了一致性算法集群中各节点数据的一致性,因此,本发明实施例的分布式锁服务提供系统可以在保证数据一致性的同时,实现分布式锁请求的并行处理,从而提升了吞吐量。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种分布式锁服务提供系统的结构示意图;
图2为本发明实施例提供的分布式锁服务提供系统的应用架构图;
图3为本发明实施例提供的一种分布式锁服务提供方法的步骤流程图之一;
图4为本发明实施例提供的一种分布式锁服务提供方法的信号流程图;
图5为本发明实施例提供的一种分布式锁服务提供方法的步骤流程图之二;
图6为本发明实施例提供的一种分布式锁服务提供装置的结构框图之一;
图7为本发明实施例提供的一种分布式锁服务提供装置的结构框图之二;
图8为本发明实施例提供的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
参见图1,本发明实施例提供了一种分布式锁服务提供系统,该系统包括:
由至少三台服务器11(图1中仅示出三台服务器11,但不限于三台)中的服务模块组成的多个一致性算法集群12(图1中仅示出三个一致性算法集群12,但不限于三个)。
其中,每台服务器11中均设置有多个服务模块,每一一致性算法集群12分别包括每台服务器11中的一个服务模块,且不同的一致性算法集群12中的服务模块不同。
多个一致性算法集群12,用于通过作为主节点的服务模块分别接收具有不同锁标识的分布式锁请求,其中,具有相同锁标识的分布式锁请求被同一服务模块接收。
每一一致性算法集群12,还用于在作为主节点的服务模块中利用多个线程对接收到的分布式锁请求依次进行处理,得到目标请求;其中,具有相同锁标识的分布式锁请求位于同一线程中,目标请求为锁标识对应的分布式锁未被占用的分布式锁请求。
每一一致性算法集群12,还用于在作为主节点的服务模块中,针对目标请求按照一致性算法向作为从节点的服务模块发起提案。
每一一致性算法集群12,还用于在作为主节点的服务模块中,在针对目标请求的提案通过的情况下,获取目标请求中锁标识对应的分布式锁。
应当说明的是,服务器11中的各服务模块,也可以理解为将服务器11进行分组,得到的多个分别提供分布式锁服务的模块。具体的,服务器11为硬件电子设备,服务器11中的多个服务模块可以为该硬件电子设备中由软件实现的服务器。这里,针对每台服务器11,各个服务模块相互之间相互独立,即独立运行,并行工作。可以理解的是,在每台服务器11中均设置有多个服务模块的情况下,可以分别选取每台服务器11中的一个服务模块组成一个一致性算法集群12,进而得到多个一致性算法集群12。这里,各一致性算法集群12中不存在相同的服务模块,因此,各一致性算法集群12相互之间可以独立运行,每一一致性算法集群12只需处理自己接收到的分布式锁请求即可。其中,各一致性算法集群12的情况以及对分布式锁请求的处理过程类似,为避免赘述,这里仅以一个一致性算法集群12为例进行说明。可以理解的是,分布式锁请求可以为业务服务器发送的用于申请分布式锁的请求,也可以为业务服务器发送的用于释放分布式锁的请求。两者的区别在于,前者是用于申请分布式锁避免其他线程或业务使用,后者是用于释放分布式锁以供其他线程或业务使用。但本发明实施例提供的分布式锁服务提供系统对两者的处理过程类似,为避免赘述,本发明实施例以及下述其它实施例仅以申请分布式锁的请求为例进行说明。
在一致性算法集群12中组成其的各服务模块可以视为各节点,由于一致性算法集群12包括一个主节点和若干个从节点,因此,一致性算法集群12中存在一个服务模块作为主节点,剩余服务模块作为从节点。对于任意一个一致性算法集群12,在其接收到的多个分布式锁请求涉及多个不同的锁标识时,将采用多线程对具有不同锁标识的分布式锁请求并行处理,其中,具有相同锁标识的分布式锁请求位于同一线程中。在多个分布式锁请求在同一线程中进行处理时,将依次校验分布式锁请求中的锁标识对应的分布式锁是否被占用,从而得到锁标识对应的分布式锁未被占用的目标请求,即允许申请分布式锁的分布式锁请求,进而基于目标请求按照一致性算法向作为从节点的所述服务模块发起提案,并在提案通过的情况下,获取目标请求中锁标识对应的分布式锁,利用分布式锁对相应数据进行锁定,并将该锁标识对应的分布式锁的状态调整为已占用。当然,各一致性算法集群12接收到的分布式锁请求的情况并非完全相同,某个或某些一致性算法集群12可以接收到具有相同锁标识的多个分布式锁请求,对于这种情况,只需使用一个线程对多个分布式锁请求进行处理即可。
业务服务器通常基于用户的业务请求生成具有锁标识的分布式锁请求,以申请针对相应业务的分布式锁。其中,锁标识、业务请求以及业务相关联。因此,在业务服务器不断的收到针对不同业务的业务请求的情况下,将不断的向一致性算法集群12发送具不同锁标识的分布式锁请求。多个一致性算法集群12将不断的接收到来自业务服务器的具有不同锁标识的分布式锁请求。然后,各一致性算法集群12对各自接收到的分布式锁请求并行处理,提供分布式锁服务。
可以理解的是,在获取目标请求中锁标识对应的分布式锁之后,该分布式锁被占用,作为主节点的服务模块的线程中具有相同锁标识的分布式锁请求将无法通过校验。在该分布式锁完成相关任务之后,其将被释放,从而作为主节点的服务模块的线程中排在最前面的具有相同锁标识的分布式锁请求将可以通过校验,成为新的目标请求。进而,基于新的目标请求再次进行相关操作,最终实现对作为主节点的服务模块的线程中的所有分布式锁请求的处理。这里,线程中通过校验的分布式锁请求将被移除。
这里以购买商品场景为例,对分布式锁服务提供系统提供分布式锁服务的过程进行说明。假设业务服务器接收到多条购买商品A的业务请求、多条购买商品B的业务请求和多条购买商品C的业务请求,业务服务器生成多条具有第一标识的分布式锁请求、多条具有第二标识的分布式锁请求以及多条具有第三标识的分布式锁请求,其中,第一标识、第二标识和第三标识均为锁标识,第一标识可以为商品A的标识,第二标识可以为商品B的标识,第三标识可以为商品C的标识。多个一致性算法集群12中的第一一致性算法集群通过作为主节点的服务模块接收到多条具有第一标识的分布式锁请求和多条具有第二标识的分布式锁请求,第二一致性算法集群通过作为主节点的服务模块接收到多条具有第三标识的分布式锁请求。对于第一一致性算法集群,将多条具有第一标识的分布式锁请求在第一线程中进行处理,并将多条具有第二标识的分布式锁请求在第二线程中进行处理,两个线程并行处理,且处理过程类似,这里仅以第一线程中的处理过程为例进行说明。在第一线程中校验排在第一位的分布式锁请求的第一标识对应的分布式锁释放被占用,若被占用则监控该分布式锁的状态直至该分布式锁未被占用,在该分布式锁未被占用的情况下,针对该分布式锁请求按照一致性算法向作为从节点的服务模块发起提案,并在提案通过的情况下,获取目标请求中锁标识对应的分布式锁,在利用获取的分布式锁进行业务处理的时,将该分布式锁调整为占用状态,使得第一线程中第二位的分布式锁请求无法通过校验,直至该分布式锁完成任务被释放,第一线程中第二位的分布式锁请求将可以通过校验,进而继续申请分布式锁。对于第二一致性算法集群,将多条具有第三标识的分布式锁请求在第三线程中进行处理,且处理过程与第一线程中的处理过程类似,这里不再赘述。
本发明实施例中,分布式锁服务提供系统包括:由至少三台服务器11中的服务模块组成的多个一致性算法集群12,从而在分布式锁请求的并发量较大的情况下,通过多个一致性算法集群12中作为主节点的服务模块分别接收具有不同锁标识的分布式锁请求,进而分别利用每个一致性算法集群12分别对其接收到的分布式锁请求进行处理,实现了对分布式锁请求的并行处理,提升了处理效率。同时,具有相同锁标识的分布式锁请求被同一服务模块接收,具有相同锁标识的分布式锁请求位于同一线程中,在作为主节点的服务模块中确定锁标识对应的分布式锁未被占用的目标请求之后,针对目标请求,按照一致性算法向作为从节点的服务模块发起提案,并在提案通过的情况下获取目标请求中锁标识对应的分布式锁,保证了一致性算法集群12中各节点数据的一致性,因此,本发明实施例的分布式锁服务提供系统可以在保证数据一致性的同时,实现分布式锁请求的并行处理,从而提升了吞吐量。
可选地,多个一致性算法集群的作为主节点的服务模块均匀分布在至少三台服务器中。
应当说明的是,各台服务器中的服务模块的数量相等,且各台服务器中作为主节点的服务模块的数量也相等。假如存在3台服务器,每台服务器均包括15个服务模块,则每台服务器包括5个作为主节点的服务模块,剩余10个服务模块均作为从节点。
本发明实施例中,将各一致性算法集群的作为主节点的服务模块均匀设置在至少三台服务器中,可以均衡各服务器的负载,避免某一个或多个服务器上的负载过大。
可选地,该系统还包括:设置于业务服务器内的路由模块;
其中,路由模块,用于获取业务服务器生成的分布式锁请求,并根据分布式锁请求中的锁标识,向多个一致性算法集群中作为主节点的服务模块发送分布式锁请求,且具有相同锁标识的分布式锁请求向同一服务模块发送。
应当说明的是,路由模块设置有路由策略,在获取每一分布式锁请求之后,基于该路由策略将分布式锁请求路由至某一一致性算法集群中作为主节点的服务模块,使得具有相同锁标识的分布式锁请求被路由至同一服务模块。具体的,路由策略与分布式锁请求中的锁标识相关,基于相同的锁标识可以计算得到相同的某一结果,然后基于该相同的结果确定接收分布式锁请求的一致性算法集群。例如,在锁标识为商品标识时,针对具有相同商品标识的多条分布式锁请求,利用路由策略得到各商品标识的哈希值,然后利用预设算法对各哈希值再次进行计算得到一个0~14的结果。若分布式锁服务提供系统包括分别具有0~14编号的15个一致性算法集群。将分布式锁请求发送至对应其计算结果的一致性算法集群。若某一分布式锁请求中商品标识的计算结果为5,则将该分布式锁请求发送至编号为5的一致性算法集群。由于多条分布式锁请求的商品标识相同,因此得到的各哈希值也相同。并且利用预设算法对各哈希值再次进行计算得到的结果也相同,该多条分布式锁请求将被发送至同一一致性算法集群。
本发明实施例中,在业务服务器中设置路由模块,使得具有相同锁标识的分布式锁请求被发送至同一一致性算法集群;同时,具有不同锁标识的分布式锁请求可以发送至不同一致性算法集群。
可选地,该系统还包括:注册服务器;
注册服务器,用于获取作为主节点的服务模块在至少三台服务器中的分布信息,并将分布信息发送至业务服务器;
业务服务器,具体用于根据分布式锁请求中的锁标识,确定接收分布式锁请求的一致性算法集群,基于分布信息,将分布式锁请求发送至一致性算法集群的作为主节点的服务模块。
应当说明的是,注册服务器与服务器通信连接,从而可以接收服务器发送的分布信息,将分布信息发送至业务服务器,使得业务服务器可以将分布式锁请求精准的发送至相应的服务模块。
当然,服务器还可以与业务服务器通信连接,从而将分布信息直接发送至业务服务器。
本发明实施例中,利用注册服务器,将作为主节点的服务模块在至少三台服务器中的分布信息转发至业务服务器,可以减少服务器的处理逻辑。
可选地,在一致性算法为Paxos算法,且目标请求的数量为多个的情况下,一致性算法集群,具体用于在作为主节点的服务模块中,针对多个目标请求按照Paxos算法向作为从节点的服务模块发起批量提案。
应当说明的是,Paxos算法是一种常用的一致性算法,其算是一种共识算法,由主节点发起提案,得到半数以上的从节点的响应之后,提案将会通过。这里不再过多赘述。可以理解的是,在Paxos算法中可以将多次的propose请求合并为一个batch propose批量发送请求,即将一个提案合并为批量提案。具体的,在同一作为主节点的服务模块中,多个线程平行执行,且每一线程中的分布式锁请求顺序执行,来保证顺序。将校验通过的目标请求加入到一个队列中,然后基于该队列发起一次批量提案。
本发明实施例中,将针对每一目标请求的提案合并为批量提案,可以提高网络传输效率。
如图2所示,本发明实施例提供了一种分布式锁服务提供系统的应用架构图,包括:集群21、注册中心22和设置于客户端23中的路由模块;
其中,集群21中的节点1、节点2和节点3相当于上述发明实施例中的服务器,这里仅以3个节点为例进行说明,但不限于3个。节点1、节点2和节点3均包括15个分组,每个各分组的编号从0开始到14结束,各分组相当于上述发明实施例中的服务模块。图2中仅示出三个编号的分组,并且节点1、节点2和节点3中分组的数量并不限于15个。
注册中心22相当于上述发明实施例中的注册服务器;
客户端23相当于上述发明实施例中的业务服务器。
可以理解的是,集群21的各节点中具有相同编号的分组组成一个Paxos集群,相当于上述发明实施例中的一致性算法集群,从而得到15个Paxos集群,且各Paxos集群的编号从0开始至14结束。15个Paxos集群中作为主节点的分组均匀分布在节点1、节点2和节点3中。集群21将15个Paxos集群中作为主节点的分组在节点1、节点2和节点3中的分布信息发送至注册中心22,由注册中心22转发至客户端23。从而客户端23中生成分布式锁请求之后,由路由模块将分布式锁请求路由至相应Paxos集群的主节点中进行处理。其中,路由模块的处理过程与上述发明实施例中路由模块的处理过程类似,这里不再赘述。分组内部采用多线程处理分布式锁请求,按照分布式锁请求中的锁标识将分布式锁请求路由到不同的线程上;多线程产生的propose请求合并为一个batch propose请求批量发送,并保证具有同一锁标识的分布式锁请求按顺序执行。Paxos集群的主节点的对分布式锁请求的处理过程与上述发明实施例中一致性算法集群中作为主节点的服务模块对分布式锁请求的处理过程类似,这里不再赘述。较佳地,在提供分布式锁服务时,分布式锁的锁数据使用高性能的keyvalue(键值对,简称K-V)本地数据库RocksDB进行存储。
本发明实施例中,采用多分组架构,每个分组组成了一个独立运行的paxos集群,存在自己的主节点,多个主节点均匀分布到所有的集群节点上,请求由主节点进行处理,所有的集群节点都参与了请求的处理,充分利用集群中所有节点的资源。使用路由策略,请求被路由到不同paxos集群的主节点上,实现流量的均衡。将propose请求合并为Batchpropose请求,通过批量发送提高网络传输效率。将锁标识作为key,锁信息作为value,使用本地数据库进行存储,简单高效。
如图3所示,本发明实施例还提供了一种分布式锁服务提供方法,应用于由至少三台服务器中的服务模块组成的多个一致性算法集群,该多个一致性算法集群可以为上述发明实施例提供的分布式锁服务提供系统中的多个一致性算法集群,但不限于此。
该方法可以包括:
步骤301:通过多个一致性算法集群中作为主节点的服务模块分别接收具有不同锁标识的分布式锁请求。
应当说明的是,可以理解的是,分布式锁请求可以为业务服务器发送的用于申请分布式锁的请求,也可以为业务服务器发送的用于释放分布式锁的请求。两者的区别在于,前者是用于申请分布式锁避免其他线程或业务使用,后置是用于释放分布式锁以供其他线程或业务使用。但本发明实施例提供的分布式锁服务提供系统对两者的处理过程类似,为避免赘述,本发明实施例以及下述其它实施例仅以申请分布式锁的请求为例进行说明。具有相同锁标识的分布式锁请求被同一服务模块接收。业务服务器通常基于用户的业务请求生成具有锁标识的分布式锁请求,以申请针对相应业务的分布式锁。其中,锁标识、业务请求以及业务相关联。因此,在业务服务器不断的收到针对不同业务的业务请求的情况下,将不断的向一致性算法集群发送具不同锁标识的分布式锁请求。可以理解的是,各一致性算法集群接收到的分布式锁请求的情况并非完全相同,每一一致性算法集群均对自己接收到的分布式锁请求处理即可。
步骤302:在每一作为主节点的服务模块中利用多个线程对接收到的分布式锁请求依次进行处理,得到目标请求。
应当说明的是,具有相同锁标识的分布式锁请求位于同一线程中,目标请求为锁标识对应的分布式锁未被占用的分布式锁请求。各一致性算法集群的情况以及对分布式锁请求的处理过程类似,为避免赘述,这里仅以一个一致性算法集群为例进行说明。一致性算法集群包括一个主节点和若干个从节点,因此,一致性算法集群中存在一个服务模块作为主节点,剩余服务模块作为从节点。对于任意一个一致性算法集群,在其接收到的多个分布式锁请求涉及多个不同的锁标识时,将采用多线程对具有不同锁标识的分布式锁请求并行处理,。在多个具有相同锁标识的分布式锁请求在同一线程中进行处理时,将依次校验分布式锁请求中的锁标识对应的分布式锁是否被占用,从而得到锁标识对应的分布式锁未被占用的目标请求,即允许申请分布式锁的分布式锁请求。
步骤303:在每一作为主节点的服务模块中,针对目标请求按照一致性算法向作为从节点的服务模块发起提案。
应当说明的是,一致性算法用于保证主节点和从节点所处的服务器之间的数据一致性。这里的一致性算法可以为Paxos算法,但不限于此。
步骤304:在每一作为主节点的服务模块中,在针对目标请求的提案通过的情况下,获取目标请求中锁标识对应的分布式锁。
应当说明的是,在提案通过的情况下,获取目标请求中锁标识对应的分布式锁,利用分布式锁对相应数据进行锁定,并将该锁标识对应的分布式锁的状态调整为已占用。具体的,在获取目标请求中锁标识对应的分布式锁之后,将该分布式锁占用。作为主节点的服务模块的线程中具有相同锁标识的分布式锁请求将无法通过校验。在该分布式锁完成相关任务之后,其将被释放,从而作为主节点的服务模块的线程中排在最前面的具有相同锁标识的分布式锁请求将可以通过校验,成为新的目标请求。进而,基于新的目标请求再次进行相关操作,最终实现对作为主节点的服务模块的线程中的所有分布式锁请求的处理。这里,线程中通过校验的分布式锁请求将被移除。
本发明实施例中,在分布式锁请求的并发量较大的情况下,通过多个一致性算法集群中作为主节点的服务模块分别接收具有不同锁标识的分布式锁请求,进而分别利用每个一致性算法集群分别对其接收到的分布式锁请求进行处理,实现了对分布式锁请求的并行处理,提升了处理效率。同时,具有相同锁标识的分布式锁请求被同一服务模块接收,具有相同锁标识的分布式锁请求位于同一线程中,在作为主节点的服务模块中确定锁标识对应的分布式锁未被占用的目标请求之后,针对目标请求,按照一致性算法向作为从节点的服务模块发起提案,并在提案通过的情况下获取目标请求中锁标识对应的分布式锁,保证了一致性算法集群中各节点数据的一致性,因此,本发明实施例的分布式锁服务提供方法可以在保证数据一致性的同时,实现分布式锁请求的并行处理,从而提升了吞吐量。
可选地,在一致性算法为Paxos算法,且目标请求的数量为多个的情况下,针对目标请求按照一致性算法向作为从节点的服务模块发起提案,包括:
针对多个目标请求按照Paxos算法向作为从节点的服务模块发起批量提案。
应当说明的是,Paxos算法是一种常用的一致性算法,其算是一种共识算法,由主节点发起提案,得到半数以上的从节点的响应之后,提案将会通过。这里不再过多赘述。可以理解的是,在Paxos算法中可以将多次的propose请求合并为一个batch propose批量发送请求,即将一个提案合并为批量提案。具体的,在同一作为主节点的服务模块中,多个线程平行执行,且每一线程中的分布式锁请求顺序执行,来保证顺序。将校验通过的目标请求加入到一个队列中,然后基于该队列发起一次批量提案。
本发明实施例中,将针对每一目标请求的提案合并为批量提案,可以提高网络传输效率。
如图4所示,本发明实施例还提供了一种分布式锁服务提供方法的信号流程,其中,客户端相当于上述发明实施例中的业务服务器,用于生成具有锁标识的分布式锁请求,图4中仅示出4个客户端,但其数量并不限于4个。服务端相当于图2中的集群,这里不再过多赘述。
各客户端生成的分布式锁请求都将经过路由模块,经路由模块路由到不同Paxos集群的主节点中。同样的,图4中仅示出4个Paxos集群,但其数量并不限于4个。各Paxos集群仅对自己接收到的分布式锁请求进行处理,且各Paxos集群对分布式锁请求的处理过程类似,这里仅以一个Paxos集群的处理过程为例进行说明。Paxos集群通过主节点对接收到的分布式锁请求按照锁标识采用多个不同的线程进行处理,其中,具有相同锁标识的分布式锁请求位于同一线程中,然后利用Paxos算法中的batch propose请求,进行批量提案,在提案通过的情况下在相应数据库中取得锁信息,即获取分布式锁请求中锁标识对应的分布式锁。
本发明实施例中,采用并行处理架构,利用多个Paxos集群的主节点对分布式锁请求进行并行处理;同时,在同一Paxos集群的主节点中利用不同线程对具有不同锁标识的分布式锁请求进行并行处理,提升了分布式锁请求的处理效率以及吞吐量。同时,将各提案合并为批量提案,进一步提升了网络传输效率。
如图5所示,本发明实施例还提供了一种分布式锁服务提供方法,应用于业务服务器,该方法包括:
步骤501:获取分布式锁请求。
步骤502:根据分布式锁请求中的锁标识,向多个一致性算法集群中作为主节点的服务模块发送分布式锁请求,以使多个一致性算法集群基于分布式锁请求,获取目标请求中锁标识对应的分布式锁。
应当说明的是,业务服务器通常基于用户的业务请求生成具有锁标识的分布式锁请求,以申请针对相应业务的分布式锁。其中,锁标识、业务请求以及业务相关联。因此,在业务服务器不断的收到针对不同业务的业务请求的情况下,将不断的向一致性算法集群发送具不同锁标识的分布式锁请求。
可以理解的是,分布式锁请求可以为用于申请分布式锁的请求,也可以为用于释放分布式锁的请求。两者的区别在于,前者是用于申请分布式锁避免其他线程或业务使用,后置是用于释放分布式锁以供其他线程或业务使用。业务服务器中设置有路由策略,在获取每一分布式锁请求之后,基于该路由策略将分布式锁请求路由至某一一致性算法集群中作为主节点的服务模块,使得具有相同锁标识的分布式锁请求被路由至同一服务模块。具体的,路由策略与分布式锁请求中的锁标识相关,基于相同的锁标识可以计算得到相同的某一结果,然后基于该相同的结果确定接收分布式锁请求的一致性算法集群。例如,在锁标识为商品标识时,针对具有相同商品标识的多条分布式锁请求,利用路由策略得到各商品标识的哈希值,然后利用预设算法对各哈希值再次进行计算得到一个0~14的结果。若分布式锁服务提供系统包括分别具有0~14编号的15个一致性算法集群。将分布式锁请求发送至对应其计算结果的一致性算法集群。若某一分布式锁请求中商品标识的计算结果为5,则将该分布式锁请求发送至编号为5的一致性算法集群。由于多条分布式锁请求的商品标识相同,因此得到的各哈希值也相同。并且利用预设算法对各哈希值再次进行计算得到的结果也相同,该多条分布式锁请求将被发送至同一一致性算法集群。
可以理解的是,目标请求为锁标识对应的分布式锁未被占用的分布式锁请求。多个一致性算法集群基于分布式锁请求,获取目标请求中锁标识对应的分布式锁的过程可以参见上述应用于由至少三台服务器中的服务模块组成的多个一致性算法集群的分布式锁服务提供方法,这里不再赘述。
本发明实施例中,在获取用于申请分布式锁的分布式锁请求之后,将其发送至多个一致性算法集群中作为主节点的服务模块,从而在分布式锁请求的并发量较大的情况下,通过多个一致性算法集群中作为主节点的服务模块分别接收具有不同锁标识的分布式锁请求,进而分别利用每个一致性算法集群分别对其接收到的分布式锁请求进行处理,实现了对分布式锁请求的并行处理,提升了处理效率以及吞吐量。
以上介绍了本发明实施例提供的分布式锁服务提供方法,下面将结合附图介绍本发明实施例提供的分布式锁服务提供装置。
如图6所示,本发明实施例提供了一种分布式锁服务提供装置,应用于由至少三台服务器中的服务模块组成的多个一致性算法集群,该装置包括:
接收模块61,用于通过多个一致性算法集群中作为主节点的服务模块分别接收具有不同锁标识的分布式锁请求,其中,具有相同锁标识的分布式锁请求被同一服务模块接收;
处理模块62,用于在每一作为主节点的服务模块中利用多个线程对接收到的分布式锁请求依次进行处理,得到目标请求;其中,具有相同锁标识的分布式锁请求位于同一线程中,目标请求为锁标识对应的分布式锁未被占用的分布式锁请求;
提案模块63,用于在每一作为主节点的服务模块中,针对目标请求按照一致性算法向作为从节点的服务模块发起提案;
锁模块64,用于在每一作为主节点的服务模块中,在针对目标请求的提案通过的情况下,获取目标请求中锁标识对应的分布式锁。
可选地,在一致性算法为Paxos算法,且目标请求的数量为多个的情况下,提案模块63,具体用于针对多个目标请求按照Paxos算法向作为从节点的服务模块发起批量提案。
本发明实施例提供的分布式锁服务提供装置能够实现图3的方法实施例中分布式锁服务提供方法实现的各个过程,为避免重复,这里不再赘述。
本发明的实施例中,在分布式锁请求的并发量较大的情况下,通过多个一致性算法集群中作为主节点的服务模块分别接收具有不同锁标识的分布式锁请求,进而分别利用每个一致性算法集群分别对其接收到的分布式锁请求进行处理,实现了对分布式锁请求的并行处理,提升了处理效率。同时,具有相同锁标识的分布式锁请求被同一服务模块接收,具有相同锁标识的分布式锁请求位于同一线程中,在作为主节点的服务模块中确定锁标识对应的分布式锁未被占用的目标请求之后,针对目标请求,按照一致性算法向作为从节点的服务模块发起提案,并在提案通过的情况下获取目标请求中锁标识对应的分布式锁,保证了一致性算法集群中各节点数据的一致性,因此,本发明实施例的分布式锁服务提供方法可以在保证数据一致性的同时,实现分布式锁请求的并行处理,从而提升了吞吐量。
如图7所示,本发明实施例提供了一种分布式锁服务提供装置,应用于业务服务器,该装置包括:
获取单元71,用于获取分布式锁请求;
发送单元72,用于根据分布式锁请求中的锁标识,向多个一致性算法集群中作为主节点的服务模块发送分布式锁请求,以使多个一致性算法集群基于分布式锁请求,获取目标请求中锁标识对应的分布式锁,其中,目标请求为锁标识对应的分布式锁未被占用的分布式锁请求。
本发明实施例提供的分布式锁服务提供装置能够实现图5的方法实施例中分布式锁服务提供方法实现的各个过程,为避免重复,这里不再赘述。
本发明的实施例中,在获取用于申请分布式锁的分布式锁请求之后,将其发送至多个一致性算法集群中作为主节点的服务模块,从而在分布式锁请求的并发量较大的情况下,通过多个一致性算法集群中作为主节点的服务模块分别接收具有不同锁标识的分布式锁请求,进而分别利用每个一致性算法集群分别对其接收到的分布式锁请求进行处理,实现了对分布式锁请求的并行处理,提升了处理效率以及吞吐量。
另一方面,本发明实施例还提供了一种电子设备,包括存储器、处理器、总线以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述分布式锁服务提供方法中的步骤。
举个例子如下,图8示出了一种电子设备的实体结构示意图。
如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行如下方法:
通过多个一致性算法集群中作为主节点的服务模块分别接收具有不同锁标识的分布式锁请求,其中,具有相同锁标识的分布式锁请求被同一服务模块接收;
在每一作为主节点的服务模块中利用多个线程对接收到的分布式锁请求依次进行处理,得到目标请求;其中,具有相同锁标识的分布式锁请求位于同一线程中,目标请求为锁标识对应的分布式锁未被占用的分布式锁请求;
在每一作为主节点的服务模块中,针对目标请求按照一致性算法向作为从节点的服务模块发起提案;
在每一作为主节点的服务模块中,在针对目标请求的提案通过的情况下,获取目标请求中锁标识对应的分布式锁。
或者
获取分布式锁请求;
根据分布式锁请求中的锁标识,向多个一致性算法集群中作为主节点的服务模块发送分布式锁请求,以使多个一致性算法集群基于分布式锁请求,获取目标请求中锁标识对应的分布式锁,其中,目标请求为锁标识对应的分布式锁未被占用的分布式锁请求。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再一方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的分布式锁服务提供方法,例如包括:
通过多个一致性算法集群中作为主节点的服务模块分别接收具有不同锁标识的分布式锁请求,其中,具有相同锁标识的分布式锁请求被同一服务模块接收;
在每一作为主节点的服务模块中利用多个线程对接收到的分布式锁请求依次进行处理,得到目标请求;其中,具有相同锁标识的分布式锁请求位于同一线程中,目标请求为锁标识对应的分布式锁未被占用的分布式锁请求;
在每一作为主节点的服务模块中,针对目标请求按照一致性算法向作为从节点的服务模块发起提案;
在每一作为主节点的服务模块中,在针对目标请求的提案通过的情况下,获取目标请求中锁标识对应的分布式锁。
或者
获取分布式锁请求;
根据分布式锁请求中的锁标识,向多个一致性算法集群中作为主节点的服务模块发送分布式锁请求,以使多个一致性算法集群基于分布式锁请求,获取目标请求中锁标识对应的分布式锁,其中,目标请求为锁标识对应的分布式锁未被占用的分布式锁请求。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (12)
1.一种分布式锁服务提供系统,其特征在于,所述系统包括:
由至少三台服务器中的服务模块组成的多个一致性算法集群;
其中,每台所述服务器中均设置有多个所述服务模块,每一所述一致性算法集群分别包括每台所述服务器中的一个所述服务模块,且不同的所述一致性算法集群中的所述服务模块不同;
所述多个一致性算法集群,用于通过作为主节点的所述服务模块分别接收具有不同锁标识的分布式锁请求,其中,具有相同锁标识的所述分布式锁请求被同一所述服务模块接收;
每一所述一致性算法集群,还用于在作为主节点的所述服务模块中利用多个线程对接收到的所述分布式锁请求依次进行处理,得到目标请求;其中,具有相同锁标识的所述分布式锁请求位于同一线程中,所述目标请求为锁标识对应的分布式锁未被占用的分布式锁请求;
每一所述一致性算法集群,还用于在作为主节点的所述服务模块中,针对所述目标请求按照一致性算法向作为从节点的所述服务模块发起提案;
每一所述一致性算法集群,还用于在作为主节点的所述服务模块中,在针对所述目标请求的提案通过的情况下,获取所述目标请求中锁标识对应的分布式锁。
2.根据权利要求1所述的系统,其特征在于,所述多个一致性算法集群的作为主节点的所述服务模块均匀分布在所述至少三台服务器中。
3.根据权利要求1所述的系统,其特征在于,所述系统还包括:设置于业务服务器内的路由模块;
其中,所述路由模块,用于获取所述业务服务器生成的分布式锁请求,并根据所述分布式锁请求中的锁标识,向多个所述一致性算法集群中作为主节点的所述服务模块发送所述分布式锁请求,且具有相同锁标识的所述分布式锁请求向同一所述服务模块发送。
4.根据权利要求3所述的系统,其特征在于,所述系统还包括:注册服务器;
所述注册服务器,用于获取作为主节点的所述服务模块在所述至少三台服务器中的分布信息,并将所述分布信息发送至所述业务服务器;
所述业务服务器,具体用于根据所述分布式锁请求中的锁标识,确定接收所述分布式锁请求的所述一致性算法集群,基于所述分布信息,将所述分布式锁请求发送至所述一致性算法集群的作为主节点的所述服务模块。
5.根据权利要求1所述的系统,其特征在于,在所述一致性算法为Paxos算法,且所述目标请求的数量为多个的情况下,所述一致性算法集群,具体用于在作为主节点的所述服务模块中,针对多个所述目标请求按照Paxos算法向作为从节点的所述服务模块发起批量提案。
6.一种分布式锁服务提供方法,其特征在于,应用于由至少三台服务器中的服务模块组成的多个一致性算法集群,所述方法包括:
通过多个一致性算法集群中作为主节点的所述服务模块分别接收具有不同锁标识的分布式锁请求,其中,具有相同锁标识的所述分布式锁请求被同一所述服务模块接收;
在每一作为主节点的所述服务模块中利用多个线程对接收到的所述分布式锁请求依次进行处理,得到目标请求;其中,具有相同锁标识的所述分布式锁请求位于同一线程中,所述目标请求为锁标识对应的分布式锁未被占用的所述分布式锁请求;
在每一作为主节点的所述服务模块中,针对所述目标请求按照一致性算法向作为从节点的服务模块发起提案;
在每一作为主节点的所述服务模块中,在针对所述目标请求的提案通过的情况下,获取所述目标请求中锁标识对应的分布式锁。
7.根据权利要求6所述的方法,其特征在于,在所述一致性算法为Paxos算法,且所述目标请求的数量为多个的情况下,所述针对所述目标请求按照一致性算法向作为从节点的服务模块发起提案,包括:
针对多个所述目标请求按照Paxos算法向作为从节点的所述服务模块发起批量提案。
8.一种分布式锁服务提供方法,其特征在于,应用于业务服务器,所述方法包括:
获取分布式锁请求;
根据所述分布式锁请求中的锁标识,向多个一致性算法集群中作为主节点的服务模块发送所述分布式锁请求,以使所述多个一致性算法集群基于所述分布式锁请求,获取目标请求中锁标识对应的分布式锁,其中,所述目标请求为锁标识对应的分布式锁未被占用的所述分布式锁请求,所述多个一致性算法集群是由至少三台服务器中的服务模块组成的,所述多个一致性算法集群,用于通过作为主节点的所述服务模块分别接收具有不同锁标识的分布式锁请求,其中,具有相同锁标识的所述分布式锁请求被同一所述服务模块接收;
每一所述一致性算法集群,还用于在作为主节点的所述服务模块中利用多个线程对接收到的所述分布式锁请求依次进行处理,得到目标请求;其中,具有相同锁标识的所述分布式锁请求位于同一线程中,所述目标请求为锁标识对应的分布式锁未被占用的分布式锁请求;
每一所述一致性算法集群,还用于在作为主节点的所述服务模块中,针对所述目标请求按照一致性算法向作为从节点的所述服务模块发起提案;
每一所述一致性算法集群,还用于在作为主节点的所述服务模块中,在针对所述目标请求的提案通过的情况下,获取所述目标请求中锁标识对应的分布式锁。
9.一种分布式锁服务提供装置,其特征在于,应用于由至少三台服务器中的服务模块组成的多个一致性算法集群,所述装置包括:
接收模块,用于通过多个一致性算法集群中作为主节点的所述服务模块分别接收具有不同锁标识的分布式锁请求,其中,具有相同锁标识的所述分布式锁请求被同一所述服务模块接收;
处理模块,用于在每一作为主节点的所述服务模块中利用多个线程对接收到的所述分布式锁请求依次进行处理,得到目标请求;其中,具有相同锁标识的所述分布式锁请求位于同一线程中,所述目标请求为锁标识对应的分布式锁未被占用的所述分布式锁请求;
提案模块,用于在每一作为主节点的所述服务模块中,针对所述目标请求按照一致性算法向作为从节点的服务模块发起提案;
锁模块,用于在每一作为主节点的所述服务模块中,在针对所述目标请求的提案通过的情况下,获取所述目标请求中锁标识对应的分布式锁。
10.一种分布式锁服务提供装置,其特征在于,应用于业务服务器,所述装置包括:
获取单元,用于获取分布式锁请求;
发送单元,用于根据所述分布式锁请求中的锁标识,向多个一致性算法集群中作为主节点的服务模块发送所述分布式锁请求,以使所述多个一致性算法集群基于所述分布式锁请求,获取目标请求中锁标识对应的分布式锁,其中,所述目标请求为锁标识对应的分布式锁未被占用的所述分布式锁请求,所述多个一致性算法集群是由至少三台服务器中的服务模块组成的,所述多个一致性算法集群,用于通过作为主节点的所述服务模块分别接收具有不同锁标识的分布式锁请求,其中,具有相同锁标识的所述分布式锁请求被同一所述服务模块接收;
每一所述一致性算法集群,还用于在作为主节点的所述服务模块中利用多个线程对接收到的所述分布式锁请求依次进行处理,得到目标请求;其中,具有相同锁标识的所述分布式锁请求位于同一线程中,所述目标请求为锁标识对应的分布式锁未被占用的分布式锁请求;
每一所述一致性算法集群,还用于在作为主节点的所述服务模块中,针对所述目标请求按照一致性算法向作为从节点的所述服务模块发起提案;
每一所述一致性算法集群,还用于在作为主节点的所述服务模块中,在针对所述目标请求的提案通过的情况下,获取所述目标请求中锁标识对应的分布式锁。
11.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被所述处理器执行时实现如权利要求6至7中任一项所述的分布式锁服务提供方法或如权利要求8所述的分布式锁服务提供方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求6至7中任一项所述的分布式锁服务提供方法或如权利要求8所述的分布式锁服务提供方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210800850.4A CN115277712B (zh) | 2022-07-08 | 2022-07-08 | 分布式锁服务提供方法、装置、系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210800850.4A CN115277712B (zh) | 2022-07-08 | 2022-07-08 | 分布式锁服务提供方法、装置、系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115277712A CN115277712A (zh) | 2022-11-01 |
CN115277712B true CN115277712B (zh) | 2023-07-25 |
Family
ID=83764331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210800850.4A Active CN115277712B (zh) | 2022-07-08 | 2022-07-08 | 分布式锁服务提供方法、装置、系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115277712B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115809301B (zh) * | 2023-02-03 | 2023-04-21 | 天翼云科技有限公司 | 数据库处理方法、装置、电子设备及可读存储介质 |
CN115878696B (zh) * | 2023-03-06 | 2023-04-28 | 中国西安卫星测控中心 | 一种分布式数据处理集群高可用方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9171019B1 (en) * | 2013-02-19 | 2015-10-27 | Amazon Technologies, Inc. | Distributed lock service with external lock information database |
CN106572054B (zh) * | 2015-10-09 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 分布式系统中分布式锁服务实现方法以及装置 |
CN106708975B (zh) * | 2016-12-06 | 2019-10-15 | 上海艾融软件股份有限公司 | 商品库存信息的处理方法及系统 |
CN109639794B (zh) * | 2018-12-10 | 2021-07-13 | 杭州数梦工场科技有限公司 | 一种有状态集群恢复方法、装置、设备及可读存储介质 |
CN114679464B (zh) * | 2022-03-24 | 2024-02-13 | 深圳九有数据库有限公司 | 基于分布式锁的数据回滚方法、装置、设备和存储介质 |
-
2022
- 2022-07-08 CN CN202210800850.4A patent/CN115277712B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115277712A (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115277712B (zh) | 分布式锁服务提供方法、装置、系统及电子设备 | |
CN109426949B (zh) | 一种跨链交易方法及装置 | |
US10944637B2 (en) | System and/or method for maintaining highly-available, consistent, partition-tolerant clusters using client voters | |
CN111311414A (zh) | 一种基于一致性哈希算法的区块链多方共识方法 | |
US7984094B2 (en) | Using distributed queues in an overlay network | |
US20050132154A1 (en) | Reliable leader election in storage area network | |
CN111526186A (zh) | 基于Raft的分布式服务器集群配置方法 | |
CN112492016B (zh) | 一种跨进程可扩展的共识方法及系统 | |
US11539617B2 (en) | Peer-to-peer application layer distributed mesh routing | |
CN112650812A (zh) | 一种数据分片存储方法、装置、计算机设备和存储介质 | |
CN110830582B (zh) | 一种基于服务器集群选主方法和装置 | |
CN114189325A (zh) | 具有高容错可扩展的拜占庭容错方法、装置及存储介质 | |
US20230353394A1 (en) | Cross-blockchain transaction processing method and apparatus, computer device, computer storage medium, and computer program product | |
CN111190754B (zh) | 一种区块链事件通知方法及区块链系统 | |
CN111190913A (zh) | 一种分布式锁实现方法及系统 | |
CN115098528B (zh) | 业务处理方法、装置、电子设备及计算机可读存储介质 | |
WO2023098327A1 (zh) | 基于区块链的区块处理方法、装置、设备、存储介质及程序产品 | |
CN112367373B (zh) | 分布式系统的节点确定方法和装置及存储介质 | |
WO2022206426A1 (zh) | 一种分布式事务处理方法、系统及相关设备 | |
CN107317880B (zh) | 一种实现负载均衡的方法及装置 | |
CN105450727A (zh) | 一种网络通信方法及网络通信架构 | |
CN113760519A (zh) | 分布式事务处理方法、装置、系统和电子设备 | |
WO2021115554A1 (en) | A service based interface for establishing distributed consensus | |
US7526543B2 (en) | Method of synchronizing execution of state transition commands in a cluster of message oriented middleware servers | |
CN112583572A (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 |