[发明专利]一种分布式锁实现方法及装置在审
申请号: | 201710211533.8 | 申请日: | 2017-03-31 |
公开(公告)号: | CN107181789A | 公开(公告)日: | 2017-09-19 |
发明(设计)人: | 孙琦 | 申请(专利权)人: | 北京奇艺世纪科技有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L12/863 |
代理公司: | 北京柏杉松知识产权代理事务所(普通合伙)11413 | 代理人: | 马敬,项京 |
地址: | 100080 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 实现 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,特别是涉及一种分布式锁实现方法及装置。
背景技术
在大数据处理系统中,单进程或单机系统内,当需要并行处理一些任务时,常常会出现多线程或多进程并发访问某个数据变量,通常将该数据变量称为临界资源,这时可通过线程或进程之间的互斥同步机制,对资源进行加锁,以保障资源的完整性和一致性。单机的进程同步和线程同步有很多可用的方法,比如互斥锁、信号量、条件变量等。
在分布式系统中,情况就完全不同,由于分布式系统中,每个组件都是运行在不同的机器上,不在统一的运行环境中,单机下的互斥方案在多机上是无法使用的。分布式环境下,常常通过分布式锁实现对临界资源的互斥访问,比如,使用分布式锁服务google Chubby以及开源分布式处理系统Zookeeper,实现对临界资源的互斥访问形成的分布式锁。具体实现方式为:首先,不同的客户端发起加锁操作请求给服务器端,服务器收到多个加锁操作请求后,对一个分布式锁的所有客户端请求进行递增编号,服务器将一个分布式锁下面的所有加锁操作请求编号和客户端对应的加锁操作请求返回给客户端。客户端收到所有加锁操作请求编号后,按照加锁操作请求编号的大小进行排序,如果最小的加锁操作请求编号和自身加锁操作请求编号一致的话,即表明成功获取了该分布式锁,可进行后续的操作。如果最小请求编号不是自身加锁操作请求编号,就需要等待,直到有其他客户端释放了该分布式锁,并通知所有等待该分布式锁的客户端进行重新获取加锁操作请求编号排序。
现有的分布式锁实现方式中,涉及大量网络通信,客户端需要获取服务器分配给所有其他客户端的加锁操作请求编号,并在所有客户端的本地进行排序,这不但有大量的冗余数据传输,也需要进行不必要的重复排序。对系统处理任务的性能提升以及可扩展性都有很大影响。
发明内容
本发明实施例的目的在于提供一种分布式锁实现方法及装置,在服务器端利用队列的方式,将分布式锁按照至少一个客户端加锁操作请求先后顺序分配给至少一个客户端,减少了冗余数据传输以及不必要的重复排序,对系统处理任务的性能以及可扩展性有大提升。
为达到上述发明目的,本发明实施例公开了一种分布式锁实现方法,应用于服务器端,包括:
获取当前分布式锁下的至少一个客户端的加锁操作请求,将所述至少一个客户端的所述加锁操作请求对应的所述至少一个客户端,加入到所述当前分布式锁的客户端队列;
根据所述客户端队列的顺序,当所述至少一个客户端中的第一客户端、更新处于所述客户端队列中的第一次序时,将所述当前分布式锁分配给所述第一客户端,其中,所述客户端队列包括所述当前分布式锁下的所述至少一个客户端,所述第一客户端为所述至少一个客户端中的任一客户端;
当所述第一客户端使用完成所述当前分布式锁的资源后,获取所述第一客户端的当前分布式锁未占用信息,将所述客户端队列中的所述第一客户端删除;
根据所述客户端队列的顺序,当所述至少一个客户端中除所述第一客户端以外的客户端、更新处于所述客户端队列中的第一次序时,将所述当前分布式锁分配给所述客户端队列中的第一次序的、所述至少一个客户端中除所述第一客户端以外的客户端。
可选地,所述获取当前分布式锁下的至少一个客户端的加锁操作请求,将所述至少一个客户端的所述加锁操作请求对应的所述至少一个客户端,加入到所述当前分布式锁的客户端队列,包括:
获取所述当前分布式锁下的所述至少一个客户端发送的所述加锁操作请求;
当所述客户端队列未满时,按照所述至少一个客户端发送的所述加锁操作请求的时间顺序,将所述至少一个客户端加入到所述客户端队列;
当所述客户端队列已满时,等待处于所述客户端队列中的第一次序的客户端使用完成所述当前分布式锁后,删除处于所述客户端队列中的第一次序的客户端,按照所述至少一个客户端发送的所述加锁操作请求的时间顺序,将所述至少一个客户端中的一个客户端加入到所述客户端队列。
可选地,在根据所述客户端队列的顺序,当所述至少一个客户端中的第一客户端、更新处于所述客户端队列中的第一次序时,将所述当前分布式锁分配给所述第一客户端之后,所述方法还包括:
发送当前分布式锁已占用信息,到所述当前分布式锁下的所述至少一个客户端中除所述第一客户端以外的客户端。
为达到上述发明目的,本发明实施例还公开了一种分布式锁实现方法,应用于至少一个客户端,所述至少一个客户端包括第一客户端,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇艺世纪科技有限公司,未经北京奇艺世纪科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710211533.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种任务处理方法及装置
- 下一篇:一种监测IP地址状态的方法和装置