管理分布式锁的方法和计算机可读存储介质技术

技术编号:17541456 阅读:33 留言:0更新日期:2018-03-24 18:18
本发明专利技术公开了一种管理分布式锁的方法和计算机可读存储介质。所述方法,应用于Redis系统,包括:获取Redis系统中并发的至少两个访问请求;按照预先设置的排序策略,为所述至少两个访问请求进行排序,成为访问串行队列;对访问串行队列中每个访问请求分别设置分布式锁;通知对设置完分布式锁的访问请求进行响应。

Method of managing distributed lock and computer readable storage medium

The invention discloses a method for managing a distributed lock and a computer readable storage medium. The method, which are applied in the Redis system, at least for concurrent Redis system of two access request; according to the preset sequencing strategy, for the at least two access requests sorted access queue to become serial access; each serial queue access request are respectively provided notice of setting up the distributed lock; distributed lock access request response.

【技术实现步骤摘要】
管理分布式锁的方法和计算机可读存储介质
本专利技术涉及信息处理领域,尤指一种管理分布式锁的方法和计算机可读存储介质。
技术介绍
目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。由于任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partitiontolerance),最多只能同时满足两项,所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。有的时候,我们需要保证一个方法在同一时间内只能被同一个线程执行。在单机环境中,Java中其实提供了很多并发处理相关的API,但是这些API在分布式场景中就无能为力了。也就是说单纯的JavaApi并不能提供分布式锁的能力。分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。Redis是一个高性能的key-value数据库,它支持存储的value类型相对较多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。那么,如何在Redis中实现分布式锁的管理是亟待解决的问题。
技术实现思路
为了解决上述技术问题,本专利技术提供了一种管理分布式锁的方法和计算机可读存储介质,能够在Redis中实现分布式锁的管理。为了达到本专利技术目的,本专利技术提供了一种管理分布式锁的方法,应用于Redis系统,包括:获取Redis系统中并发的至少两个访问请求;按照预先设置的排序策略,为所述至少两个访问请求进行排序,成为访问串行队列;对访问串行队列中每个访问请求分别设置分布式锁;通知对设置完分布式锁的访问请求进行响应。其中,所述方法还具有如下特点:所述通知对设置完分布式锁的访问请求进行响应之后,所述方法还包括:检测所述访问请求是否已经响应完成;如果检测所述访问请求已经响应完成,则释放所述访问请求的分布式锁。其中,所述方法还具有如下特点:所述通知对设置完分布式锁的访问请求进行响应之后,所述方法还包括:按照预先设置的获取时间策略,获取访问请求的分布式锁上的时间信息;将当前得到的第一时间信息与上一次获取的时间信息进行对比;如果当前得到的第一时间信息与上一次获取的时间信息相同,则确定所述访问请求的分布式锁处于故障状态。其中,所述方法还具有如下特点:所述如果当前得到的第一时间信息与上一次获取的时间信息相同之后,所述方法还包括:按照所述获取时间策略,再次获取访问请求的分布式锁上的时间信息,并与所述第一时间信息进行比较,直到比较结果为相同的次数大于预先设置的阈值时,所述访问请求的分布式锁处于故障状态。其中,所述方法还具有如下特点:所述确定所述访问请求的分布式锁处于故障状态之后,所述方法还包括:获取出现故障的分布式锁对应的访问请求所占用的物理资源;判断所述物理资源是否阻碍其他线程的任务处理;如果所述物理资源阻碍其他线程的任务处理,则释放所述出现故障的分布式锁。一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如下步骤,包括:请求获取步骤,获取Redis系统中并发的至少两个访问请求;请求排序步骤,按照预先设置的排序策略,为所述至少两个访问请求进行排序,成为访问串行队列;设置步骤,对访问串行队列中每个访问请求分别设置分布式锁;通知步骤,通知对设置完分布式锁的访问请求进行响应。其中,所述计算机可读存储介质还具有如下特点:该程序被处理器执行时在所述通知对设置完分布式锁的访问请求进行响应之后,还实现如下步骤:检测步骤,检测所述访问请求是否已经响应完成;释放步骤,如果检测所述访问请求已经响应完成,则释放所述访问请求的分布式锁。其中,所述计算机可读存储介质还具有如下特点:该程序被处理器执行时在通知对设置完分布式锁的访问请求进行响应之后,还实现如下步骤:时间获取步骤,按照预先设置的获取时间策略,获取访问请求的分布式锁上的时间信息;时间比较步骤,将当前得到的第一时间信息与上一次获取的时间信息进行对比;确定步骤,如果当前得到的第一时间信息与上一次获取的时间信息相同,则确定所述访问请求的分布式锁处于故障状态。其中,所述计算机可读存储介质还具有如下特点:该程序被处理器执行时在当前得到的第一时间信息与上一次获取的时间信息相同之后,还实现如下步骤:处理步骤,按照所述获取时间策略,再次获取访问请求的分布式锁上的时间信息,并与所述第一时间信息进行比较,直到比较结果为相同的次数大于预先设置的阈值时,所述访问请求的分布式锁处于故障状态。其中,所述计算机可读存储介质还具有如下特点:该程序被处理器执行时在确定所述访问请求的分布式锁处于故障状态之后,还实现如下步骤:资源获取步骤,获取出现故障的分布式锁对应的访问请求所占用的物理资源;判断步骤,判断所述物理资源是否阻碍其他线程的任务处理;释放步骤,如果所述物理资源阻碍其他线程的任务处理,则释放所述出现故障的分布式锁。本专利技术提供的实施例,将并行的访问请求转换成串行处理序列,并对串行处理序列中的每个访问请求设置分布式锁,再进行访问请求的处理,实现redis内存数据库分布式锁的性能、效率,从而提高采用该方案的应用的性能、响应速度,可应用于互联网等高并发场景下。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本专利技术技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本专利技术的技术方案,并不构成对本专利技术技术方案的限制。图1为本专利技术提供的管理分布式锁的方法的流程图;图2为本专利技术提供的计算机可读存储介质的结构图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,下文中将结合附图对本专利技术的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。图1为本专利技术提供的管理分布式锁的方法的流程图。图1所示方法包括:步骤101、获取Redis系统中并发的至少两个访问请求;具体的,在Redis系统中,访问请求是以并发执行的,因此,可以获取多个访问请求;步骤102、按照预先设置的排序策略,为所述至少两个访问请求进行排序,成为访问串行队列;其中,排序策略可以是按照请求的获本文档来自技高网
...
管理分布式锁的方法和计算机可读存储介质

