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

技术编号:17195851 阅读:35 留言:0更新日期:2018-02-03 22:38
本申请公开了用于控制分布式锁的方法和装置。所述方法的一具体实施方式包括:接收客户端发来的分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;判断所述分布式锁是否被占用;如果所述分布式锁未被占用,则:确定所述分布式锁的过期时间;将所述分布式锁分配给所述客户端;将所述分布式锁的标识以及所述分布式锁的过期时间作为加锁成功消息发送给所述客户端,以供所述客户端执行受所述分布式锁保护的业务操作。该实施方式实现了分布式锁的快速加锁。

【技术实现步骤摘要】
用于控制分布式锁的方法和装置
本申请涉及计算机
,具体涉及互联网
,尤其涉及用于控制分布式锁的方法和装置。
技术介绍
在云计算的时代,大部分应用都是部署在分布式服务器上。这些应用提供的服务有些对一致性要求很严格,在并发中绝对不允许把同一个资源分配给不同的互联网用户。这时候通常有效的处理方式就是加锁。基本思想就是如果一个事务处理中需要修改或占有某个资源,则需要先获取这个资源相关的唯一的锁,得到了锁才能操作这个资源,当事务处理完成后就释放占有的锁。目前,国内外已有一些实现分布式锁的解决方案。例如Google的Chubby,Apache的Zookeeper,基于关系型数据库实现的事务锁,以及一些使用NoSql数据库提供的原子操作实现的解决方案。然而,目前的实现分布式锁的解决方案存在加锁和解锁时间偏长、适用规模一般是10个以内的小规模集群、分布式定时任务执行过程中由于各请求资源的分布式计算机存在时钟不同步而导致定时任务重复执行的问题。这些问题导致现有的实现分布式锁的解决方案不适合互联网上大规模集群的快速申请和快速释放的场景(例如,电子商务网站的商品秒杀场景)。
技术实现思路
本申请的本文档来自技高网
...
用于控制分布式锁的方法和装置

【技术保护点】
一种用于控制分布式锁的方法,其特征在于,所述方法包括:接收客户端发来的分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;判断所述分布式锁是否被占用;如果所述分布式锁未被占用,则:确定所述分布式锁的过期时间;将所述分布式锁分配给所述客户端;将所述分布式锁的标识以及所述分布式锁的过期时间作为加锁成功消息发送给所述客户端,以供所述客户端执行受所述分布式锁保护的业务操作。

【技术特征摘要】
1.一种用于控制分布式锁的方法,其特征在于,所述方法包括:接收客户端发来的分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;判断所述分布式锁是否被占用;如果所述分布式锁未被占用,则:确定所述分布式锁的过期时间;将所述分布式锁分配给所述客户端;将所述分布式锁的标识以及所述分布式锁的过期时间作为加锁成功消息发送给所述客户端,以供所述客户端执行受所述分布式锁保护的业务操作。2.根据权利要求1所述的方法,其特征在于,所述加锁请求还包括加锁请求超时时长;以及所述判断所述分布式锁是否被占用,包括:判断所述加锁请求超时时长是否大于零;如果所述加锁请求超时时长不大于零,则向所述客户端发送加锁失败消息;如果所述加锁请求超时时长大于零,则判断所述分布式锁是否被占用。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:如果所述分布式锁被占用,则:获取当前时间以及所述分布式锁的过期时间;判断所述当前时间是否超过所述分布式锁的过期时间;如果所述当前时间超过所述分布式锁的过期时间,则:解除所述分布式锁;确定所述分布式锁的过期时间;将所述分布式锁分配给所述客户端;将所述分布式锁的标识以及所述分布式锁的过期时间作为加锁成功消息发送给所述客户端,以供所述客户端执行受所述分布式锁保护的业务操作;如果所述当前时间未超过所述分布式锁的过期时间,则等待预设时间,将所述加锁请求超时时长减去所述预设时间,并继续判断所述加锁请求超时时长是否大于零。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:接收所述客户端响应于受所述分布式锁保护的业务操作的执行完成而发出的立即解锁请求,所述立即解锁请求包括:待解锁的分布式锁的标识和第一过期时间,其中,所述第一过期时间是所述客户端收到的加锁成功消息中的所述分布式锁的过期时间;获取与所述待解锁的分布式锁的标识对应的分布式锁的过期时间,作为第二过期时间;判断所述第一过期时间是否与所述第二过期时间相同;如果是,则解除所述待解锁的分布式锁的标识所指示的分布式锁。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:接收所述客户端响应于受所述分布式锁保护的业务操作的执行完成而发出的延迟解锁请求,所述延迟解锁请求包括:待解锁的分布式锁的标识、第一过期时间和延迟解锁时间,所述第一过期时间是所述客户端收到的加锁成功消息中的所述分布式锁的过期时间;获取与所述待解锁的分布式锁的标识对应的分布式锁的过期时间,作为第二过期时间;判断所述第一过期时间是否与所述第二过期时间相同;如果是,则在所述延迟解锁时间之后解除所述待解锁的分布式锁的标识所指示的分布式锁。6.根据权利要求3所述的方法,其特征在于,所述方法还包括:接收所述客户端响应于受所述分布式锁保护的业务操作的执行完成而发出的延迟解锁请求,所述延迟解锁请求包括:待解锁的分布式锁的标识、第一过期时间和延迟解锁时间,所述第一过期时间是所述客户端收到的加锁成功消息中的所述分布式锁的过期时间;获取与所述待解锁的分布式锁的标识对应的分布式锁的过期时间,作为第二过期时间;判断所述第一过期时间是否与所述第二过期时间相同;如果是,则获取当前时间,并用所述当前时间加上所述延迟解锁时间所得到的时间更新所述待解锁的分布式锁的标识所指示的分布式锁的过期时间。7.根据权利要求1所述的方法,其特征在于,所述加锁请求还包括:持有锁的最长时间;以及所述如果所述分布式锁未被占用,确定所述分布式锁的过期时间,包括:获取当前时间,将所述当前时间加上所述持有锁的最长时间后所得的时间作为所述分布式锁的过期时间。8.一种用于控制分布式锁的装置,其特征在于,所述装置包括:加锁请求接收单元,配置用于接收客户端发来的分布式锁的加锁请求,所述加锁请求包括:所述分布式锁的标识;第一判断单元,配置用于判断所述分布式锁是否被占用;第一加锁单元,配置...

【专利技术属性】
技术研发人员:安宁
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

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

1