一种基于Raft算法的分布式锁的实现方法及系统技术方案

技术编号:24455147 阅读:50 留言:0更新日期:2020-06-10 15:19
本发明专利技术公开了一种基于Raft算法的分布式锁的实现方法及系统,该方法先接收第一客户端发送第一锁的获锁请求信息;根据获锁请求信息,生成第一日志信息和键值对列表;其中,键值对列表包含若干个日志信息,每个日志信息分别对应一个修订号;根据第一日志信息的第一修订号和键值对列表中最小的第二修订号,确定第一客户端是否获得第一锁的操作权限。采用本发明专利技术技术方案能够避免多个客户端同时操作同一个锁,从而使得同一时间只有一个客户端持有同一个锁,进一步提高数据一致性。

Implementation method and system of distributed lock based on raft algorithm

【技术实现步骤摘要】
一种基于Raft算法的分布式锁的实现方法及系统
本专利技术涉及计算机
,尤其涉及一种基于Raft算法的分布式锁的实现方法及系统。
技术介绍
在现代分布式的架构下,大部分的大型网站都采用分布式集群模式,然而在分布式集群模式下,客户端之间存在资源竞争的问题,不可控的资源竞争将引起流程阻塞、阻断客户端的运行,进而降低系统的整体性能。现有技术中,采用基于Redis算法的分布式锁以实现数据的一致性,从而解决分布式场景中资源竞争的问题,具体的工作流程如下:步骤1,客户端向服务器请求SETNX,以请求占有资源标志位,若客户端占位成功时,则获得分布式锁;若客户端占位失败时,则等待下次抢占。步骤2,当客户端占有分布式锁后,利用EXPIRE方法设置过期时间,当客户端占有分布式锁的时间大于过期时间时,系统自动删除分布式锁,以释放资源。步骤3,当资源释放后,其他客户端继续轮询抢占分布式锁,重复步骤1和2,以实现数据一致性。在本专利技术研究的过程中,专利技术人发现基于Redis算法的分布式锁,至少存在以下问题:...

【技术保护点】
1.一种基于Raft算法的分布式锁的实现方法,其特征在于,包括:/n服务器接收第一客户端发送第一锁的获锁请求信息;/n根据所述获锁请求信息,生成第一日志信息和键值对列表;其中,所述键值对列表包含若干个日志信息,每个日志信息分别对应一个修订号;/n根据所述第一日志信息的第一修订号和所述键值对列表中最小的第二修订号,确定所述第一客户端是否获得所述第一锁的操作权限。/n

【技术特征摘要】
1.一种基于Raft算法的分布式锁的实现方法,其特征在于,包括:
服务器接收第一客户端发送第一锁的获锁请求信息;
根据所述获锁请求信息,生成第一日志信息和键值对列表;其中,所述键值对列表包含若干个日志信息,每个日志信息分别对应一个修订号;
根据所述第一日志信息的第一修订号和所述键值对列表中最小的第二修订号,确定所述第一客户端是否获得所述第一锁的操作权限。


2.如权利要求1所述的基于Raft算法的分布式锁的实现方法,其特征在于,所述根据所述获锁请求信息,生成第一日志信息,具体为:
根据所述获锁请求中的第一锁的前缀路径和第一客户端的标识,生成第一日志信息;其中,所述第一日志信息包括第一任期号、第一索引号和第一修订号。


3.如权利要求1所述的基于Raft算法的分布式锁的实现方法,其特征在于,所述根据所述获锁请求信息,生成键值对列表,具体为:
根据所述获锁请求信息中的第一锁的前缀路径,获取所有与所述第一锁的前缀路径相同的日志信息,并将所述日志信息按照修订号的大小进行升序排列,构成所述键值对列表。


4.如权利要求3所述的基于Raft算法的分布式锁的实现方法,其特征在于,所述根据所述第一日志信息的第一修订号和所述键值对列表中最小的第二修订号,确定所述第一客户端是否获得所述第一锁的操作权限,具体为:
若所述第一修订号等于所述第二修订号时,则所述第一客户端获得第一锁的操作权限;
若所述第一修订号大于所述第二修订号时,则根据所述第一修订号,获取所述第一修订号在键值对列表中的第一位置;
根据所述第一位置,监听在所述键值对列表中第一位置的前一个位置对应的第二客户端,一旦所述第二客户端释放所述第一锁时,则所述第一客户端获得所述第一锁的操作权限。


5.如权利要求4所述的...

【专利技术属性】
技术研发人员:李章铭罗伟杰卢彬刘志辉李宇昊陈罗威
申请(专利权)人:青木数字技术股份有限公司
类型:发明
国别省市:广东;44

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

1