CN113268348B - 分布式锁服务器的切换方法、装置、计算机设备和介质 - Google Patents
分布式锁服务器的切换方法、装置、计算机设备和介质 Download PDFInfo
- Publication number
- CN113268348B CN113268348B CN202110601804.7A CN202110601804A CN113268348B CN 113268348 B CN113268348 B CN 113268348B CN 202110601804 A CN202110601804 A CN 202110601804A CN 113268348 B CN113268348 B CN 113268348B
- Authority
- CN
- China
- Prior art keywords
- lock
- address
- server
- distributed
- fetching
- 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
Images
Classifications
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请涉及一种分布式锁服务器的切换方法、装置、计算机设备和存储介质。所述方法包括:在将各目标客户端的取锁服务器切换为新服务器时,通过对各目标客户端进行两次配置修改,第一次修改时,将各目标客户端的取锁地址修改为原服务器的地址和新服务器的地址,使得各目标客户端通过执行双取锁逻辑来获取分布式锁,当所有的目标客户端都完成第一次修改后就进行第二次修改,即将各目标客户端的取锁地址修改为新服务器的地址,使得各目标客户端通过执行单取锁逻辑来获取分布式锁。本发明实施例能够实现在将各目标客户端的取锁服务器切换到新服务器的过程中,各目标客户端仍能够正常获取到分布式锁,且保证分布式锁在该过程中的一致性。
Description
技术领域
本申请涉及分布式锁领域,特别是涉及一种分布式锁服务器的切换方法、装置、计算机设备和存储介质。
背景技术
以下陈述仅提供与本发明有关的背景信息,而不必然地构成现有技术。
分布式锁是计算机中分布式锁用来锁定某个资源,防止多方一起操作一个资源使得资源状态不一致的方案。分布式锁中间件在使用过程中,可能有越来越多的客户端需要向其请求获取锁,进而导致其出现性能不足的情况。为了解决上述问题,目前的做法是将分布式锁迁移到新的分布式锁中间件。在迁移分布式锁时,为了保证分布式锁的一致性,即分布式锁只能被一个客户端持有而不能被多个客户端持有,现有的方式(如图1所示),在锁迁移过程中分布式锁协调服务器是无法获取到分布式锁的,只有在分布式锁完成迁移之后,该协调服务器才能从新的服务器中获取到分布式锁,这样使得客户端取得锁的时间延长了。
发明内容
本发明针对上述不足或缺点,提供了一种分布式锁服务器的切换方法、装置、计算机设备和存储介质,本发明实施例能够实现在将各目标客户端的取锁服务器切换到新服务器的过程中,各目标客户端仍能够正常获取到分布式锁,且保证分布式锁在该过程中的一致性。
本发明根据第一方面提供了一种分布式锁服务器的切换方法,在一个实施例中,该方法包括:
向目标客户端集群发送第一配置更新指示;第一配置更新指示用于指示目标客户端集群中的各目标客户端将取锁地址更新为双取锁地址;双取锁地址包括原服务器的地址和新服务器的地址;原服务器和新服务器为分布式锁服务器;
在各目标客户端的取锁地址均完成更新后,向目标客户端集群发送第二配置更新指示,第二配置更新指示用于指示各目标客户端将取锁地址更新为新服务器的地址;
其中,取锁地址为双取锁地址的目标客户端通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址的目标客户端通过执行单取锁逻辑来获取分布式锁;
双取锁逻辑为根据当前配置的取锁地址分别向原服务器和新服务器请求获取分布式锁,在确定从原服务器和新服务器均获取到分布式锁时,判定取锁成功,在确定没有从原服务器或新服务器获取到分布式锁时,判定取锁失败,释放从原服务器或新服务器获取到的分布式锁。
在一个实施例中,单取锁逻辑为向当前配置的取锁地址对应的服务器请求获取分布式锁,在确定从该服务器获取到分布式锁时,判定取锁成功,在确定没有从该服务器获取到分布式锁时,判定取锁失败。
在一个实施例中,各目标客户端的取锁地址在更新为双取锁地址之前,为原服务器的地址;取锁地址为原服务器的地址的目标客户端通过执行单取锁逻辑来获取分布式锁。
在一个实施例中,该方法还包括:
在发送第一配置更新指示后,检测各目标客户端的启动状态,在确定各目标客户端均完成重启后,确定各目标客户端的取锁地址均完成更新。
本发明根据第二方面提供了一种分布式锁服务器的切换方法,在一个实施例中,该方法包括:
响应于第一配置更新指示,将取锁地址更新为双取锁地址;双取锁地址包括原服务器的地址和新服务器的地址;原服务器和新服务器为分布式锁服务器;
响应于第二配置更新指示,将取锁地址更新为新服务器的地址;
其中,取锁地址为双取锁地址时,通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址时,通过执行单取锁逻辑来获取分布式锁;
双取锁逻辑为根据当前配置的取锁地址分别向原服务器和新服务器请求获取分布式锁,在确定从原服务器和新服务器均获取到分布式锁时,判定取锁成功,在确定没有从原服务器或新服务器获取到分布式锁时,判定取锁失败,释放从原服务器或新服务器获取到的分布式锁。
在一个实施例中,单取锁逻辑为向当前配置的取锁地址对应的服务器请求获取分布式锁,在确定从该服务器获取到分布式锁时,判定取锁成功,在确定没有从该分布式锁服务器获取到分布式锁时,判定取锁失败。
本发明根据第三方面提供了一种分布式锁服务器的切换装置,在一个实施例中,该装置包括:
第一指示发送模块,用于向目标客户端集群发送第一配置更新指示;第一配置更新指示用于指示目标客户端集群中的各目标客户端将取锁地址更新为双取锁地址;双取锁地址包括原服务器的地址和新服务器的地址;原服务器和新服务器为分布式锁服务器;
第二指示发送模块,用于在各目标客户端的取锁地址均完成更新后,向目标客户端集群发送第二配置更新指示,第二配置更新指示用于指示各目标客户端将取锁地址更新为新服务器的地址;
其中,取锁地址为双取锁地址的目标客户端通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址的目标客户端通过执行单取锁逻辑来获取分布式锁;
双取锁逻辑为根据当前配置的取锁地址分别向原服务器和新服务器请求获取分布式锁,在确定从原服务器和新服务器均获取到分布式锁时,判定取锁成功,在确定没有从原服务器或新服务器获取到分布式锁时,判定取锁失败,释放从原服务器或新服务器获取到的分布式锁。
本发明根据第四方面提供了一种分布式锁服务器的切换装置,在一个实施例中,该装置包括:
第一更新模块,用于响应于第一配置更新指示,将取锁地址更新为双取锁地址;双取锁地址包括原服务器的地址和新服务器的地址;原服务器和新服务器为分布式锁服务器;
第二更新模块,用于响应于第二配置更新指示,将取锁地址更新为新服务器的地址;
其中,取锁地址为双取锁地址时,通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址时,通过执行单取锁逻辑来获取分布式锁;
双取锁逻辑为根据当前配置的取锁地址分别向原服务器和新服务器请求获取分布式锁,在确定从原服务器和新服务器均获取到分布式锁时,判定取锁成功,在确定没有从原服务器或新服务器获取到分布式锁时,判定取锁失败,释放从原服务器或新服务器获取到的分布式锁。
本发明根据第五方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一方法的实施例的步骤。
本发明根据第六方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一方法的实施例的步骤。
本发明实施例中,在将各目标客户端的取锁服务器切换为新服务器时,通过对各目标客户端进行两次配置修改,第一次修改时,将各目标客户端的取锁地址修改为原服务器的地址和新服务器的地址,使得各目标客户端通过执行双取锁逻辑来获取分布式锁,当所有的目标客户端都完成第一次修改后就进行第二次修改,即将各目标客户端的取锁地址修改为新服务器的地址,使得各目标客户端通过执行单取锁逻辑来获取分布式锁。通过上述两次修改配置,能够实现在将各目标客户端的取锁服务器切换到新服务器的过程中,各目标客户端仍能够正常获取到分布式锁而不需要等待,提高了各目标客户端的取锁效率,并且还能够保证分布式锁的一致性,从而不会出现多个目标客户端一起操作同一个资源使得资源状态不一致的情况。
附图说明
图1为现有技术中锁迁移过程示意图;
图2为一个实施例中切换目标客户端使用的分布式锁服务器的变化示意图;
图3为一个实施例中一种分布式锁服务器的切换方法的流程示意图;
图4.1为一个实施例中第一次更新配置的变化示意图;
图4.2为一个实施例中第二次更新配置的变化示意图;
图5为另一个实施例中一种分布式锁服务器的切换方法的流程示意图;
图6为一个实施例中一种分布式锁服务器的切换装置的结构框图;
图7为另一个实施例中一种分布式锁服务器的切换装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
实施例一
在分布式锁服务器(旧服务器)性能不足时,需要使用一个性能更强的分布式锁服务器(新服务器)来将其替换,也就是需要将各客户端的取锁服务器从旧服务器切换为新服务器,其中通过图2所示的示例可以直观地了解到各客户端的取锁服务器从旧服务器切换为新服务器的前后变化。
为了能够在切换过程中提高客户端的取锁效率,本发明提供了一种分布式锁服务器的切换方法。如图3所示为本实施例提供的分布式锁服务器的切换方法所包含的步骤,即:
S110:向目标客户端集群发送第一配置更新指示。
S120:在各目标客户端的取锁地址均完成更新后,向目标客户端集群发送第二配置更新指示。
其中,该第一配置更新指示用于指示目标客户端集群中的各目标客户端将取锁地址更新为双取锁地址;第二配置更新指示用于指示各目标客户端将取锁地址更新为新服务器的地址。第一配置更新指示和第二配置更新指示可以由配置服务器发出,其中,可以是由相关人员(如开发人员、运营人员、测试人员等)指示配置服务器来发出第一配置更新指示,第二配置更新指示可以由配置服务器自动发出。
该双取锁地址包括原服务器的地址和新服务器的地址,原服务器和新服务器均为分布式锁服务器,具体可以是通过Redis、Zookeeper或者数据库实现的分布式锁中间件。
对于取锁地址被修改为双取锁地址的目标客户端,其会通过执行双取锁逻辑来获取分布式锁,而对于取锁地址被修改为新服务器的地址的目标客户端,则是通过执行单取锁逻辑来获取分布式锁。
其中,上述双取锁逻辑为根据当前配置的取锁地址分别向原服务器和新服务器请求获取分布式锁,在确定从原服务器和新服务器均获取到分布式锁时,判定取锁成功,在确定没有从原服务器或新服务器获取到分布式锁时,判定取锁失败,释放从原服务器或新服务器获取到的分布式锁。
上述单取锁逻辑为向当前配置的取锁地址对应的服务器请求获取分布式锁,在确定从该服务器获取到分布式锁时,判定取锁成功,在确定没有从该服务器获取到分布式锁时,判定取锁失败。还需要说明的是,各目标客户端在将取锁地址修改为双取锁地址之前,其取锁地址是原服务器的地址,其采用的取锁逻辑是单取锁逻辑。
本实施例通过上述步骤在将各目标客户端的取锁服务器切换为新服务器时,对目标客户端集群中的各目标客户端进行两次配置修改,第一次修改时,将各目标客户端的取锁地址修改为原服务器的地址和新服务器的地址,使得各目标客户端通过执行双取锁逻辑来获取分布式锁,当所有的目标客户端都完成第一次修改后就进行第二次修改,即将各目标客户端的取锁地址修改为新服务器的地址,使得各目标客户端通过执行单取锁逻辑来获取分布式锁。通过上述两个修改配置,能够实现在将各目标客户端的取锁服务器切换到新服务器的过程中,各目标客户端仍能够正常获取到分布式锁而不需要等待,提高了各目标客户端的取锁效率,并且还能够保证分布式锁的一致性,从而不会出现多个目标客户端一起操作同一个资源使得资源状态不一致的情况。
此外,本实施例采用的是客户端直接向分布式锁服务器请求获取分布式锁的方式,相比现有技术,少了协调服务器,因而,本实施例在实现时成本更低。还需要说明的是,本实施例是用新服务器替换原服务器来为各目标客户端提供服务,因而不需要迁移分布式锁的数据。
以下对上述步骤进行详细说明。
上述步骤中的,该目标客户端集群包括多个目标客户端。请参见图4.1中的(a)图,各目标客户端原先(即在进行第一次更新配置之前)均是向原服务器,即分布式锁集群A(以下简称集群A)请求获取分布式锁,在将集群A迁移至用于新的分布式锁集群B(以下简称集群B)的之后,集群B可以向各个客户端提供与集群A一样的分布式锁,比如,集群A可向各客户端提供1号锁、2号锁和3号锁,迁移后的集群B一样也能向各客户端提供1号锁、2号锁和3号锁,所以需要将各目标客户端的取锁服务器(即取锁地址对应的服务器)从集群A切换为集群B,以便让新服务器来为各目标客户端提供服务。
在将各目标客户端的取锁服务器从集群A切换为集群B时,需要将个目标客户端的取锁地址从集群A的地址切换为集群B的地址,具体可以通过修改各目标客户端的取锁地址这一配置信息来实现。发明人注意到,在修改各个目标客户端的取锁地址时,会存在一定的耗时(比如修改后的取锁地址要生效还可能需要对客户端进行重启)且不同客户端在修改取锁地址时所花费的时间可能不同,这样就可能出现部分客户端已经将取锁地址修改成新服务器的地址,而部分客户端还未完成取锁地址的修改(其此时的取锁地址仍是原服务器的地址)这种情况的出现,而在这种情况下便无法保证分布式锁的一致性,因为修改完取锁地址的目标客户端在需要获取分布式锁时会向新服务器请求获取分布式锁,而未修改完取锁地址的目标客户端在需要获取分布式锁时,仍然是向原服务器请求获取分布式锁,这种情况下,同一分布式锁就可能被不同客户端获取到进而无法保证锁的一致性,比如,修改完取锁地址的A客户端从新服务器取到1号锁,而未修改完取锁地址的B客户端从旧服务器也取到一号锁。
为此,在将各目标客户端的取锁服务器从集群A切换为集群B时,不直接将各目标客户端的取锁地址从集群A的地址切换为集群B的地址,而是对各目标客户端进行两次更新(即修改)配置,对于各目标客户端来说,在完成第一次更新配置后,其取锁地址从集群A的地址更新为集群A的地址和集群B的地址共两个地址,其取锁逻辑从单取锁逻辑更新为双取锁逻辑,即各目标客户端原先从当前配置的取锁地址对应的服务器(即原服务器)取到分布式锁之后,即默认取锁成功了,可执行后续操作,如对分布式锁对应的资源进行操作,在第一次修改后变成,分别从原服务器和新服务器请求获取分布式锁(可理解的,分别请求的分布式锁是指同一个锁),然后客户端自己再结合从该两个服务器的取锁结果来判断是否成功获取到该分布式锁,具体是只有从原服务器和新服务器请求都获取到该分布式锁时,才判定取锁成功,进而执行后续操作,而假如没有从任一个服务器获取到该分布式锁,那么就判定取锁失败,将本次获取到的分布式锁进行释放。在对各目标客户端进行第一次更新配置的过程中,会有部分目标客户端已将取锁地址更新为双取锁地址,还有部分目标客户端还未将取锁地址更新为双取锁地址,其使用的取锁地址仍是原服务器,比如,参见图4.1中的(b),其中客户端1已经完成的第一次更新配置,其是同时向集群A和集群B请求获取分布式锁,而其余4个客户端仍然是向集群A请求获取分布式锁,在这个过程中,各目标客户端的取锁地址要么是双取锁地址,要么是原服务器的地址,不存在部分目标客户端的取锁地址为原服务器的地址,部分目标客户端的取锁地址为新服务器的地址这样的情况,因此分布式锁的一致性能够得到保证,各目标客户端都可以正常向相关服务器请求获取分布式锁。
当各目标客户端均完成第一次更新配置时,各目标客户端的取锁地址就均是双取锁地址了,效果可参见图4.1中的(c)。
在各目标客户端均完成第一次更新配置后,就进行第二次更新配置。其中,在判断各目标客户端是否均完成第一更新配置时,可以在发送第一配置更新指示后,检测各目标客户端的启动状态,在确定各目标客户端均完成重启后,确定各目标客户端的取锁地址均完成更新。
需要强调的是,第二次更新配置进行时,必须保证所有目标客户端均已完成第一次更新配置,即取锁地址均为双取锁地址。需要这样要求的原因在于,假如在第二次更新配置时,存在部分目标客户端的取锁地址仍为原服务器,那么在对已完成第一次更新配置的目标客户端进行第二次更新配置之后,此时会存在部分目标客户端的取锁地址为原服务器,而部分目标客户端的取锁地址为新服务器,从前文可知,这种情况下无法保证分布式锁的一致性。因此,在各目标客户端均完成第一次更新配置后,再进行第二次更新配置,可以保证各目标客户端的取锁地址要么是双取锁地址,要么是新服务器的地址(比如图4.2中的(d)所示,客户端1已经完成的第二次更新配置,其取锁地址仅是集群B,而其余客户端则是同时向集群A和集群B请求获取分布式锁),而不会出现部分目标客户端的取锁地址为原服务器的地址,部分目标客户端的取锁地址为新服务器的地址这样的情况。
当各目标客户端均完成第二次更新配置时,各目标客户端的取锁地址就均是新服务器的地址了,效果可参见图4.2中的(e)。
实施例二
基于与实施例一相同的发明构思,本发明还提供了一种分布式锁服务器的切换方法,该方法可以应用于目标客户端,在本实施例中,如图5所示,该分布式锁服务器的切换方法包括以下方法:
S210:响应于第一配置更新指示,将取锁地址更新为双取锁地址。
其中,双取锁地址包括原服务器的地址和新服务器的地址;原服务器和新服务器为分布式锁服务器;
S220:响应于第二配置更新指示,将取锁地址更新为新服务器的地址。
其中,取锁地址为双取锁地址时,通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址时,通过执行单取锁逻辑来获取分布式锁;
双取锁逻辑为根据当前配置的取锁地址分别向原服务器和新服务器请求获取分布式锁,在确定从原服务器和新服务器均获取到分布式锁时,判定取锁成功,在确定没有从原服务器或新服务器获取到分布式锁时,判定取锁失败,释放从原服务器或新服务器获取到的分布式锁。
单取锁逻辑为向当前配置的取锁地址对应的服务器请求获取分布式锁,在确定从该服务器获取到分布式锁时,判定取锁成功,在确定没有从该分布式锁服务器获取到分布式锁时,判定取锁失败。
本实施例通过上述步骤在将目标客户端的取锁服务器切换为新服务器时,对目标客户端集群中的各目标客户端进行两次配置修改,第一次修改时,将各目标客户端的取锁地址修改为原服务器的地址和新服务器的地址,使得各目标客户端通过执行双取锁逻辑来获取分布式锁,当所有的目标客户端都完成第一次修改后就进行第二次修改,即将各目标客户端的取锁地址修改为新服务器的地址,使得各目标客户端通过执行单取锁逻辑来获取分布式锁。通过上述两个修改配置,能够实现在将各目标客户端的取锁服务器切换到新服务器的过程中,各目标客户端仍能够正常获取到分布式锁而不需要等待,提高了各目标客户端的取锁效率,并且还能够保证分布式锁的一致性,从而不会出现多个目标客户端一起操作同一个资源使得资源状态不一致的情况。
图3、图5为一个实施例中分布式锁服务器的切换方法的流程示意图。应该理解的是,虽然图3、图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3、图5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
实施例三
基于与实施例一相同的发明构思,本发明还提供了一种分布式锁服务器的切换装置。在一个实施例中,如图6所示,该分布式锁服务器的切换装置包括以下模块:
第一指示发送模块110,用于向目标客户端集群发送第一配置更新指示。
第一配置更新指示用于指示目标客户端集群中的各目标客户端将取锁地址更新为双取锁地址;双取锁地址包括原服务器的地址和新服务器的地址;原服务器和新服务器为分布式锁服务器;
第二指示发送模块120,用于在各目标客户端的取锁地址均完成更新后,向目标客户端集群发送第二配置更新指示。
第二配置更新指示用于指示各目标客户端将取锁地址更新为新服务器的地址;
其中,取锁地址为双取锁地址的目标客户端通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址的目标客户端通过执行单取锁逻辑来获取分布式锁;
双取锁逻辑为根据当前配置的取锁地址分别向原服务器和新服务器请求获取分布式锁,在确定从原服务器和新服务器均获取到分布式锁时,判定取锁成功,在确定没有从原服务器或新服务器获取到分布式锁时,判定取锁失败,释放从原服务器或新服务器获取到的分布式锁。
该装置还包括检测模块,用于在发送第一配置更新指示后,检测各目标客户端的启动状态,在确定各目标客户端均完成重启后,确定各目标客户端的取锁地址均完成更新。
关于分布式锁服务器的切换装置的具体限定可以参见实施例一中对于分布式锁服务器的切换方法的限定,在此不再赘述。上述分布式锁服务器的切换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
实施例四
基于与实施例二相同的发明构思,本发明还提供了一种分布式锁服务器的切换装置。在一个实施例中,如图7所示,该分布式锁服务器的切换装置包括以下模块:
第一更新模块210,用于响应于第一配置更新指示,将取锁地址更新为双取锁地址。
其中,双取锁地址包括原服务器的地址和新服务器的地址;原服务器和新服务器为分布式锁服务器;
第二更新模块220,用于响应于第二配置更新指示,将取锁地址更新为新服务器的地址。
其中,取锁地址为双取锁地址时,通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址时,通过执行单取锁逻辑来获取分布式锁;
双取锁逻辑为根据当前配置的取锁地址分别向原服务器和新服务器请求获取分布式锁,在确定从原服务器和新服务器均获取到分布式锁时,判定取锁成功,在确定没有从原服务器或新服务器获取到分布式锁时,判定取锁失败,释放从原服务器或新服务器获取到的分布式锁。
关于分布式锁服务器的切换装置的具体限定可以参见实施例一中对于分布式锁服务器的切换方法的限定,在此不再赘述。上述分布式锁服务器的切换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
实施例五
在本实施例中,提供了一种计算机设备,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储配置信息等数据,具体存储的数据还可以参见上述方法实施例中的限定。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种分布式锁服务器的切换方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在本实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
向目标客户端集群发送第一配置更新指示;第一配置更新指示用于指示目标客户端集群中的各目标客户端将取锁地址更新为双取锁地址;双取锁地址包括原服务器的地址和新服务器的地址;原服务器和新服务器为分布式锁服务器;在各目标客户端的取锁地址均完成更新后,向目标客户端集群发送第二配置更新指示,第二配置更新指示用于指示各目标客户端将取锁地址更新为新服务器的地址;其中,取锁地址为双取锁地址的目标客户端通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址的目标客户端通过执行单取锁逻辑来获取分布式锁;双取锁逻辑为根据当前配置的取锁地址分别向原服务器和新服务器请求获取分布式锁,在确定从原服务器和新服务器均获取到分布式锁时,判定取锁成功,在确定没有从原服务器或新服务器获取到分布式锁时,判定取锁失败,释放从原服务器或新服务器获取到的分布式锁。
在一个实施方式中,处理器执行计算机程序时,还实现以下步骤:
在发送所述第一配置更新指示后,检测各所述目标客户端的启动状态,在确定各所述目标客户端均完成重启后,确定各所述目标客户端的取锁地址均完成更新。
在本实施例中,还提供了另一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
响应于第一配置更新指示,将取锁地址更新为双取锁地址;所述双取锁地址包括原服务器的地址和新服务器的地址;所述原服务器和新服务器为分布式锁服务器;响应于第二配置更新指示,将取锁地址更新为新服务器的地址;其中,取锁地址为双取锁地址时,通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址时,通过执行单取锁逻辑来获取分布式锁;所述双取锁逻辑为根据当前配置的取锁地址分别向所述原服务器和所述新服务器请求获取分布式锁,在确定从所述原服务器和所述新服务器均获取到所述分布式锁时,判定取锁成功,在确定没有从所述原服务器或所述新服务器获取到所述分布式锁时,判定取锁失败,释放从所述原服务器或所述新服务器获取到的分布式锁。
实施例六
在本实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
向目标客户端集群发送第一配置更新指示;第一配置更新指示用于指示目标客户端集群中的各目标客户端将取锁地址更新为双取锁地址;双取锁地址包括原服务器的地址和新服务器的地址;原服务器和新服务器为分布式锁服务器;在各目标客户端的取锁地址均完成更新后,向目标客户端集群发送第二配置更新指示,第二配置更新指示用于指示各目标客户端将取锁地址更新为新服务器的地址;其中,取锁地址为双取锁地址的目标客户端通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址的目标客户端通过执行单取锁逻辑来获取分布式锁;双取锁逻辑为根据当前配置的取锁地址分别向原服务器和新服务器请求获取分布式锁,在确定从原服务器和新服务器均获取到分布式锁时,判定取锁成功,在确定没有从原服务器或新服务器获取到分布式锁时,判定取锁失败,释放从原服务器或新服务器获取到的分布式锁。
在一个实施方式中,计算机程序被处理器执行,还实现以下步骤:
在发送所述第一配置更新指示后,检测各所述目标客户端的启动状态,在确定各所述目标客户端均完成重启后,确定各所述目标客户端的取锁地址均完成更新。
在本实施例中,提供了另一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
响应于第一配置更新指示,将取锁地址更新为双取锁地址;所述双取锁地址包括原服务器的地址和新服务器的地址;所述原服务器和新服务器为分布式锁服务器;响应于第二配置更新指示,将取锁地址更新为新服务器的地址;其中,取锁地址为双取锁地址时,通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址时,通过执行单取锁逻辑来获取分布式锁;所述双取锁逻辑为根据当前配置的取锁地址分别向所述原服务器和所述新服务器请求获取分布式锁,在确定从所述原服务器和所述新服务器均获取到所述分布式锁时,判定取锁成功,在确定没有从所述原服务器或所述新服务器获取到所述分布式锁时,判定取锁失败,释放从所述原服务器或所述新服务器获取到的分布式锁
本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种分布式锁服务器的切换方法,其特征在于,所述方法包括:
向目标客户端集群发送第一配置更新指示;所述第一配置更新指示用于指示所述目标客户端集群中的各目标客户端将取锁地址更新为双取锁地址;所述双取锁地址包括原服务器的地址和新服务器的地址;所述原服务器和新服务器为分布式锁服务器;
在各所述目标客户端的取锁地址均完成更新后,向目标客户端集群发送第二配置更新指示,所述第二配置更新指示用于指示各所述目标客户端将取锁地址更新为新服务器的地址;
其中,取锁地址为双取锁地址的目标客户端通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址的目标客户端通过执行单取锁逻辑来获取分布式锁;
所述双取锁逻辑为根据当前配置的取锁地址分别向所述原服务器和所述新服务器请求获取分布式锁,在确定从所述原服务器和所述新服务器均获取到所述分布式锁时,判定取锁成功,在确定没有从所述原服务器或所述新服务器获取到所述分布式锁时,判定取锁失败,释放从所述原服务器或所述新服务器获取到的分布式锁;
所述单取锁逻辑为向当前配置的取锁地址对应的服务器请求获取分布式锁,在确定从该服务器获取到所述分布式锁时,判定取锁成功,在确定没有从该服务器获取到所述分布式锁时,判定取锁失败。
2.如权利要求1所述的方法,其特征在于,各所述目标客户端的取锁地址在更新为双取锁地址之前,为所述原服务器的地址;取锁地址为原服务器的地址的目标客户端通过执行单取锁逻辑来获取分布式锁。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
在发送所述第一配置更新指示后,检测各所述目标客户端的启动状态,在确定各所述目标客户端均完成重启后,确定各所述目标客户端的取锁地址均完成更新。
4.一种分布式锁服务器的切换方法,其特征在于,所述方法包括:
响应于第一配置更新指示,将取锁地址更新为双取锁地址;所述双取锁地址包括原服务器的地址和新服务器的地址;所述原服务器和新服务器为分布式锁服务器;
响应于第二配置更新指示,将取锁地址更新为新服务器的地址;
其中,取锁地址为双取锁地址时,通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址时,通过执行单取锁逻辑来获取分布式锁;
所述双取锁逻辑为根据当前配置的取锁地址分别向所述原服务器和所述新服务器请求获取分布式锁,在确定从所述原服务器和所述新服务器均获取到所述分布式锁时,判定取锁成功,在确定没有从所述原服务器或所述新服务器获取到所述分布式锁时,判定取锁失败,释放从所述原服务器或所述新服务器获取到的分布式锁;
所述单取锁逻辑为向当前配置的取锁地址对应的服务器请求获取分布式锁,在确定从该服务器获取到所述分布式锁时,判定取锁成功,在确定没有从该服务器获取到所述分布式锁时,判定取锁失败。
5.一种分布式锁服务器的切换装置,其特征在于,所述装置包括:
第一指示发送模块,用于向目标客户端集群发送第一配置更新指示;所述第一配置更新指示用于指示所述目标客户端集群中的各目标客户端将取锁地址更新为双取锁地址;所述双取锁地址包括原服务器的地址和新服务器的地址;所述原服务器和新服务器为分布式锁服务器;
第二指示发送模块,用于在各所述目标客户端的取锁地址均完成更新后,向目标客户端集群发送第二配置更新指示,所述第二配置更新指示用于指示各所述目标客户端将取锁地址更新为新服务器的地址;
其中,取锁地址为双取锁地址的目标客户端通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址的目标客户端通过执行单取锁逻辑来获取分布式锁;
所述双取锁逻辑为根据当前配置的取锁地址分别向所述原服务器和所述新服务器请求获取分布式锁,在确定从所述原服务器和所述新服务器均获取到所述分布式锁时,判定取锁成功,在确定没有从所述原服务器或所述新服务器获取到所述分布式锁时,判定取锁失败,释放从所述原服务器或所述新服务器获取到的分布式锁;所述单取锁逻辑为向当前配置的取锁地址对应的服务器请求获取分布式锁,在确定从该服务器获取到所述分布式锁时,判定取锁成功,在确定没有从该服务器获取到所述分布式锁时,判定取锁失败。
6.一种分布式锁服务器的切换装置,其特征在于,所述装置包括:
第一更新模块,用于响应于第一配置更新指示,将取锁地址更新为双取锁地址;所述双取锁地址包括原服务器的地址和新服务器的地址;所述原服务器和新服务器为分布式锁服务器;
第二更新模块,用于响应于第二配置更新指示,将取锁地址更新为新服务器的地址;
其中,取锁地址为双取锁地址时,通过执行双取锁逻辑来获取分布式锁,取锁地址为新服务器的地址时,通过执行单取锁逻辑来获取分布式锁;
所述双取锁逻辑为根据当前配置的取锁地址分别向所述原服务器和所述新服务器请求获取分布式锁,在确定从所述原服务器和所述新服务器均获取到所述分布式锁时,判定取锁成功,在确定没有从所述原服务器或所述新服务器获取到所述分布式锁时,判定取锁失败,释放从所述原服务器或所述新服务器获取到的分布式锁;所述单取锁逻辑为向当前配置的取锁地址对应的服务器请求获取分布式锁,在确定从该服务器获取到所述分布式锁时,判定取锁成功,在确定没有从该服务器获取到所述分布式锁时,判定取锁失败。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110601804.7A CN113268348B (zh) | 2021-05-31 | 2021-05-31 | 分布式锁服务器的切换方法、装置、计算机设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110601804.7A CN113268348B (zh) | 2021-05-31 | 2021-05-31 | 分布式锁服务器的切换方法、装置、计算机设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113268348A CN113268348A (zh) | 2021-08-17 |
CN113268348B true CN113268348B (zh) | 2023-03-21 |
Family
ID=77233672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110601804.7A Active CN113268348B (zh) | 2021-05-31 | 2021-05-31 | 分布式锁服务器的切换方法、装置、计算机设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113268348B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488530A (zh) * | 2013-09-17 | 2014-01-01 | 新浪网技术(中国)有限公司 | 一种锁迁移方法及装置 |
CN111026807A (zh) * | 2019-11-25 | 2020-04-17 | 深圳壹账通智能科技有限公司 | 分布式锁的同步方法、装置、计算机设备及可读存储介质 |
CN112565467A (zh) * | 2021-02-22 | 2021-03-26 | 常州微亿智造科技有限公司 | 业务处理方法、装置和存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8924370B2 (en) * | 2011-05-31 | 2014-12-30 | Ori Software Development Ltd. | Efficient distributed lock manager |
US9542414B1 (en) * | 2013-01-11 | 2017-01-10 | Netapp, Inc. | Lock state reconstruction for non-disruptive persistent operation |
US9367346B2 (en) * | 2013-02-20 | 2016-06-14 | Nec Corporation | Accelerating distributed transactions on key-value stores through dynamic lock localization |
-
2021
- 2021-05-31 CN CN202110601804.7A patent/CN113268348B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488530A (zh) * | 2013-09-17 | 2014-01-01 | 新浪网技术(中国)有限公司 | 一种锁迁移方法及装置 |
CN111026807A (zh) * | 2019-11-25 | 2020-04-17 | 深圳壹账通智能科技有限公司 | 分布式锁的同步方法、装置、计算机设备及可读存储介质 |
CN112565467A (zh) * | 2021-02-22 | 2021-03-26 | 常州微亿智造科技有限公司 | 业务处理方法、装置和存储介质 |
Non-Patent Citations (3)
Title |
---|
Distributed lock management in a transaction processing environment;A.B. Hastings等;《Proceedings Ninth Symposium on Reliable Distributed Systems》;20020806;全文 * |
基于Linux集群技术的计算机联锁系统研究;范丽等;《微计算机信息》;20080305(第07期);全文 * |
基于Zookeeper的分布式锁服务及性能优化;刘芬等;《基于Zookeeper的分布式锁服务及性能优化》;20141231;第51卷;第229-234页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113268348A (zh) | 2021-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110555041A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN110955508B (zh) | 基于分布式架构的异步任务调度方法、装置和计算机设备 | |
CN110602169B (zh) | 服务调用方法、装置、计算机设备和存储介质 | |
CN108874549B (zh) | 资源复用方法、装置、终端和计算机可读存储介质 | |
CN109460252B (zh) | 基于git的配置文件处理方法、装置和计算机设备 | |
CN111343236A (zh) | 服务端与客户端进行通讯的方法、装置、通讯系统 | |
CN115509756A (zh) | 多集群计算任务提交方法及相关装置、设备 | |
CN111159233A (zh) | 分布式缓存方法、系统、计算机设备以及存储介质 | |
CN111198921A (zh) | 数据库的切换方法、装置、计算机设备和存储介质 | |
CN109660393B (zh) | 一种云主机规格的更新方法及其装置 | |
CN113612814B (zh) | 一种会话信息的筛选方法、装置、终端及存储介质 | |
CN111506388B (zh) | 容器性能探测方法、容器管理平台及计算机存储介质 | |
CN113268348B (zh) | 分布式锁服务器的切换方法、装置、计算机设备和介质 | |
CN113377669A (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN113190371A (zh) | 一种任务补偿方法、装置、电子设备及可读存储介质 | |
CN115221156A (zh) | 数据库集群扩容方法、装置、计算机设备和存储介质 | |
CN111782447A (zh) | 基于ssh服务的批量测试更新方法、装置和计算机设备 | |
CN111159025A (zh) | 应用程序接口测试方法、装置、计算机设备和存储介质 | |
CN111026988A (zh) | 一种页面加载的方法、装置、系统及计算机设备 | |
CN114138408B (zh) | 克隆卷创建的方法、装置、计算机设备和存储介质 | |
CN114416689A (zh) | 数据迁移方法、装置、计算机设备、存储介质 | |
CN112149951A (zh) | 风险控制方法、装置、计算机设备和存储介质 | |
CN110162507B (zh) | 快照覆写方法、装置、计算机设备及存储介质 | |
CN116627603A (zh) | 基板管理控制器线程处理方法、系统、设备和介质 | |
CN115334000A (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 |