技术新讯 > 计算推算,计数设备的制造及其应用技术 > 基于key-value数据库的分布式队列锁执行方法与流程  >  正文

基于key-value数据库的分布式队列锁执行方法与流程

  • 国知局
  • 2024-11-06 15:07:14

本发明涉及数据库,具体涉及一种基于key-value数据库的分布式队列锁执行方法。

背景技术:

1、在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。为了保证对资源使用的合理性,当一个任务需要使用资源时,需要对使用的资源进行锁保护,这个锁也叫做互斥锁,有了锁保护之后,系统之间对资源的并发访问才能变得正确合理。

2、在传统的单机环境的编程模式下,一般使用数据库操作系统提供的锁编程接口来对需要保护的资源进行加锁。但是,在分布式数据库中,由于数据库任务运行在多个不同的物理机器上,原有单机环境下的锁控制策略在分布式场景下就不可用了,因此,需要一种适合分布式场景下的加锁机制来对分布式系统中的共享资源提供保护。此外,在实现加锁机制的过程中,还需要保证任务的正常处理,避免因长时间抢不到锁导致出现业务饿死的情况。

技术实现思路

1、鉴于上述问题,本发明提供了一种基于key-value数据库的分布式队列锁执行方法。

2、根据本发明的第一个方面,提供了一种基于key-value数据库的分布式队列锁执行方法,包括:响应于检测到第一客户端针对key-value数据库中目标资源的数据访问请求,根据与目标资源对应的分布式锁的key信息,读取第一value信息,其中,第一value信息包括分布式锁的锁队列信息;根据第一value信息的读取结果,确定分布式锁的占用结果;在占用结果表征分布式锁被第二客户端占用的情况下,开启排队事务,将第一客户端的客户端标识添加至锁队列信息中,得到更新后的第一value信息;以及在key-value数据库中写入更新后的第一value信息,以便在第二客户端完成对目标资源的访问后,控制第一客户端访问目标资源。

3、根据本发明的实施例,该方法还包括:响应于检测到针对更新后的第一value信息的写入操作出现提交冲突,随机休眠预设时长后重新开启排队事务,以重新将第一客户端的客户端标识添加至锁队列信息中。

4、根据本发明的实施例,该方法还包括:响应于接收到针对分布式锁的锁变化通知信息,获取分布式锁的第二value信息,其中,锁变化通知信息表征分布式锁的value信息发生变化;从第二value信息中的锁队列信息中提取位于锁队列信息首位的客户端标识;在客户端标识与第一客户端的客户端标识相匹配的情况下,将第一客户端的客户端地址写入第二value信息,将第二value信息中的锁状态信息修改为占用中,从锁队列信息中删除第一客户端的客户端标识;在key-value数据库中写入更新后的第二value信息。

5、根据本发明的实施例,该方法还包括:根据第二value信息中的锁状态信息,确定分布式锁的变化类型;以及在确定变化类型为释放分布式锁的情况下,从第二value信息中的锁队列信息中提取位于锁队列信息首位的客户端标识。

6、根据本发明的实施例,该方法还包括:在占用结果为未占用的情况下,将第一客户端的客户端地址写入第一value信息,将第一value信息中的锁状态信息修改为占用中,得到更新后的第一value信息;以及在key-value数据库中写入更新后的第一value信息。

7、根据本发明的实施例,该方法还包括:响应于检测到第一客户端结束对目标资源的访问,获取分布式锁的第三value信息;

8、在确定第三value信息中客户端地址与第一客户端的客户端地址相匹配的情况下,确定第三value信息中的锁队列信息;在锁队列信息不为空的情况下,将第三value信息中的锁状态信息修改为未占用、删除第三value信息中的客户端地址,得到更新后的第三value信息;在锁队列信息为空的情况下,删除第三value信息。

9、根据本发明的实施例,根据第一value信息的读取结果,确定分布式锁的占用结果,包括:在读取结果为读取成功的情况下,确定分布式锁的占用结果为占用中;在读取结果为读取失败的情况下,确定分布式锁的占用结果为未占用。

