基于数据库的分布式锁处理方法、装置、存储介质及系统制造方法及图纸

技术编号:33890795 阅读:35 留言:0更新日期:2022-06-22 17:25
本发明专利技术涉及计算机技术领域,提供一种基于数据库的分布式锁处理方法、装置、存储介质及系统,处理方法包括:获取内存锁,以确定持有所述内存锁的进程;当所述进程未持有分布式锁时,生成申请分布式锁的标志,并确定分布式锁的标识;基于所述申请分布式锁的标志和所述分布式锁的标识,发送取锁请求;数据库接收所述取锁请求,并基于所述分布式锁的标识进行空锁检测和锁超时检测,以确定将所述分布式锁分配给所述进程;本发明专利技术的基于数据库的分布式锁处理方法及装置能够避免请求锁的服务器在取锁过程中被阻塞;并且在取锁时判断当前锁是否超时,以避免因当前锁所在的服务器突然宕机,长时间无法释放锁,导致其他服务器一直无法获取到锁。到锁。到锁。

【技术实现步骤摘要】
基于数据库的分布式锁处理方法、装置、存储介质及系统


[0001]本专利技术涉及计算机
,特别是涉及基于数据库的分布式锁处理方法、装置、存储介质及系统。

技术介绍

[0002]目前,不论是单进程程序、多进程程序还是分布式系统,都需要面对一个并发程序处理最常见的问题:共享资源的争用,即如何保证并发场景下对共享资源读写操作的时序性、原子性以及一致性;通常的解决方法是使用“锁”对并发读写数据进行保护。比如,单进程程序中使用内存锁、多进程程序中使用文件锁、以及分布式系统中使用分布式锁等;由于分布式系统的应用普及,因此,对分布式系统中“锁”的使用尤为关注。
[0003]现有技术中,在分布式系统中分布式锁的使用是通过数据库来实现的,主要有两种方法,一种是基于数据库的行级锁;一种是通过比较表字段的值来实现的乐观锁;第一种方法会使系统线程被阻塞,这种阻塞状态不会因等待时长超时被取消,而是直到线程获取到锁,阻塞状态才能取消;第二种方法是多个线程先对共享数据进行操作,再在提交时进行冲突检测,这种处理仍会存在脏读的问题,无法有效锁住资源;此外,在获取到锁本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于数据库的分布式锁处理方法,其特征在于,所述分布式锁处理方法包括以下步骤:获取内存锁,以确定持有所述内存锁的进程;当所述进程未持有分布式锁时,生成申请分布式锁的标志,并确定分布式锁的标识;基于所述申请分布式锁的标志和所述分布式锁的标识,发送取锁请求;数据库接收所述取锁请求,并基于所述分布式锁的标识进行空锁检测和锁超时检测,以确定将所述分布式锁分配给所述进程。2.根据权利要求1所述的方法,其特征在于,所述当所述进程未持有分布式锁时,生成申请分布式锁的标志,以确定分布式锁的标识,包括:当所述进程未持有所述分布式锁时,基于所述进程,生成申请所述分布式锁的标志;基于所述进程,获取所述进程争用的共享资源;基于所述共享资源确定分布式锁的标识。3.根据权利要求2所述的方法,其特征在于,所述基于所述申请分布式锁的标志和所述分布式锁的标识,发送取锁请求,包括:基于所述分布式锁的标识,在所述数据库中预设的分布式锁的数据表中查询分布式锁的标识对应的字段是否有所述标识;当所述标识存在时,基于所述申请分布式锁的标志和所述分布式锁的标识,发送所述取锁请求;当所述标识不存在时,在所述数据库的分布式锁的标识对应的字段中创建所述分布式锁的标识;再基于所述申请分布式锁的标志和所述分布式锁的标识,发送所述取锁请求。4.根据权利要求3所述的方法,其特征在于,所述数据库接收所述取锁请求,并基于所述分布式锁的标识进行空锁检测和锁超时检测,以确定将所述分布式锁分配给所述进程,包括:所述数据库中预设的所述分布式锁的数据表的字段包括:第一分布式锁标识、第一持有者标志、第一持有时间点以及第一持有超时时长;基于所述分布式锁标识查询对应的所述第一持有者标志、所述第一持有时间点以及所述第一持有超时时长的字段是否都为空;当所述字段都为空时,基于所述进程,更新所述第一持有者标志、所述第一持有时间点以及所述第一持有超时时长的字段对应的内容,以确定将所述分布式锁分配给所述进程;当所述字段不为空时,查询所述第一持有超时时长的字段对应的数值,判断是否更新所述第一持有者标志、所述第一持有时间点以及所述第一持有超时时长;并基于判断结果处理是否将所述分布式锁分配给所述进程。5.根据权利要求4所述的方法,其特征在于,所述判断是否更新所述第一持有者标志、所述第一持有时间点以及所述第一持有超时时长;并基于判断结果处理是否将所述分布式锁分配给所述进程,包括:基于所述数值、所述第一持有时间点对应到的第一时间点以及当前时间,判...

【专利技术属性】
技术研发人员:李斌
申请(专利权)人:康键信息技术深圳有限公司
类型:发明
国别省市:

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

1