分布式锁实现方法和设备技术

技术编号:16175581 阅读:31 留言:0更新日期:2017-09-09 02:48
本申请提供了一种分布式锁实现方法及设备,其中,所述方法包括:请求客户锁管理设备进行抢锁创建操作;当所述客户锁管理设备抢锁创建操作成功,利用所持有的分布式锁进行互斥操作,包括:在每次互斥操作之前,判断所述分布式锁是否已过期,若已过期则放弃互斥操作进行相应的丢锁处理,若未过期则进行当次互斥操作,在每次互斥操作之后,判断所述分布式锁是否已过期,若已过期则进行相应的丢锁处理,并撤销当次互斥操作的相关数据。所述的分布式锁实现方法和设备,客户执行设备不依赖事件通知,而是根据分布式锁是否超时判断当前是否丢锁,从而避免了在多核环境下事件通知因CPU限制到导致分布式锁无法正常工作的问题。

【技术实现步骤摘要】
分布式锁实现方法和设备
本申请涉及计算机领域,尤其涉及一种分布式锁实现的技术。
技术介绍
分布式锁是分布式系统中控制不同设备之间同步访问共享资源的一种方式。在云计算环境下,分布式锁有着非常广泛的使用场景,其最主要的应用场景是,在分布式系统中,不同设备对一个共享资源进行访问的时候,系统往往需要分布式锁来支持对共享资源访问的互斥性以保证一致性。同时,应对庞大的数据处理,在云计算环境中,为了提高系统处理效率,异步处理机制被普遍使用。作为云计算中重要组成部分,为保证高效,一致性协调部分,尤其是分布式锁服务广泛使用基于异步回调(callback)的方式实现。在该种机制下,分布式锁实现依赖于回调(callback)机制。即在分布式环境中,当多个客户执行设备需要互斥操作,如更新同一个资源时,每个客户执行设备(Client)都会尝试持有同一把分布式锁,由于分布式锁服务设备(Server)可以保证最多只能有一个客户执行设备拥有这把分布式锁,这样在抢锁过程中一定可以保证资源操作的互斥性。具体地,客户端(Client)包括客户锁管理设备和客户执行设备,其中,当客户锁管理设备抢锁成功后,会维持与分布式服务设备之间的心跳连接,当心跳连接失效时,客户锁管理设备会等待一个宽限期时间(GracePeriod)。而当超过宽限期后,则客户锁管理设备则会向客户执行设备(应用层)发送连接异常事件通知,客户执行设备则做相应丢锁处理。然而,在当今多核计算时代,进程、线程级别的并发在云计算中属于常态,不同功能的执行例程常常在不同的核上被执行。由于多核的存在,如果事件通知线程和接受事件通知的线程在不同的核上被调度,当客户锁管理设备由于所在核的CPU占用率过高导致未能及时通知到客户执行设备,客户执行设备就会误以为其持有锁,并对相应资源进行操作,从而引发锁的正确性问题。图1(a)和图1(b)示出现有技术中利用分布式锁,多核情况下,客户端A(ClientA)和客户端B(ClientB)同时对一个资源R进行更新。,则它们需要通过分布式锁来进行协调。起初客户端A的客户锁管理设备A1在t1时刻抢锁成功,客户端A的客户执行设备A2拥有分布式锁,并对资源R进行更新。客户端B的客户锁管理设备B1在t2时刻(其中,t1<t2)尝试持有分布式锁,由于分布式锁已经被客户端A持有,所以客户端B加锁失败。在t3时刻客户端A由于CPU利用率(或称负载)过高,导致网络中断,并且客户锁管理设备A1的连接中断事件由于迟迟抢占不到CPU而不能通知到客户执行设备A2的工作线程。在t4时刻(其中,t3<t4),分布式锁已被客户锁管理设备B1抢占到,此时客户锁管理设备A2的工作线程却尚未收到丢锁事件通知。于是,此时客户执行设备A2的工作线程和客户执行设备B2的工作线程同时认为自己拥有着分布式锁,都可以对资源R进行更新。此时,互斥性就不能被保证。因此,在分布式并发环境中,由于网络环境较为复杂,机器资源占用率(如CPU)难以控制,如何保证在这种复杂系统环境下分布式锁的正确性和效率成为一个亟待解决的问题。
技术实现思路
本申请要解决的技术问题是如何提供一种在多核环境下,分布式锁能够可以正常工作的实现方法及设备。为解决上述技术问题,根据本申请一方面提供了一种在客户执行设备端的分布式锁实现方法,其中,所述方法包括:请求客户锁管理设备进行抢锁创建操作;当所述客户锁管理设备抢锁创建操作成功,利用所持有的分布式锁进行互斥操作,包括:在每次互斥操作之前,判断所述分布式锁是否已过期,若已过期则放弃互斥操作进行相应的丢锁处理,若未过期则进行当次互斥操作,在每次互斥操作之后,判断所述分布式锁是否已过期,若已过期则进行相应的丢锁处理,并撤销当次互斥操作的相关数据。进一步地,在每次互斥操作之后,判断所述分布式锁是否已过期,若已过期则进行相应的丢锁处理,并撤销当次互斥操作的相关数据包括:在每次互斥操作之后且在提交当次执行的互斥操作的相关数据之前,判断所述分布式锁是否已过期,若已过期则进行相应的丢锁处理,并放弃提交当次执行的互斥操作的相关数据,若未过期则提交当次执行的互斥操作的相关数据。进一步地,所述方法还包括:在每次互斥操作之前,记录操作前数据状态;则撤销当次互斥操作的相关数据包括:将数据恢复到所述操作前数据状态。进一步地,判断所述分布式锁当前是否已过期包括:比较当前时间与所述分布式锁的有效期,当所述当前时间超过所述分布式锁有效期,则所述分布式锁当前已过期。进一步地,所述方法还包括:从所述客户锁管理设备查询更新的分布式锁的有效期。根据本申请另一方面提供的一种在客户锁管理设备端的分布式锁实现方法,其中,所述方法包括:基于客户执行设备的请求,向分布式锁服务设备发起抢锁创建操作;当抢锁创建操作成功,记录所述分布式锁的有效期。进一步地,所述方法还包括:在每次抢锁创建操作后,通过接口向所述客户执行设备反馈一标记信息,所述标记信息用于标记当次抢锁创建操作是否成功。进一步地,所述方法还包括:维持与所述分布式服务设备的心跳连接,并基于成功的心跳连接更新所述分布式锁的有效期。根据本申请再一方面提供的一种用于分布式锁实现的客户执行设备,其中,所述客户执行设备包括:请求装置,用于请求客户锁管理设备进行抢锁创建操作;操作装置,用于当所述客户锁管理设备抢锁创建操作成功,利用所持有的分布式锁进行互斥操作,其中,在每次互斥操作之前,判断所述分布式锁是否已过期,若已过期则放弃互斥操作进行相应的丢锁处理,若未过期则进行当次互斥操作,并在每次互斥操作之后,判断所述分布式锁是否已过期,若已过期则进行相应的丢锁处理,并撤销当次互斥操作的相关数据。进一步地,所述操作装置包括:提交执行单元,用于在当次互斥操作之后且在提交当次执行的互斥操作的相关数据之前,判断所述分布式锁是否已过期,若已过期则进行相应的丢锁处理,并放弃提交当次执行的互斥操作的相关数据,若未过期则提交当次执行的互斥操作的相关数据。进一步地,所述客户执行设备还包括:记录装置,用于在每次互斥操作之前,记录操作前数据状态;所述操作装置包括:恢复单元,用于将数据恢复到所述操作前数据状态。进一步地,所述操作装置包括:比较单元,用于比较当前时间与所述分布式锁的有效期,当所述当前时间超过所述分布式锁有效期,则所述分布式锁当前已过期。进一步地,所述客户执行设备还包括:查询装置,用于从所述客户锁管理设备查询更新的分布式锁的有效期。根据本申请又一方面提供的一种用于分布式锁实现的客户锁管理设备,其中,所述客户锁管理设备包括:抢锁装置,用于基于客户执行设备的请求,向分布式锁服务设备发起抢锁创建操作;记录装置,用于当抢锁创建操作成功,记录所述分布式锁的有效期。进一步地,所述客户锁管理设备还包括:反馈装置,用于在每次抢锁创建操作后,通过接口向所述客户执行设备反馈一标记信息,所述标记信息用于标记当次抢锁创建操作是否成功。进一步地,所述客户锁管理设备还包括:更新装置,用于维持与所述分布式服务设备的心跳连接,并基于成功的心跳连接更新所述分布式锁的有效期。此外,本申请还提供了一种用于分布式锁实现的客户执行设备,该客户执行设备包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器本文档来自技高网
...
分布式锁实现方法和设备

