[发明专利]分布式锁的控制方法和装置在审
| 申请号: | 201610825829.4 | 申请日: | 2016-09-14 |
| 公开(公告)号: | CN107818018A | 公开(公告)日: | 2018-03-20 |
| 发明(设计)人: | 张伟 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
| 主分类号: | G06F9/52 | 分类号: | G06F9/52;H04L29/08 |
| 代理公司: | 北京英赛嘉华知识产权代理有限责任公司11204 | 代理人: | 王达佐,马晓亚 |
| 地址: | 100080 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 分布式 控制 方法 装置 | ||
技术领域
本申请涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及分布式锁的控制方法和装置。
背景技术
在分布式系统中,若不同的系统或同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源时,为保证系统的操作能够同步或互斥执行,需要使用分布式锁对系统间相关联的操作进行协调。
现有的分布式锁的控制方法通常是利用为分布式应用提供一致性服务的软件Zookeeper创建临时节点,基于临时节点的编号大小实现分布式锁的控制。然而,这种分布式锁的控制方法依赖的Zookeeper维护复杂且仅适用于小规模集群,因而,对于如电子商务系统的大型促销场景、商品秒杀场景等高并发场景,现有的分布式锁的控制方法无法高效、准确地对分布式锁进行控制。
发明内容
本申请的目的在于提出一种改进的分布式锁的控制方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种分布式锁的控制方法,所述方法包括:接收客户端发送的分布式锁的加锁请求,其中,所述加锁请求包括所述分布式锁的标识;执行如下判定步骤:确定所述加锁请求指示的所述分布式锁是否被占用;响应于所述分布式锁被占用,确定所述分布式锁是否已被设置过期时间,若已被设置过期时间,获取所述分布式锁的剩余有效时长,其中,所述剩余有效时长为所述过期时间与当前时间的差;响应于所述分布式锁未被设置过期时间或所述剩余有效时长等于零,解除所述分布式锁,并重新执行所述判定步骤。
在一些实施例中,所述方法还包括:响应于所述剩余有效时长大于零,确定所述客户端的等待时长或所述判定步骤的执行次数,其中,所述等待时长为当前时间与所述客户端发送所述加锁请求的时间的差;响应于所述等待时长不小于预设等待时长阈值或所述执行次数等于预设执行次数阈值,判定加锁失败,并向所述客户端发送加锁失败消息,其中,所述加锁失败消息包括所述分布式锁的标识。
在一些实施例中,所述方法还包括:响应于所述等待时长小于所述预设等待时长阈值或所述执行次数小于所述预设执行次数阈值,则等待预设休眠时长,重新执行所述判定步骤。
在一些实施例中,所述预设等待时长阈值、所述预设执行次数阈值为预先存储的或所述客户端发送的。
在一些实施例中,所述加锁请求还包括所述分布式锁的有效时长信息;以及所述判定步骤,还包括:响应于所述分布式锁未被占用,占用所述分布式锁;根据所述有效时长信息对所述分布式锁进行过期时间设置,并生成指示设置是否成功的设置结果;响应于所述设置结果指示设置成功,向所述客户端发送加锁成功消息,以供所述客户端执行受所述分布式锁保护的业务操作,其中,所述加锁成功消息包括所述分布式锁的标识。
在一些实施例中,所述方法还包括:响应于所述设置结果指示设置失败,解除所述分布式锁,并重新执行所述判定步骤。
在一些实施例中,在向所述客户端发送加锁成功消息后,所述方法还包括:当所述分布式锁的剩余有效时长为零时,解除所述分布式锁。
在一些实施例中,所述方法还包括:响应于从所述客户端接收所述分布式锁的解锁请求,解除所述解锁请求指示的所述分布式锁,其中,所述解锁请求包括所述分布式锁的标识。
第二方面,本申请提供了分布式锁的控制装置,所述装置包括:接收单元,配置用于接收客户端发送的分布式锁的加锁请求,其中,所述加锁请求包括所述分布式锁的标识;判定单元,配置用于执行如下判定步骤:确定所述加锁请求指示的所述分布式锁是否被占用;响应于所述分布式锁被占用,确定所述分布式锁是否已被设置过期时间,若已被设置过期时间,获取所述分布式锁的剩余有效时长,其中,所述剩余有效时长为所述过期时间与当前时间的差;第一解除单元,配置用于响应于所述分布式锁未被设置过期时间或所述剩余有效时长等于零,解除所述分布式锁,使所述判定单元重新执行所述判定步骤。
在一些实施例中,所述装置还包括:确定单元,配置用于响应于所述剩余有效时长大于零,确定所述客户端的等待时长或所述判定步骤的执行次数,其中,所述等待时长为当前时间与所述客户端发送所述加锁请求的时间的差;发送单元,配置用于响应于所述等待时长不小于预设等待时长阈值或所述执行次数等于预设执行次数阈值,判定加锁失败,并向所述客户端发送加锁失败消息,其中,所述加锁失败消息包括所述分布式锁的标识。
在一些实施例中,所述装置还包括:等待单元,配置用于响应于所述等待时长小于所述预设等待时长阈值或所述执行次数小于所述预设执行次数阈值,则等待预设休眠时长,使所述判定单元重新执行所述判定步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610825829.4/2.html,转载请声明来源钻瓜专利网。





