用于控制分布式锁的方法和装置制造方法及图纸

技术编号:16969363 阅读:52 留言:0更新日期:2018-01-07 06:25
本申请公开了一种用于控制分布式锁的方法和装置。所述方法的一具体实施方式包括:向服务端发送分布式锁的加锁请求;响应于从服务端接收到加锁成功消息,执行受分布式锁保护的业务操作,其中,加锁成功消息是在所述服务端确定分布式锁未被占用的情况下返回的;响应于从服务端接收到加锁失败消息或在预设的第一时间段内未接收到服务端返回的消息,继续向服务端发送所述加锁请求并且在满足以下条件之一的情况下停止发送加锁请求:从服务端接收到加锁成功消息,自首次向服务端发送加锁请求起经过了预设的第二时间段;其中,加锁失败消息是在服务端确定分布式锁被占用的情况下返回的。该实施方式实现了简单方便的控制分布式锁。

【技术实现步骤摘要】
用于控制分布式锁的方法和装置
本申请涉及计算机
,尤其涉及互联网
,具体涉及一种用于控制分布式锁的方法和装置。
技术介绍
在多系统进行交互的情况下,有时需要对系统间相关联的操作进行协调,使得系统的操作能同步或互斥执行。分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。现有的系统一致性协调方案中,一般通过一致性协调工具(例如,Zookeeper软件、Chubby组件等)对分布式锁进行控制,其中,Zookeeper软件是一个为分布式应用提供一致性服务的软件;Chubby组件是用于解决分布式一致性问题的组件。现有的一致性协调方案要求客户端和服务端之间保持连接,客户端和服务端之间协议复杂,需要使用专用的客户端进行交互;服务端的Zookeeper集群和Chubby集群写操作只在主节点进行,使用ZAB协议(ZooKeeperAtomicBroadcast,原子消息广播协议)或Paxos算法(LeslieLamport于1990年提出的一种基于消息传递的一致性算法)进行提交,需要集群中过半节点提交成功,整个集群的提交工作才能正常完成,即现有的一致性协调方法普遍存在对客户端和服务端的要求较多,交互复杂的问题。
技术实现思路
本申请的目的在于提出一种用于控制分布式锁的方法和装置,来解决以上
技术介绍
部分提到的技术问题。第一方面,本申请提供了一种用于控制分布式锁的方法,所述方法包括:向服务端发送分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,其中,所述加锁成功消息是在所述服务端确定所述分布式锁未被占用的情况下返回的;响应于从所述服务端接收到加锁失败消息或在预设的第一时间段内未接收到所述服务端返回的消息,继续向所述服务端发送所述加锁请求并且在满足以下条件之一的情况下停止发送所述加锁请求:从所述服务端接收到所述加锁成功消息,自首次向所述服务端发送所述加锁请求起经过了预设的第二时间段;其中,所述加锁失败消息是在所述服务端确定所述分布式锁被占用的情况下返回的。在一些实施例中,所述方法还包括:响应于受所述分布式锁保护的业务操作的执行完成,向所述服务端发送所述分布式锁的解锁请求,所述解锁请求包括:所述分布式锁的标识。在一些实施例中,所述响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,包括:在所述业务操作的执行期间,间隔预设第三时间段向所述服务端发送对所述分布式锁的延期解锁请求,所述延期解锁请求包括:所述分布式锁的标识。在一些实施例中,所述响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,包括:响应于从所述服务端接收到轮询消息,向所述服务端发送所述分布式锁的延期解锁请求或解锁请求。第二方面,本申请提供一种用于控制分布式锁的方法,所述方法包括:从客户端接收分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;判断所述加锁请求指示的所述分布式锁是否被占用;响应于确定所述加锁请求指示的所述分布式锁未被占用,向所述客户端发送加锁成功消息,以供所述客户端执行受所述分布式锁保护的业务操作;响应于确定所述加锁请求指示的所述分布式锁被占用,向所述客户端发送加锁失败消息。在一些实施例中,所述方法还包括:响应于从所述客户端接收所述分布式锁的解锁请求,解除所述解锁请求指示的所述分布式锁,所述解锁请求包括:所述分布式锁的标识。在一些实施例中,所述方法还包括:响应于从所述客户端接收所述分布式锁的延期解锁请求,对所述延期解锁请求指示的所述分布式锁的过期时间进行更新,所述延期解锁请求包括:所述分布式锁的标识。在一些实施例中,所述方法还包括:在所述分布式锁的过期时间之前,向所述客户端发送轮询消息。在一些实施例中,所述判断所述加锁请求指示的分布式锁是否被占用,包括:查询预存的占用锁列表中是否存在所述加锁请求指示的所述分布式锁的标识,所述占用锁列表包括各个被占用的所述分布式锁的标识;响应于所述占用锁列表存在所述加锁请求指示的所述分布式锁的标识,确定所述加锁请求指示的所述分布式锁被占用;响应于所述占用锁列表不存在所述加锁请求指示的所述分布式锁的标识,确定所述加锁请求指示的所述分布式锁未被占用,并将所述加锁请求指示的分布式锁的标识加入所述占用锁列表中。在一些实施例中,所述响应于从所述客户端接收所述分布式锁的解锁请求,解除所述解锁请求指示的所述分布式锁,包括:将所述解锁请求指示的所述分布式锁的标识从所述占用锁列表中删除。第三方面,本申请提供一种用于控制分布式锁的装置,所述装置包括:加锁请求发送单元,配置用于向服务端发送分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;业务操作执行单元,配置用于响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,其中,所述加锁成功消息是在所述服务端确定所述分布式锁未被占用的情况下返回的;加锁请求循环单元,配置用于响应于从所述服务端接收到加锁失败消息或在预设的第一时间段内未接收到所述服务端返回的消息,继续向所述服务端发送所述加锁请求并且在满足以下条件之一的情况下停止发送所述加锁请求:从所述服务端接收到所述加锁成功消息,自首次向所述服务端发送所述加锁请求起经过了预设的第二时间段;其中,所述加锁失败消息是在所述服务端确定所述分布式锁被占用的情况下返回的。在一些实施例中,所述装置还包括:解锁请求发送单元,配置用于响应于受到所述分布式锁保护的业务操作的执行完成,向所述服务端发送所述分布式锁的解锁请求,所述解锁请求包括:所述分布式锁的标识。在一些实施例中,所述业务操作执行单元进一步配置用于:在所述业务操作的执行期间,间隔预设第三时间段向所述服务端发送对所述分布式锁的延期解锁请求,所述延期解锁请求包括:所述分布式锁的标识。在一些实施例中,所述业务操作执行单元进一步配置用于:响应于从所述服务端接收到轮询消息,向所述服务端发送所述分布式锁的延期解锁请求或解锁请求。第四方面,本申请提供一种用于控制分布式锁的装置,所述装置包括:加锁请求接收单元,配置用于从客户端接收分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;判断单元,配置用于判断所述加锁请求指示的所述分布式锁是否被占用;成功消息发送单元,配置用于响应于确定所述分布式锁未被占用,向所述客户端发送加锁成功消息,以供所述客户端执行受所述分布式锁保护的业务操作;失败消息发送单元,配置用于响应于确定所述分布式锁被占用,向所述客户端发送加锁失败消息。在一些实施例中,所述装置还包括:解锁单元,配置用于响应于从所述客户端接收所述分布式锁的解锁请求,解除所述解锁请求指示的所述分布式锁,所述解锁请求包括:所述分布式锁的标识。在一些实施例中,所述装置还包括:延期单元,配置用于响应于从所述客户端接收所述分布式锁的延期解锁请求,对所述延期解锁请求指示的所述分布式锁的过期时间进行更新,所述延期解锁请求包括:所述分布式锁的标识。在一本文档来自技高网...
用于控制分布式锁的方法和装置

