CN113076187A - 分布式锁管理方法及装置 - Google Patents
分布式锁管理方法及装置 Download PDFInfo
- Publication number
- CN113076187A CN113076187A CN202010003853.6A CN202010003853A CN113076187A CN 113076187 A CN113076187 A CN 113076187A CN 202010003853 A CN202010003853 A CN 202010003853A CN 113076187 A CN113076187 A CN 113076187A
- Authority
- CN
- China
- Prior art keywords
- service node
- lock
- client
- distributed lock
- distributed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000007726 management method Methods 0.000 title claims abstract description 29
- 238000000034 method Methods 0.000 claims abstract description 44
- 230000005012 migration Effects 0.000 claims abstract description 29
- 238000013508 migration Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 22
- 238000004590 computer program Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 230000001960 triggered effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- 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
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种分布式锁管理方法及装置,其中,该方法包括:第一服务节点将待迁移的分布式锁设置为第一状态,在所述第一状态下,所述分布式锁不可被分配;将所述分布式锁从所述第一服务节点迁移到第二服务节点;获取所述分布式锁在所述第二服务节点的路由信息;基于所述路由信息,对客户端发送的锁请求进行处理。本发明提供的技术方案实现了分布式锁的在线迁移,且不涉及下线或停进程的操作,可以避免出现迁移过程中的单点故障风险,因而可以提高资源利用率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种分布式锁管理方法及装置。
背景技术
随着业务规模的发展,分布式***被广泛应用在各种业务场景中。当分布式***的客户端(client)数量迅速增加,单个服务单元所承载的服务压力也越来越大。为了保证服务质量,一种常用的方式是增加新的服务节点,将部分服务请求迁移到新增加的服务节点进行处理。分布式锁作为分布式***中实现共享资源互斥访问、保证数据一致性的重要媒介,如何在线迁移分布式锁是迫切需要解决的问题。
当分布式锁从一个服务节点迁移至另一个服务节点,需要保证不会出现两个或两个以上的客户端同时以为持有该分布式锁。为此,一种迁移方案是在进行分布式锁迁移前,禁止未持有分布式锁的其他客户端的抢锁行为,仅保留当前持有该分布式锁的客户端;然后,通过触发该客户端获取分布式锁在新的服务节点的路由信息并重新进行抢锁,让其在新的服务节点进行抢锁。当该客户端抢锁成功后,再允许之前被禁止抢锁的其他客户端根据路由信息在新的服务节点中进行抢锁。
然而,上述的迁移方案,由于在迁移时,只允许当前持有该分布式锁的客户端根据路由信息在新的服务节点中抢锁,若此时该客户端所在的设备发生故障,那么就没有其他的客户端抢锁和对外提供服务,导致在该客户端恢复故障并成功抢锁的这个时间段内,该分布式锁对应的互斥资源处于不可用状态,从而降低了***可用性和资源使用效率。
发明内容
有鉴于此,本发明提供一种分布式锁管理方法及装置,用于提高***可用性和资源利用率。
为了实现上述目的,第一方面,本发明实施例提供一种分布式锁管理方法,包括:
第一服务节点将待迁移的分布式锁设置为第一状态,在所述第一状态下,所述分布式锁不可被分配;
将所述分布式锁从所述第一服务节点迁移到第二服务节点;
获取所述分布式锁在所述第二服务节点的路由信息;
基于所述路由信息,对客户端发送的锁请求进行处理。
第二方面,本发明实施例提供一种分布式锁管理装置,包括:
设置单元,用于第一服务节点将待迁移的分布式锁设置为第一状态,在所述第一状态下,所述分布式锁不可被分配;
迁移单元,用于将所述分布式锁从所述第一服务节点迁移到第二服务节点;
获取单元,用于获取所述分布式锁在所述第二服务节点的路由信息;
处理单元,用于基于所述获取单元得到的路由信息,对客户端发送的锁请求进行处理。
第三方面,本发明实施例还提供一种分布式锁管理装置,包括:存储器和处理器,存储器用于存储计算机程序;处理器用于在调用计算机程序时执行上述第一方面实施方式所述的管理方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面实施方式所述的管理方法。
本发明实施例提供的分布式锁管理方法及装置,通过将第一服务节点上的待迁移分布式锁的状态设置为不可被分配的第一状态,从而禁止客户端在第一服务节点上抢该待迁移分布式锁,满足待迁移分布式锁的迁移条件,并将该分布式锁迁移至第二服务节点,获取其在第二服务节点上的路由信息,以告知客户端分布式锁已经迁移至第二服务节点,将客户端的锁请求引导至第二服务节点。在该迁移过程中,不涉及客户端、服务节点的下线或停进程的操作,可以避免出现迁移过程中的单点故障风险,从而可以避免造成资源使用效率的浪费,进而可以提高资源利用率。
附图说明
图1为本发明实施例提供的分布式***的结构示意图;
图2为本发明实施例提供的一种分布式锁管理方法的流程示意图;
图3为本发明实施例提供的另一种分布式锁管理方法的流程示意图;
图4为本发明实施例提供的分布式锁的迁移过程示意图;
图5为本发明实施例提供的一种分布式锁管理装置的结构示意图;
图6为本发明实施例提供的另一种分布式锁管理装置的结构示意图;
图7为本发明实施例提供的客户端与服务节点的访问流程图;
图8为本发明实施例提供的客户端访问服务节点过程中的心跳机制示意图。
具体实施方式
针对目前的分布式锁迁移方案由于迁移时需要确保只保留一个抢锁客户端,因而在该客户端所在的设备发生故障时会造成资源使用效率降低的技术问题,本发明实施例提供一种分布式锁管理方法及装置,主要通过将第一服务节点上的待迁移分布式锁的状态设置为不可被分配的第一状态,从而禁止客户端在第一服务节点上抢该待迁移分布式锁,满足待迁移分布式锁的迁移条件,并将该分布式锁迁移至第二服务节点,获取其在第二服务节点上的路由信息,以告知客户端分布式锁已经迁移至第二服务节点,将客户端的锁请求引导至第二服务节点。在该迁移过程中,不涉及客户端、服务节点的下线或停进程的操作,可以避免出现迁移过程中的单点故障风险,从而可以避免造成资源使用效率的浪费,进而可以提高资源利用率。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
为了便于理解,下面首先对分布式***进行说明。
图1为本发明实施例提供的分布式***的结构示意图,如图1所示,本实施例中,分布式***包括客户端和服务节点,其中,客户端和服务节点的数量均可以一个或多个(图中是以两个客户端和一个服务节点为例进行示例性说明),每个服务节点中包括多个服务,每个服务节点均维护着分布式***的内存数据库,以及持久化存储的事务日志与快照数据。
具体的,服务节点中可以有一把或多把分布式锁,针对同一把分布式锁会有多个客户端进行争抢,但至多只有一个客户端可以争抢成功,抢到分布式锁的客户端可以访问对应的互斥资源(包括文件和数据库表等),提供服务,未抢到锁的客户端则处于等待状态。
在具体实现时,如图7所示,当需要对互斥资源进行操作时,客户端会先获取分布式锁的路由信息(GetRoute),然后根据路由信息向对应服务节点中的服务申请获取对应的分布式锁(TryLock);获取成功后,客户端就可以对互斥资源进行操作,在操作过程中,客户端会通过心跳机制(Heartbeat)确定分布式锁的有效性。
分布式锁通过客户端与服务节点之间的心跳机制更新生命期,客户端抢占到分布式锁后,定期向服务节点发送心跳信息;服务节点接收到客户端发送的心跳信息后,返回心跳响应。如图8所示,图中的租约(Lease)是指客户端访问服务节点中互斥资源的时间期限。当服务节点在本端规定时间内没有收到来自客户端的心跳信息时,就可以将分布式锁清理,以释放分布式锁的所有权;当客户端在本端规定时间内没有收到来自服务节点的心跳响应时,就可以认为客户端锁占用的分布式锁已经丢失,然后则进行丢锁处理,释放分布式锁的所有权。
客户端在与服务节点建立连接时,可以选择分布式***中的任一服务节点建立连接,并可以在该服务节点注册一个全局唯一的会话;对于抢占分布式锁成功的客户端,服务节点可以记录会话与分布式锁的关联关系。客户端在发送心跳信息时,心跳信息与会话相关联,分布式锁的生命期也即会话的生命期,其通过上述定期心跳机制更新。
下面对本发明实施例提供的方法进行说明。
图2为本发明实施例提供的一种分布式锁管理方法的流程示意图,该方法的执行主体为服务节点。如图2所示,本实施例提供的方法可以包括如下步骤:
S110、第一服务节点将待迁移的分布式锁设置为第一状态。
其中,迁移的分布式锁在所述第一状态下不可被分配。由于分布式锁需要被迁移至第二服务节点,需要将该分布式锁的工作状态调整到无客户端占用的状态。因此,不可被分配具体是指,在分布式锁处于无客户端占用的状态时,所有的客户端将无法通过第一服务节点去抢占该分布式锁;而在分布式锁处于有客户端占用的状态时,其他客户端同样无法通过第一服务节点去抢占该分布式锁,并且第一服务节点将终止分布式锁的保活机制,即对客户端发送的心跳信息不做处理,从而使得分布式锁失效,成为无客户端占用的状态。在实际应用中,分布式锁在第一状态下将忽略客户端发送的锁心跳信息,使得客户端感知到丢锁,从而重新发送锁请求。对于待迁移的分布式锁(即目标分布式锁),第一服务节点在接收到占有该目标分布式锁的客户端发送的心跳信息时,停止响应该心跳信息,这样就会触发该客户端与服务所在第一服务节点之间的连接断开,从而触发该客户端丢锁,使得目标分布式锁被释放。
具体的,第一服务节点在接收到心跳信息时,可以根据心跳信息所关联的会话与目标分布式锁所关联的会话来判断是否是占有目标分布式锁的客户端发送的心跳信息。当心跳信息所关联的会话与目标分布式锁所关联的会话一致时,即表示接收到占有目标分布式锁的客户端发送的心跳信息。
本步骤中,待迁移的分布式锁设置在第一服务节点上,或者是客户端需要通过该第一服务节点来抢占待迁移的分布式锁。
S120、将分布式锁从第一服务节点迁移到第二服务节点。
在执行本步骤时,要确定分布式锁是处于第一状态的,即该分布式锁处于被释放状态,并且客户端不能抢占该分布式锁。
此外,第二服务节点可以是指定的服务节点,也可以是根据检测得到的新服务节点。
S130、获取分布式锁在第二服务节点的路由信息。
在完成分布式锁的迁移操作后,还需要确定分布式锁在第二服务节点的路由信息,该路由信息用于重定向客户端访问的分布式锁。
S140、基于路由信息,对客户端发送的锁请求进行处理。
在得到路由信息后,根据分布式***中的访问规则,利用该路由信息将客户端的锁请求引导至第二服务节点。比如,当客户端的访问对象为第一服务节点时,分布式***将路由信息保存至第一服务节点中,以供第一服务节点反馈路由信息,告知客户端使用该路由信息向第二服务节点发送锁请求;当客户端的访问对象为代理服务节点时,分布式***将路由信息保存至代理服务节点中,由该代理服务节点反馈路由信息,告知客户端使用该路由信息向第二服务节点发送锁请求,或者是直接代理客户端向第二服务节点发送锁请求。
进一步的,图3为本发明实施例提供的另一种分布式锁管理方法的流程示意图,本实施例是上述图2所示实施例中的一种具体的实现方式。如图3所示,本实施例提供的方法可以包括如下步骤:
S210、将待迁移的分布式锁加入黑名单。
其中,黑名单是第一状态的一种具体实现方式,当将待迁移的分布式锁加入黑名单后,将触发客户端与第一服务节点的连接断开,使得客户端感知到丢锁,从而重新发送锁请求。
具体的,当第一服务节点在接收到客户端发送的心跳信息时,可以判断与该心跳信息相关的分布式锁是否存在于黑名单中;若是,则可以确定接收到占有目标分布式锁的客户端发送的心跳信息。其中,与心跳信息相关的分布式锁可以通过心跳信息与会话的关联关系以及分布式锁与会话的关联关系确定,心跳信息相关的分布式锁即为该心跳信息相关联的会话所关联的分布式锁。而黑名单中可以包括一个或多个分布式锁,本实施例中所述的目标分布式锁可以是黑名单中的任意一个分布式锁;黑名单中的分布式锁处于第一状态,即黑名单中的分布式锁无法从该第一服务节点中被分配和占用;在***启动时,分布式***可以从多个服务节点可以选出一个服务节点作为主服务节点,其余服务节点作为从服务节点,在设置黑名单时,则可以通过主服务节点设置,然后同步到各个从服务节点上。
如图4中(a)图所示,当当前服务节点(即默认服务节点)的服务能力出现瓶颈时,或者需要保证特定分布式锁的服务质量进行物理级别隔离时,可以增加一个新的服务节点(即目标服务节点)提供服务;此时可以将待迁移的分布式锁(即目标分布式锁)迁入目标服务节点中。其中,灰色方框表示占有目标分布式锁的客户端,白色方框表示未抢占到锁的客户端。
如图4中(b)图所示,当需要将默认服务节点中待迁移的分布式锁迁入目标服务节点中时,可以将待迁移的分布式锁加入黑名单,使该分布式锁处于第一状态,即该分布式锁无法在默认服务节点中被分配和占用。
当默认服务节点中的服务接收到客户端发送的心跳信息时,可以根据预存的心跳信息与会话的关联关系和分布式锁与会话的关联关系,确定该心跳信息相关的分布式锁,进而查看该心跳信息相关的分布式锁是否存在于黑名单中;若该心跳信息相关的分布式锁存在于黑名单中,则说明该心跳信息对应的分布式锁需要迁移;若该心跳信息相关的分布式锁不存在于黑名单中,则说明该心跳信息对应的分布式锁无需迁移,可以返回对应的心跳响应。
当与该心跳信息相关的分布式锁存在于黑名单中时,说明发送该心跳信息的客户端占有的分布式锁是待迁移的分布式锁(即目标分布式锁),此时将停止响应该心跳信息,这样就会触发该客户端与服务所在第一服务节点之间的连接断开,从而触发该客户端丢锁(如图4中(c)图所示的灰色方框变为白色方框),使得目标分布式锁被释放,同时,由于该目标分布式在黑名单中,也不能由其他客户端抢锁占用。
通过上述图4所示的内容可知,在待迁移的分布式锁设置为第一状态时,对于分布式锁被客户端占用后,需要通过心跳机制让所述分布式锁被释放,即对接收到的该客户端发送的锁心跳信息停止响应。然而,在将待迁移的分布式锁设置为第一状态时,该分布式锁除了已被客户端占用的状态之外,还存在未被客户端占用的情况,此时,对于客户端针对该分布式锁发送的锁请求,也会停止响应,从而实现将未被客户端占用的分布式锁从第一服务节点迁移到第二服务节点的目的。
S220、将分布式锁从第一服务节点迁移到第二服务节点。
本步骤是在分布式锁被设置为第一状态之后,处于无客户端占用状态下,从第一服务节点迁移到第二服务节点。
进一步的,在执行迁移之前,需要确定分布式锁的占用状态,具体的,可以通过判断第一服务节点在预设时间段内是否接收到占用该分布式锁的客户端发送的锁心跳信息实现,若接收到,则说明分布式锁还存在占用的客户端,此时,停止响应该锁心跳信息,并将预设时间段的时间重置。直至在该时间段内未接收到锁心跳信息,就说明分布式锁已失效,此时执行迁移操作。
S230、获取分布式锁在第二服务节点的路由信息。
具体的,在获取该路由信息时,需要判断分布式锁是否已经迁移至第二服务节点,若完成迁移,则获取分布式锁在第二服务节点的路由信息。也就是说,本步骤需要对迁移过程进行实时监测,以确定迁移操作的完成情况,从而确定路由信息。
在分布式***中,可以由主服务节点更新分布式锁在第二服务节点的路由信息,然后同步到各个从服务节点,实现路由信息的更新(如图4中(d)图所示的更新目标分布式锁的路由信息)。
S240、基于路由信息处理客户端发送的锁请求。
具体的,占有目标分布式锁的客户端发送的心跳信息在无法得到响应后,客户端会感知到丢锁,当该客户端意识到丢锁后,会重新进行抢锁;该目标分布式锁对应的其他客户端也可以进行抢锁,在具体抢锁时,客户端会先获取目标分布式锁的路由信息,此时则可以将分布式锁在新的服务节点(即目标服务单元)中对应的路由信息提供给客户端,将客户端重定向到目标服务节点中进行抢锁。
本实施例中,分布式锁的路由信息可以存储在第一服务节点中,也可以存储在其他设备(代理服务节点)中,该其他设备具体可以是专门用于存放管理分布式锁路由信息的路由存储设备,也可以是设置在客户端与服务节点之间的代理设备(客户端与服务节点之间的数据传输均通过代理设备路由到对端)。
当分布式锁的路由信息存储在第一服务节点中时,第一服务节点会接收到客户端发送的用于请求获取目标分布式锁的锁请求,此时,第一服务节点可以将目标分布式锁在第二服务节点中对应的路由信息返回给客户端,则客户端会根据该路由信息在第二服务节点中抢占目标分布式锁。
当分布式锁的路由信息存储在其他设备中时,第一服务节点可以指示该其他设备在接收到客户端发送的用于请求获取目标分布式锁的锁请求时,将目标分布式锁在第二服务节点中对应的路由信息返回给客户端,使客户端根据该路由信息在第二服务节点中抢占目标分布式锁。具体实现时,第一服务节点可以向其他设备发送通知消息,其他设备接收到该消息后,若接收到目标分布式锁对应的锁请求,就向客户端返回目标分布式锁在第二服务节点中对应的路由信息。如图4中(d)图所示,客户端加载完路由信息后,就可以根据路由信息到第二服务节点中抢占所述目标分布式锁。
进一步的,本实施例中,由于是在确定分布式锁被释放后再执行迁移操作的,也就是说,在迁移前,分布式锁不存在被占用的客户端,在迁移后,客户端再根据路由信息重新抢占该分布式锁,如此就确保了不会出现两个或两个以上的客户端同时认为占有着该分布式锁的情况。
此外,现有的迁移方案,若某些客户端的版本因为意外回退,会到原来的第一服务节点(即图4中的默认服务节点)中去抢锁,这样就会出现对于同一个分布式锁同时在两个服务节点中被占用,即出现一锁多占的现象。而本实施例中,目标分布式锁在原来的第一服务节点被加黑,其无法被分配和占用,这样即使客户端回到原来的第一服务节点中抢锁,也无法抢占到目标分布式锁,因而可以避免出现一锁多占的现象。即通过将待迁移的分布式锁加入黑名单,可以避免版本回退引起的一锁多占现象。
基于同一发明构思,作为对上述方法的实现,本发明实施例提供了一种分布式锁管理装置,该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。
图5为本发明实施例提供的分布式锁管理装置的结构示意图,本实施例提供的装置可以是独立的设备,也可以集成在上述服务节点中。如图5所示,本实施例提供的装置包括:
设置单元31,用于第一服务节点将待迁移的分布式锁设置为第一状态,在所述第一状态下,所述分布式锁不可被分配;
迁移单元32,用于将被所述设置单元31设置为第一状态的分布式锁从所述第一服务节点迁移到第二服务节点;
获取单元33,用于获取所述分布式锁在所述第二服务节点的路由信息;
处理单元34,用于基于所述获取单元33得到的路由信息,对客户端发送的锁请求进行处理。
进一步的,如图5所示,所述装置还包括:
响应单元35,用于在所述待迁移的分布式锁处于第一状态时,若所述分布式锁已被客户端占用,则所述第一服务节点停止响应客户端发送的锁心跳信息;若所述分布式锁未被客户端占用,则所述第一服务节点停止响应客户端发送的锁请求。
进一步的,如图5所示,所述处理单元34包括:
第一存储模块341,用于将所述路由信息保存至第一服务节点中;
第一处理模块342,用于当接收到客户端向第一服务节点发送锁请求,所述第一服务节点向所述客户端反馈所述路由信息,以使所述客户端根据所述路由信息向第二服务节点发送锁请求。
进一步的,如图5所示,所述处理单元34包括:
第二存储模块343,用于将所述路由信息保存在代理服务节点;
第二处理模块344,用于将客户端的锁请求发送至所述代理服务节点,由所述代理服务节点根据所述路由信息处理所述客户端发送的锁请求。
进一步的,所述第二处理模块344还用于,所述代理服务节点向所述客户端反馈所述路由信息,以使所述客户端根据所述路由信息向第二服务节点发送的锁请求;或者,所述代理服务节点根据所述路由信息向第二服务节点发送的锁请求,并将所述锁请求的结果反馈至所述客户端。
进一步的,如图5所示,所述装置还包括:
管理单元36,用于在所述迁移单元32将所述分布式锁从所述第一服务节点迁移到第二服务节点之前,若所述第一服务节点在预设时间段内未接收到占用所述分布式锁的客户端发送的锁心跳信息,则清理所述客户端占用的分布式锁,以释放所述分布锁的所有权。
进一步的,如图5所示,所述获取单元33包括:
判断模块331,用于判断所述分布式锁是否迁移至所述第二服务节点;
获取模块332,用于在确定迁移至所述第二服务节点时,获取所述分布式锁在所述第二服务节点的路由信息。
本实施例提供的装置可以执行上述方法实施例,其实现原理与技术效果类似,此处不再赘述。
基于同一发明构思,本发明实施例还提供了一种分布式锁管理装置。图6为本发明实施例提供的分布式锁管理装置的结构示意图,如图6所示,本实施例提供的服务器包括:存储器41和处理器42,存储器41用于存储计算机程序;处理器42用于在调用计算机程序时执行上述方法实施例所述的方法。
本实施例提供的服务器可以执行上述方法实施例,其实现原理与技术效果类似,此处不再赘述。
本发明实施例还提供一种分布式***,该***包括客户端与图6所示的分布式锁管理装置。
该服务器用于用于管理各个服务节点中分布式锁的迁移,其中,当第一服务节点存在待迁移的分布式锁时,第一服务节点将所述分布式锁设置为第一状态,在所述第一状态下,该分布式锁不可被分配,基于分布锁所采用的心跳保活机制,使得该分布锁被释放,此时,所述服务器将该分布式锁从第一服务节点迁移到第二服务节点,并且获取分布式锁在第二服务节点的路由信息;基于该路由信息,对客户端发送的锁请求进行处理。
该分布式***中的客户端用于在向待迁移的分布式锁发送锁请求时,接收服务器反馈的第二服务节点的路由信息,根据该路由信息向第二服务节点发送锁请求。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例所述的方法。
本领域技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储,信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种分布式锁管理方法,其特征在于,包括:
第一服务节点将待迁移的分布式锁设置为第一状态,在所述第一状态下,所述分布式锁不可被分配;
将所述分布式锁从所述第一服务节点迁移到第二服务节点;
获取所述分布式锁在所述第二服务节点的路由信息;
基于所述路由信息,对客户端发送的锁请求进行处理。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述待迁移的分布式锁处于第一状态时,若所述分布式锁已被客户端占用,则所述第一服务节点停止响应客户端发送的锁心跳信息;若所述分布式锁未被客户端占用,则所述第一服务节点停止响应客户端发送的锁请求。
3.根据权利要求1或2所述的方法,其特征在于,基于所述路由信息,对客户端发送的锁请求进行处理,包括:
将所述路由信息保存至第一服务节点中;
当接收到客户端向第一服务节点发送的锁请求,所述第一服务节点向所述客户端反馈所述路由信息,以使所述客户端根据所述路由信息向第二服务节点发送锁请求。
4.根据权利要求1或2所述的方法,其特征在于,基于所述路由信息,对客户端发送的锁请求进行处理,包括:
将所述路由信息保存在代理服务节点;
将客户端的锁请求发送至所述代理服务节点,由所述代理服务节点根据所述路由信息处理所述客户端发送的锁请求。
5.根据权利要求4所述的方法,其特征在于,由所述代理服务节点根据所述路由信息处理所述客户端发送的锁请求,包括:
所述代理服务节点向所述客户端反馈所述路由信息,以使所述客户端根据所述路由信息向第二服务节点发送锁请求;或者
所述代理服务节点根据所述路由信息向第二服务节点发送锁请求,并将所述锁请求的结果反馈至所述客户端。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在将所述分布式锁从所述第一服务节点迁移到第二服务节点之前,若所述第一服务节点在预设时间段内未接收到占用所述分布式锁的客户端发送的锁心跳信息,则清理所述客户端占用的分布式锁,以释放所述分布锁。
7.一种分布式锁管理装置,其特征在于,包括:
设置单元,用于第一服务节点将待迁移的分布式锁设置为第一状态,在所述第一状态下,所述分布式锁不可被分配;
迁移单元,用于将所述分布式锁从所述第一服务节点迁移到第二服务节点;
获取单元,用于获取所述分布式锁在所述第二服务节点的路由信息;
处理单元,用于基于所述获取单元得到的路由信息,对客户端发送的锁请求进行处理。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
响应单元,用于在所述待迁移的分布式锁处于第一状态时,若所述分布式锁已被客户端占用,则控制所述第一服务节点停止响应客户端发送的锁心跳信息;若所述分布式锁未被客户端占用,则控制所述第一服务节点停止响应客户端发送的锁请求。
9.一种分布式锁管理装置,其特征在于,包括:存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于在调用所述计算机程序时执行如权利要求1-6任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010003853.6A CN113076187B (zh) | 2020-01-03 | 2020-01-03 | 分布式锁管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010003853.6A CN113076187B (zh) | 2020-01-03 | 2020-01-03 | 分布式锁管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113076187A true CN113076187A (zh) | 2021-07-06 |
CN113076187B CN113076187B (zh) | 2024-01-09 |
Family
ID=76608717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010003853.6A Active CN113076187B (zh) | 2020-01-03 | 2020-01-03 | 分布式锁管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113076187B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114257591A (zh) * | 2021-12-16 | 2022-03-29 | 富盛科技股份有限公司 | 一种弱中心化分布式***组网方法及*** |
CN117608766A (zh) * | 2024-01-23 | 2024-02-27 | 杭州阿里云飞天信息技术有限公司 | 分布式锁处理方法、设备、存储介质和*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140365549A1 (en) * | 2013-06-10 | 2014-12-11 | Amazon Technologies, Inc. | Distributed lock management in a cloud computing environment |
WO2016141702A1 (zh) * | 2015-03-10 | 2016-09-15 | 中兴通讯股份有限公司 | 分布式***中元数据的迁移方法及装置 |
CN106534227A (zh) * | 2015-09-09 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 用于扩展分布式一致***的方法和设备 |
CN106572054A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 分布式***中分布式锁服务实现方法以及装置 |
WO2017180143A1 (en) * | 2016-04-15 | 2017-10-19 | Hitachi Data Systems Corporation | Distributed lock management enabling scalability |
CN107466456A (zh) * | 2015-12-30 | 2017-12-12 | 华为技术有限公司 | 加锁请求的处理方法及服务器 |
CN109766324A (zh) * | 2018-12-14 | 2019-05-17 | 东软集团股份有限公司 | 分布式锁的控制方法、装置、可读存储介质及电子设备 |
-
2020
- 2020-01-03 CN CN202010003853.6A patent/CN113076187B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140365549A1 (en) * | 2013-06-10 | 2014-12-11 | Amazon Technologies, Inc. | Distributed lock management in a cloud computing environment |
WO2016141702A1 (zh) * | 2015-03-10 | 2016-09-15 | 中兴通讯股份有限公司 | 分布式***中元数据的迁移方法及装置 |
CN106534227A (zh) * | 2015-09-09 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 用于扩展分布式一致***的方法和设备 |
CN106572054A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 分布式***中分布式锁服务实现方法以及装置 |
CN107466456A (zh) * | 2015-12-30 | 2017-12-12 | 华为技术有限公司 | 加锁请求的处理方法及服务器 |
WO2017180143A1 (en) * | 2016-04-15 | 2017-10-19 | Hitachi Data Systems Corporation | Distributed lock management enabling scalability |
CN109766324A (zh) * | 2018-12-14 | 2019-05-17 | 东软集团股份有限公司 | 分布式锁的控制方法、装置、可读存储介质及电子设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114257591A (zh) * | 2021-12-16 | 2022-03-29 | 富盛科技股份有限公司 | 一种弱中心化分布式***组网方法及*** |
CN117608766A (zh) * | 2024-01-23 | 2024-02-27 | 杭州阿里云飞天信息技术有限公司 | 分布式锁处理方法、设备、存储介质和*** |
CN117608766B (zh) * | 2024-01-23 | 2024-04-30 | 杭州阿里云飞天信息技术有限公司 | 分布式锁处理方法、设备、存储介质和*** |
Also Published As
Publication number | Publication date |
---|---|
CN113076187B (zh) | 2024-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11288253B2 (en) | Allocation method and device for a distributed lock | |
JP7374100B2 (ja) | リソース予約方法、リソース予約装置、リソース予約デバイス、及びリソース予約システム | |
CN106899648B (zh) | 一种数据处理方法和设备 | |
CN110941481A (zh) | 资源调度方法、装置及*** | |
US9749445B2 (en) | System and method for updating service information for across-domain messaging in a transactional middleware machine environment | |
WO2016184175A1 (zh) | 数据库处理方法及装置 | |
CN109213571B (zh) | 一种内存共享方法、容器管理平台及计算机可读存储介质 | |
US20090138751A1 (en) | De-centralized nodal failover handling | |
CN107783842B (zh) | 一种分布式锁实现方法、设备及存储装置 | |
CN113076187B (zh) | 分布式锁管理方法及装置 | |
CN107920101B (zh) | 一种文件访问方法、装置、***及电子设备 | |
US10802896B2 (en) | Rest gateway for messaging | |
CN114900449B (zh) | 一种资源信息管理方法、***及装置 | |
US11397632B2 (en) | Safely recovering workloads within a finite timeframe from unhealthy cluster nodes | |
US10545667B1 (en) | Dynamic data partitioning for stateless request routing | |
EP3672203A1 (en) | Distribution method for distributed data computing, device, server and storage medium | |
CN111382132A (zh) | 医学影像数据云存储*** | |
CN113064732B (zh) | 一种分布式***及其管理方法 | |
CN113301173A (zh) | 域名更新***及方法、消息转发方法、服务器 | |
CN114564153A (zh) | 一种卷映射解除方法、装置、设备和存储介质 | |
CN111435320A (zh) | 一种数据处理方法及其装置 | |
CN112422598A (zh) | 资源调度方法、智能前端设备、智能网关及分布式*** | |
CN114201117B (zh) | 缓存数据的处理方法、装置、计算机设备及存储介质 | |
CN111400324B (zh) | 一种锁定云存储中对象的方法、装置及服务器 | |
CN112532670B (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 |