【技术保护点】
一种管理分布式锁的方法,应用于Redis系统,其特征在于,包括:获取Redis系统中并发的至少两个访问请求;按照预先设置的排序策略,为所述至少两个访问请求进行排序,成为访问串行队列;对访问串行队列中每个访问请求分别设置分布式锁;通知对设置完分布式锁的访问请求进行响应。

【技术特征摘要】
1.一种管理分布式锁的方法,应用于Redis系统,其特征在于,包括:获取Redis系统中并发的至少两个访问请求;按照预先设置的排序策略,为所述至少两个访问请求进行排序,成为访问串行队列;对访问串行队列中每个访问请求分别设置分布式锁;通知对设置完分布式锁的访问请求进行响应。2.根据权利要求1所述的方法,其特征在于,所述通知对设置完分布式锁的访问请求进行响应之后,所述方法还包括:检测所述访问请求是否已经响应完成;如果检测所述访问请求已经响应完成,则释放所述访问请求的分布式锁。3.根据权利要求1或2所述的方法,其特征在于,所述通知对设置完分布式锁的访问请求进行响应之后,所述方法还包括:按照预先设置的获取时间策略,获取访问请求的分布式锁上的时间信息;将当前得到的第一时间信息与上一次获取的时间信息进行对比;如果当前得到的第一时间信息与上一次获取的时间信息相同,则确定所述访问请求的分布式锁处于故障状态。4.根据权利要求3所述的方法,其特征在于,所述如果当前得到的第一时间信息与上一次获取的时间信息相同之后,所述方法还包括:按照所述获取时间策略,再次获取访问请求的分布式锁上的时间信息,并与所述第一时间信息进行比较,直到比较结果为相同的次数大于预先设置的阈值时,所述访问请求的分布式锁处于故障状态。5.根据权利要求3所述的方法,其特征在于,所述确定所述访问请求的分布式锁处于故障状态之后,所述方法还包括:获取出现故障的分布式锁对应的访问请求所占用的物理资源;判断所述物理资源是否阻碍其他线程的任务处理;如果所述物理资源阻碍其他线程的任务处理,则释放所述出现故障的分布式锁。6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如下步骤,包括:请求获取步骤,获取Redis系统中并发的至少两个访问请...

【专利技术属性】
技术研发人员:李栋梁房体盈金洪殿
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1