【技术保护点】
一种在客户执行设备端的分布式锁实现方法,其中,所述方法包括:请求客户锁管理设备进行抢锁创建操作;当所述客户锁管理设备抢锁创建操作成功,利用所持有的分布式锁进行互斥操作,包括:在每次互斥操作之前,判断所述分布式锁是否已过期,若已过期则放弃互斥操作并进行相应的丢锁处理,若未过期则进行当次互斥操作,在每次互斥操作之后,判断所述分布式锁是否已过期,若已过期则进行相应的丢锁处理,并撤销当次互斥操作的相关数据。

【技术特征摘要】
2016.03.01 CN 20161011520871.一种在客户执行设备端的分布式锁实现方法,其中,所述方法包括:请求客户锁管理设备进行抢锁创建操作;当所述客户锁管理设备抢锁创建操作成功,利用所持有的分布式锁进行互斥操作,包括:在每次互斥操作之前,判断所述分布式锁是否已过期,若已过期则放弃互斥操作并进行相应的丢锁处理,若未过期则进行当次互斥操作,在每次互斥操作之后,判断所述分布式锁是否已过期,若已过期则进行相应的丢锁处理,并撤销当次互斥操作的相关数据。2.根据权利要求1所述的方法,其中,在每次互斥操作之后,判断所述分布式锁是否已过期,若已过期则进行相应的丢锁处理,并撤销当次互斥操作的相关数据包括:在每次互斥操作之后且在提交当次执行的互斥操作的相关数据之前,判断所述分布式锁是否已过期,若已过期则进行相应的丢锁处理,并放弃提交当次执行的互斥操作的相关数据,若未过期则提交当次执行的互斥操作的相关数据。3.根据权利要求1所述的方法,其中,所述方法还包括:在每次互斥操作之前,记录操作前数据状态;则撤销当次互斥操作的相关数据包括:将数据恢复到所述操作前数据状态。4.根据权利要求1至3中任一项所述的方法,其中,判断所述分布式锁当前是否已过期包括:比较当前时间与所述分布式锁的有效期,当所述当前时间超过所述分布式锁有效期,则所述分布式锁当前已过期。5.根据权利要求4所述的方法,其中,所述方法还包括:从所述客户锁管理设备查询更新的分布式锁的有效期。6.一种在客户锁管理设备端的分布式锁实现方法,其中,所述方法包括:基于客户执行设备的请求,向分布式锁服务设备发起抢锁创建操作;当抢锁创建操作成功,记录所述分布式锁的有效期。7.根据权利要求6所述的方法,其中,所述方法还包括:在每次抢锁创建操作后,通过接口向所述客户执行设备反馈一标记信息,所述标记信息用于标记当次抢锁创建操作是否成功。8.根据权利要求6或7所述的方法,其中,所述方法还包括:当抢锁创建操作成功,维持与所述分布式服务设备的心跳连接,并基于成功的心跳连接更新所述分布式锁的有效期。9.一种用于分布式锁实现的客户执行设备,其中,所述客户执行设备包括:请求装置,用于请求客户锁管理设备进行抢锁创建操作;操作装置,用于当所述客户锁管理设备抢锁创建操作成功,利用所持有的分布式锁进行互斥操作,包括,在每次互斥操作之前,判断所述分布式锁是否已过期,若已过期则放弃互斥操作并进行相应的丢锁处理,若未过期则进行当次互斥操作,并在每次互斥操作之后,判断所述分布式锁是否已过期,若已过期则进行相应...

【专利技术属性】
技术研发人员:安凯歌吴结生卢毅军吴锦波周文翠陶云峰吝倩
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1