全网唯一标准王
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210294664.8 (22)申请日 2022.03.22 (71)申请人 康键信息技 术 (深圳) 有限公司 地址 518066 广东省深圳市前海深港合作 区前湾一路1号A栋201室 (入驻深圳市 前海商务秘书 有限公司) (72)发明人 李斌  (74)专利代理 机构 上海汉之律师事务所 31378 专利代理师 周婷婷 (51)Int.Cl. G06F 16/23(2019.01) (54)发明名称 基于数据库 的分布式锁处理方法、 装置、 存 储介质及系统 (57)摘要 本发明涉及计算机技术领域, 提供一种基于 数据库的分布式锁处理方法、 装置、 存储介质及 系统, 处理方法包括: 获取内存锁, 以确定持有所 述内存锁的进程; 当所述进程未持有分布式锁 时, 生成申请分布式锁的标志, 并确定分布式锁 的标识; 基于所述申请分布式锁的标志和所述分 布式锁的标识, 发送取锁请求; 数据库接收所述 取锁请求, 并基于所述分布式锁的标识进行空锁 检测和锁超时检测, 以确定将所述分布式锁分配 给所述进程; 本发明的基于数据库的分布式锁处 理方法及装置能够避免请求锁的服务器在取锁 过程中被阻塞; 并且在取锁时判断当前锁是否超 时, 以避免因当前锁所在的服务器突然宕机, 长 时间无法释放锁, 导致其他服务器一直无法获取 到锁。 权利要求书2页 说明书8页 附图3页 CN 114647655 A 2022.06.21 CN 114647655 A 1.一种基于数据库的分布式锁处理方法, 其特征在于, 所述分布式锁处理方法包括以 下步骤: 获取内存锁, 以确定持有所述内存锁的进程; 当所述进程未持有分布式锁时, 生成申请分布式锁的标志, 并确定分布式锁的标识; 基于所述申请分布式锁的标志和所述分布式锁的标识, 发送取锁请求; 数据库接收所述取锁请求, 并基于所述分布式锁的标识进行空锁检测和锁超时检测, 以确定将所述分布式锁分配给 所述进程。 2.根据权利要求1所述的方法, 其特征在于, 所述当所述进程未持有分布式锁时, 生成 申请分布式锁的标志, 以确定分布式锁的标识, 包括: 当所述进程未持有所述分布式锁时, 基于所述进程, 生成申请所述分布式锁的标志; 基于所述进程, 获取 所述进程争用的共享资源; 基于所述共享资源确定分布式锁的标识。 3.根据权利要求2所述的方法, 其特征在于, 所述基于所述申请分布式锁的标志和所述 分布式锁的标识, 发送取锁请求, 包括: 基于所述分布式锁的标识, 在所述数据库中预设的分布式锁的数据表中查询分布式锁 的标识对应的字段 是否有所述标识; 当所述标识存在时, 基于所述申请分布式锁的标志和所述分布式锁的标识, 发送所述 取锁请求; 当所述标识不存在时, 在所述数据库的分布式锁的标识对应的字段中创建所述分布式 锁的标识; 再基于所述申请分布式锁的标志和所述分布式锁的标识, 发送所述取锁请求。 4.根据权利要求3所述的方法, 其特征在于, 所述数据库接收所述取锁请求, 并基于所 述分布式锁的标识进行空锁检测和锁超时检测, 以确定将所述分布式锁分配给所述进程, 包括: 所述数据库中预设的所述分布式锁的数据表的字段包括: 第一分布式锁标识、 第一持 有者标志、 第一持有时间点以及第一持有超时 时长; 基于所述分布式锁标识查询对应的所述第 一持有者标志、 所述第 一持有时间点以及所 述第一持有超时 时长的字段 是否都为空; 当所述字段都为空时, 基于所述进程, 更新所述第 一持有者标志、 所述第 一持有时间点 以及所述第一持有超时 时长的字段对应的内容, 以确定将所述分布式锁分配给 所述进程; 当所述字段不为空时, 查询所述第一持有超时时长的字段对应的数值, 判断是否更新 所述第一持有者标志、 所述第一持有时间点以及所述第一持有超时时长; 并基于判断结果 处理是否将所述分布式锁分配给 所述进程。 5.根据权利要求4所述的方法, 其特征在于, 所述判断是否更新所述第一持有者标志、 所述第一持有时间点以及所述第一持有超时时长; 并基于判断结果处理是否将所述分布式 锁分配给 所述进程, 包括: 基于所述数值、 所述第一持有时间点对应到的第一时间点以及当前时间, 判断第一持 有者标志对应的持有者持有所述分布式锁的时间是否超时; 当判断结果为超时时, 将所述第一持有者标志、 所述第一持有时间点以及所述第一持 有超时时长的字段对应的内容都设置为空;权 利 要 求 书 1/2 页 2 CN 114647655 A 2基于所述进程, 更新所述第一持有者标志、 所述第一持有时间点以及所述第一持有超 时时长的字段对应的内容; 当判断结果为未超时时, 基于所述第一持有时间点、 所述第一持有超时时长以及所述 当前时间, 在确定对应的持有者持有 所述分布式锁的时间为超时时, 再基于所述进程, 更新 所述第一持有者标志、 所述第一持有时间点以及所述第一持有超时时长的字段对应的内 容。 6.根据权利要求4所述的方法, 其特征在于, 所述确定持有所述内存锁的进程之后, 还 包括: 当所述进程持有分布式锁时, 基于所述进程、 分布式锁的标识, 发送释放锁请求; 数据库接收所述释放锁请求, 并基于所述分布式锁的标识, 将预设的分布式锁的数据 表中对应的字段内容更新 为空, 以确定将所述进程持有的所述分布式锁释放。 7.根据权利要求6所述的方法, 其特征在于, 所述基于所述分布式锁的标识, 将预设的 分布式锁的数据 表中对应的字段内容更新为空, 以确定将所述进程持有的所述分布式锁释 放, 包括: 当在所述分布式锁的数据表中查询到所述分布式锁的标识后, 基于所述分布式锁的标 识查询对应的第一持有者标志的字段对应的内容; 将所述第一持有者标志对应的内容和所述释放请求中的进程信息做比较; 当比较结果为匹配一致时, 将所述分布式锁的标识对应的所述第一持有者标志、 所述 第一持有时间点以及所述第一持有超时时长的字段对应的内容都置为空, 以确定将所述进 程持有的所述分布式锁释放。 8.一种基于数据库的分布式锁处 理装置, 其特 征在于, 包括: 获取模块, 用于获取内存锁, 以确定持有所述内存锁的进程; 处理模块, 用于当所述进程未持有分布式锁时, 生成申请分布式锁的标志, 并确定分布 式锁的标识; 发送模块, 用于基于所述申请分布式锁的标志和所述分布式锁的标识, 发送取锁请求; 确定模块, 用于数据库接收所述取锁请求, 并基于所述分布式锁的标识进行空锁检测 和锁超时检测, 以确定将所述分布式锁分配给 所述进程。 9.一种存储介质, 存储有程序指令, 其中, 所述程序指令被执行时实现如权利要求1至 权利要求7任一项所述的基于数据库的分布式锁处 理方法的步骤。 10.一种基于数据库的分布式锁处理系统, 其特征在于: 包括存储器, 用于存储计算机 程序; 处理器, 用于运行所述计算机程序以实现如权利要求1至权利要求7任一权利要求所 述的基于数据库的分布式锁处 理方法的步骤。权 利 要 求 书 2/2 页 3 CN 114647655 A 3

PDF文档 专利 基于数据库的分布式锁处理方法、装置、存储介质及系统

文档预览
中文文档 14 页 50 下载 1000 浏览 0 评论 0 收藏 3.0分
温馨提示:本文档共14页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 基于数据库的分布式锁处理方法、装置、存储介质及系统 第 1 页 专利 基于数据库的分布式锁处理方法、装置、存储介质及系统 第 2 页 专利 基于数据库的分布式锁处理方法、装置、存储介质及系统 第 3 页
下载文档到电脑,方便使用
本文档由 SC 于 2024-02-24 00:50:13上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。