【技术保护点】
一种用于控制分布式锁的方法,其特征在于,所述方法包括:向服务端发送分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,其中,所述加锁成功消息是在所述服务端确定所述分布式锁未被占用的情况下返回的;响应于从所述服务端接收到加锁失败消息或在预设的第一时间段内未接收到所述服务端返回的消息,继续向所述服务端发送所述加锁请求并且在满足以下条件之一的情况下停止发送所述加锁请求:从所述服务端接收到所述加锁成功消息,自首次向所述服务端发送所述加锁请求起经过了预设的第二时间段;其中,所述加锁失败消息是在所述服务端确定所述分布式锁被占用的情况下返回的。

【技术特征摘要】
1.一种用于控制分布式锁的方法,其特征在于,所述方法包括:向服务端发送分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,其中,所述加锁成功消息是在所述服务端确定所述分布式锁未被占用的情况下返回的;响应于从所述服务端接收到加锁失败消息或在预设的第一时间段内未接收到所述服务端返回的消息,继续向所述服务端发送所述加锁请求并且在满足以下条件之一的情况下停止发送所述加锁请求:从所述服务端接收到所述加锁成功消息,自首次向所述服务端发送所述加锁请求起经过了预设的第二时间段;其中,所述加锁失败消息是在所述服务端确定所述分布式锁被占用的情况下返回的。2.根据权利要求1所述的控制方法,其特征在于,所述方法还包括:响应于受所述分布式锁保护的业务操作的执行完成,向所述服务端发送所述分布式锁的解锁请求,所述解锁请求包括:所述分布式锁的标识。3.根据权利要求1所述的控制方法,其特征在于,所述响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,包括:在所述业务操作的执行期间,间隔预设第三时间段向所述服务端发送对所述分布式锁的延期解锁请求,所述延期解锁请求包括:所述分布式锁的标识。4.根据权利要求1所述的控制方法,其特征在于,所述响应于从所述服务端接收到加锁成功消息,执行受所述分布式锁保护的业务操作,包括:响应于从所述服务端接收到轮询消息,向所述服务端发送所述分布式锁的延期解锁请求或解锁请求。5.一种用于控制分布式锁的方法,其特征在于,所述方法包括:从客户端接收分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;判断所述加锁请求指示的所述分布式锁是否被占用;响应于确定所述加锁请求指示的所述分布式锁未被占用,向所述客户端发送加锁成功消息,以供所述客户端执行受所述分布式锁保护的业务操作;响应于确定所述加锁请求指示的所述分布式锁被占用,向所述客户端发送加锁失败消息。6.根据权利要求5所述的控制方法,其特征在于,所述方法还包括:响应于从所述客户端接收所述分布式锁的解锁请求,解除所述解锁请求指示的所述分布式锁,所述解锁请求包括:所述分布式锁的标识。7.根据权利要求5所述的控制方法,其特征在于,所述方法还包括:响应于从所述客户端接收所述分布式锁的延期解锁请求,对所述延期解锁请求指示的所述分布式锁的过期时间进行更新,所述延期解锁请求包括:所述分布式锁的标识。8.根据权利要求5所述的控制方法,其特征在于,所述方法还包括:在所述分布式锁的过期时间之前,向所述客户端发送轮询消息。9.根据权利要求6所述的控制方法,其特征在于,所述判断所述加锁请求指示的分布式锁是否被占用,包括:查询预存的占用锁列表中是否存在所述加锁请求指示的所述分布式锁的标识,所述占用锁列表包括各个被占用的所述分布式锁的标识;响应于所述占用锁列表存在所述加锁请求指示的所述分布式锁的标识,确定所述加锁请求指示的所述分布式锁被占用;响应于所述占用锁列表不存在所述加锁请求指示的所述分布式锁的标识,确定所述加锁请求指示的所述分布式锁未被占用,并将所述加锁请求指示的分布式锁的标识加入所述占用锁列表中。10.根据权利要求9所述的控制方法,其特征在于,所述响应于从所述客户端接收所述分布式锁的解锁请求,解除所述解锁请求指示的所述分布式锁,包括:将所述解锁请求指示的所述分布式锁的标识从所述占用锁列表中删除。11.一种用于控制分布式锁的装置,其特征在于,所述装置包括...

【专利技术属性】
技术研发人员:陈兴波丁雪丰
申请(专利权)人:百度在线网络技术北京有限公司
类型:发明
国别省市:北京,11

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

1