[发明专利]一种基于更新序列的分布式锁状态同步方法在审
申请号: | 202010993803.7 | 申请日: | 2020-09-21 |
公开(公告)号: | CN112100190A | 公开(公告)日: | 2020-12-18 |
发明(设计)人: | 刘碧楠;周勇亮;吴嵩;蒋旭;于凯;马岳;李彬;陈振巍 | 申请(专利权)人: | 天津神舟通用数据技术有限公司 |
主分类号: | G06F16/23 | 分类号: | G06F16/23;G06F16/27 |
代理公司: | 天津盛理知识产权代理有限公司 12209 | 代理人: | 王利文 |
地址: | 300384 天津市滨海新*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 更新 序列 分布式 状态 同步 方法 | ||
1.一种基于更新序列的分布式锁状态同步方法,其特征在于:包括以下步骤:
步骤1、在每个从节点锁对象上设置更新序列,主节点维护各个从节点持有锁状态的记录,并在每个记录上设置更新序列;
步骤2、从节点向主节点发送加锁请求;
步骤3、主节点收到从节点的加锁请求后,根据请求节点锁状态进行加锁处理,返回加锁成功消息,或者向当前持有锁的冲突节点发送放锁请求;
步骤4、从节点收到主节点的放锁请求后,根据从节点锁状态进行放锁处理并返回放锁成功消息;
步骤5、主节点收到从节点返回的冲突节点放锁成功消息后,检查冲突节点锁状态当前的更新序列,再次尝试加锁处理;
步骤6、从节点收到主节点的加锁成功消息后,检查锁状态当前的更新序列并再次尝试加锁。
2.根据权利要求1所述的一种基于更新序列的分布式锁状态同步方法,其特征在于:所述更新序列的长度为8字节,所述更新序列的初始值为0。
3.根据权利要求1所述的一种基于更新序列的分布式锁状态同步方法,其特征在于:所述步骤2的具体处理方法为:
⑴如果从节点的锁状态为持有锁,则加锁成功;
⑵如果本节点锁状态为未持有锁,记录锁状态当前的更新序列;
⑶向主节点发送加锁请求,并等待请求返回。
4.根据权利要求1所述的一种基于更新序列的分布式锁状态同步方法,其特征在于:所述步骤3的具体处理方法为:
⑴主节点根据收到的加锁请求进行判断,如果请求节点锁状态为持有锁,返回加锁成功消息;
⑵请求节点锁状态为未持有锁,如果不存在锁冲突,则更新请求节点锁状态为持有锁,对应的更新序列值加一,返回加锁成功消息;
⑶如果存在锁冲突,则记录冲突节点锁状态当前的更新序列,并向当前持有锁的冲突节点发送放锁请求。
5.根据权利要求1所述的一种基于更新序列的分布式锁状态同步方法,其特征在于:所述步骤4的具体处理方法为:
⑴从节点收到放锁请求后进行判断,如果本节点的锁状态为未持有锁,则返回放锁成功消息;
⑵如果本节点的锁状态为持有锁,则更新锁状态为未持有锁,更新序列值加一,返回放锁成功消息。
6.根据权利要求1所述的一种基于更新序列的分布式锁状态同步方法,其特征在于:所述步骤5的具体处理方法为:
⑴检查冲突节点锁状态当前的更新序列是否与发起请求前记录的更新序列一致;
⑵如果一致,则更新冲突节点锁状态为未持有锁,更新序列值加一,放锁成功,并转到步骤3;
⑶如果不一致,则直接转到步骤3。
7.根据权利要求1所述的一种基于更新序列的分布式锁状态同步方法,其特征在于:所述步骤6的具体处理方法为:
⑴检查锁状态当前的更新序列是否与发起请求前记录的更新序列一致;
⑵如果一致,则更新锁状态为持有锁,更新序列值加一,转到步骤2;
⑶如果不一致,则直接转到步骤2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津神舟通用数据技术有限公司,未经天津神舟通用数据技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010993803.7/1.html,转载请声明来源钻瓜专利网。