10、根据本发明的实施例,第一value信息中还包括锁保活时间和锁写入时间。根据第一value信息的读取结果,确定分布式锁的占用结果,还包括:在读取结果为读取成功的情况下,获取当前时间;计算当前时间与锁写入时间之间的时间差;在时间差与锁保活时间满足预定条件的情况下,确定分布式锁的占用结果为占用超时;在时间差与锁保活时间不满足预定条件的情况下,确定分布式锁的占用结果为占用中。

11、根据本发明的实施例,该方法还包括:在确定占用结果为占用超时的情况下,将第一value信息中的锁状态信息修改为未占用、删除第一value信息中的客户端地址,得到更新后的第一value信息;以及开启排队事务,将第一客户端的客户端标识添加至锁队列信息中,得到更新后的第一value信息。

12、本发明的第二方面提供了一种基于key-value数据库的分布式队列锁执行装置,包括:读取模块,用于响应于检测到第一客户端针对key-value数据库中目标资源的数据访问请求,根据与目标资源对应的分布式锁的key信息,读取第一value信息,其中,第一value信息包括分布式锁的锁队列信息;占用模块,用于根据第一value信息的读取结果,确定分布式锁的占用结果;排队模块,用于在占用结果表征分布式锁被第二客户端占用的情况下,开启排队事务,将第一客户端的客户端标识添加至锁队列信息中,得到更新后的第一value信息;写入模块,用于在key-value数据库中写入更新后的第一value信息,以便在第二客户端完成对目标资源的访问后,控制第一客户端访问目标资源。

13、本发明的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个计算机程序,当一个或多个处理器执行一个或多个计算机程序时以实现根据上述基于key-value数据库的分布式队列锁执行方法的步骤。

14、本发明的第四方面还提供了一种计算机程序产品,包括计算机程序或指令,计算机程序或指令被处理器执行时实现根据上述基于key-value数据库的分布式队列锁执行方法的步骤。

15、本发明的实施例不仅通过key-value机制实现了分布式场景下的分布式锁机制,同时在该机制下新增了排队机制,使传统的并发抢锁变为顺序性的排队加锁,避免了客户端之间的无效争抢,大大减少了抢锁导致的系统开销。同时,本发明的实施例还可以避免因抢不上锁导致业务饿死的现象,使一个乱序数据库系统变得有序。

技术特征:

1.一种基于key-value数据库的分布式队列锁执行方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,还包括:

3.根据权利要求1所述的方法,其特征在于,还包括:

4.根据权利要求3所述的方法,其特征在于,还包括:

5.根据权利要求1所述的方法,其特征在于,还包括:

6.根据权利要求1或5所述的方法,其特征在于,还包括:

7.根据权利要求1所述的方法,其特征在于,所述根据所述第一value信息的读取结果,确定所述分布式锁的占用结果,包括:

8.根据权利要求1所述的方法,其特征在于,所述第一value信息中还包括锁保活时间和锁写入时间;所述根据所述第一value信息的读取结果,确定所述分布式锁的占用结果,还包括:

9.根据权利要求8所述的方法,其特征在于,还包括:

10.一种电子设备,其特征在于,所述电子设备包括:

技术总结本发明提供了一种基于key‑value数据库的分布式队列锁执行方法,可以应用于数据库技术领域。该方法包括:响应于检测到第一客户端针对key‑value数据库中目标资源的数据访问请求,根据与目标资源对应的分布式锁的key信息,读取第一value信息,第一value信息包括分布式锁的锁队列信息;根据第一value信息的读取结果,确定分布式锁的占用结果;在占用结果表征分布式锁被第二客户端占用的情况下,将第一客户端的客户端标识添加至锁队列信息中,得到更新后的第一value信息;在key‑value数据库中写入更新后的第一value信息,以在第二客户端对目标资源访问后,控制第一客户端访问目标资源。技术研发人员:李南锋受保护的技术使用者:天津南大通用数据技术股份有限公司技术研发日:技术公布日:2024/11/4

本文地址:https://www.jishuxx.com/zhuanli/20241106/325417.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。