一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式锁的数据处理方法、装置以及电子设备与流程

2022-04-02 03:04:21 来源:中国专利 TAG:


1.本技术涉及分布式锁技术领域,尤其是涉及一种分布式锁的数据处理方法、装置以及电子设备。


背景技术:

2.分布式锁是在分布式系统中,控制对数据并发访问所需要的基础的中间件,其作用是保证一个方法或属性在高并发情况下的同一时间只能被同一个线程执行。例如,当前分布式锁服务都是基于软件开发工具包(software development kit,sdk)的模式,底层基于某种中间件,如远程字典服务(remote dictionary server,redis)、etcd等。
3.但是,对于现有的这种分布式锁服务,存在着局限性较高的技术问题。


技术实现要素:

4.本技术的目的在于提供一种分布式锁的数据处理方法、装置以及电子设备,以缓解现有技术中分布式锁服务的局限性较高的技术问题。
5.第一方面,本技术实施例提供了一种分布式锁的数据处理方法,应用于分布式锁的数据处理系统,所述分布式锁的数据处理系统包括客户端以及服务端;所述方法包括:
6.所述服务端响应于所述客户端针对数据的加锁请求指令,对所述客户端的身份进行鉴权,得到第一身份鉴权结果;
7.如果所述第一身份鉴权结果为鉴权成功,所述服务端则对所述分布式锁的类型进行检查;其中,所述分布式锁的类型包括redis锁机制和/或etcd锁机制;
8.所述服务端基于所述分布式锁的类型对所述数据进行加锁操作。
9.在一个可能的实现中,所述分布式锁为redis锁机制;所述服务端基于所述分布式锁的类型对所述数据进行加锁操作的步骤,包括:
10.所述服务端向所述redis锁机制发送添加redis分布式锁的第一请求信息;
11.如果所述redis分布式锁已存在且持有者与所述客户端的身份不同,所述服务端则向所述redis锁机制发送第一订阅请求,并按第一预设时间设置第一定时器;其中,所述第一订阅请求对应所述redis分布式锁的释放信息;
12.如果所述服务端在所述第一定时器的第一预设时间内接收到了所述释放信息,所述服务端则通过所述redis锁机制对所述数据进行加锁操作。
13.在一个可能的实现中,所述分布式锁为etcd锁机制,所述客户端拥有对应的客户端关键字(key)值;所述服务端基于所述分布式锁的类型对所述数据进行加锁操作的步骤,包括:
14.所述服务端根据所述客户端key值,向所述etcd锁机制发送查询所述客户端key值所对应的etcd分布式锁是否存在的第二请求信息;
15.如果所述etcd分布式锁不存在,所述服务端则向所述etcd锁机制申请获取所有key值,并且比较所述客户端key值在所述所有key值中排名是否为第一;
16.如果所述客户端key值在所述所有key值中排名不为第一,所述服务端则向所述etcd锁机制发送第二订阅请求,并按第二预设时间设置第二定时器;其中,所述第二订阅请求对应排在所述客户端key值前一位的key值的删除信息;
17.如果所述服务端在所述第二定时器的第二预设时间内接收到了所述删除信息,所述服务端则通过所述etcd锁机制对所述数据进行加锁操作。
18.在一个可能的实现中,所述方法还包括:
19.所述服务端响应于所述客户端针对所述数据的解锁请求指令,对所述客户端的身份进行鉴权,得到第二身份鉴权结果;
20.如果所述第二身份鉴权结果为鉴权成功,所述服务端则对所述分布式锁的类型进行检查;其中,所述分布式锁的类型包括redis锁机制和/或etcd锁机制;
21.所述服务端基于所述分布式锁的类型对所述数据进行解锁操作。
22.在一个可能的实现中,所述方法还包括:
23.所述客户端响应于针对分布式锁的保活请求指令,对所述分布式锁的持有者的身份进行验证,得到验证结果;
24.如果所述验证结果为验证成功,所述客户端则对所述分布式锁的类型进行检查;其中,所述分布式锁的类型包括redis锁机制和/或etcd锁机制;
25.所述客户端基于所述分布式锁的类型对所述数据进行保活操作。
26.在一个可能的实现中,所述分布式锁的数据处理系统还包括管理平台;所述方法还包括:
27.所述管理平台获取所述分布式锁的已持有时间;
28.所述管理平台基于所述分布式锁的类型对所述已持有时间是否超过第三预设时间进行判断,得到第一判断结果;
29.如果所述第一判断结果为超时,所述管理平台则对所述客户端进行第一告警操作。
30.在一个可能的实现中,所述方法还包括:
31.所述管理平台获取所述服务端的接口统计数据;
32.所述管理平台对所述接口统计数据是否达到预设阈值进行判断,得到第二判断结果;
33.如果所述第二判断结果为达到预设阈值,所述管理平台则对所述客户端进行第二告警操作。
34.在一个可能的实现中,所述分布式锁的数据处理系统还包括管理平台;所述方法还包括:
35.所述管理平台响应于针对所述分布式锁的强制解锁指令,通过所述服务端对所述分布式锁进行解锁操作。
36.第二方面,提供了一种分布式锁的数据处理装置,应用于分布式锁的数据处理系统,所述分布式锁的数据处理系统包括客户端以及服务端;所述装置包括:
37.鉴权模块,用于所述服务端响应于所述客户端针对数据的加锁请求指令,对所述客户端的身份进行鉴权,得到第一身份鉴权结果;
38.分类模块,用于如果所述第一身份鉴权结果为鉴权成功,所述服务端则对所述分
布式锁的类型进行检查;其中,所述分布式锁的类型包括redis锁机制和/或etcd锁机制;
39.加锁模块,用于所述服务端基于所述分布式锁的类型对所述数据进行加锁操作。
40.第三方面,本技术实施例又提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法的步骤。
41.本技术实施例带来了以下有益效果:
42.本技术实施例提供的一种分布式锁的数据处理方法、装置以及电子设备,首先服务端响应于客户端针对数据的加锁请求指令,对客户端的身份进行鉴权,得到第一身份鉴权结果,之后如果第一身份鉴权结果为鉴权成功,服务端则对分布式锁的类型进行检查,其中的分布式锁的类型包括redis锁机制和/或etcd锁机制,进而服务端基于分布式锁的类型对数据进行加锁操作。本方案中,分布式锁服务端接收到来自客户端的加锁请求后,对客户端的身份进行鉴权,检测客户端所对应的用户是否有对分布式锁的操作权,鉴权成功后,分布式锁服务端检查分布式锁是属于redis锁还是etcd锁,从而根据不同的锁类型进行不同的加锁流程,完成对数据添加分布式锁的操作,通过增加鉴权管理,控制应用对锁的访问权限,并且能够兼容redis和etcd中间件,客户端可灵活切换中间件,简化客户端的复杂度,客户端在使用的时候不用关心具体实现,降低了分布式锁服务的应用局限性,缓解了现有技术中分布式锁服务的局限性较高的技术问题。
附图说明
43.为了更清楚地说明本技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
44.图1为本技术实施例提供的一种分布式锁的数据处理方法的流程示意图;
45.图2为本技术实施例提供的一种加锁流程示意图;
46.图3为本技术实施例提供的一种锁保活流程示意图;
47.图4为本技术实施例提供的一种分布式锁的数据处理系统的总体架构示意图;
48.图5为本技术实施例提供的一种分布式锁的数据处理装置的结构示意图;
49.图6为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
50.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图对本技术的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
51.本技术实施例中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
52.分布式锁是在分布式系统中,控制对数据并发访问所需要的基础的中间件。当前分布式锁服务都是基于sdk的模式,底层基于某种中间件,如redis,etcd等。这种基于sdk模式的分布式锁,没有一个集中管理的服务进行锁相关的管理,监控告警这些也都很难实现,并且只基于一种中间件来实现,无法灵活选择中间件,无法充分利用各种中间件的优点,规避缺点。
53.由以上缺陷可知,对于现有的这种分布式锁服务,存在着局限性较高的技术问题。
54.基于此,本技术实施例提供了一种分布式锁的数据处理方法、装置以及电子设备,增加了鉴权管理,控制应用对锁的访问权限,还可以对分布式锁集中进行管理,分布式锁能够有监控告警,并且能够兼容redis和etcd中间件,客户端可灵活切换中间件,简化客户端的复杂度,客户端在使用的时候不用关心具体实现,缓解了现有技术中分布式锁服务局限性较高的技术问题。
55.下面结合附图对本技术实施例进行进一步地介绍。
56.图1为本技术实施例提供的一种分布式锁的数据处理方法的流程示意图,该方法可以应用于分布式锁的数据处理系统,分布式锁的数据处理系统包括客户端以及服务端。如图1所示,该方法包括:
57.步骤s110,服务端响应于客户端针对数据的加锁请求指令,对客户端的身份进行鉴权,得到第一身份鉴权结果。
58.示例性的,如图2所示,客户端通过调用加锁服务接口与分布式锁服务端建立连接,服务端收到加锁请求后,请求携带锁名称、锁持有者信息、请求超时时间以及锁持有时间等信息,并检查锁是否能被这个客户端对应的用户操作,即进行鉴权,得到第一身份鉴权结果,如果该用户不能进行操作,则服务端返回失败消息给客户端。
59.步骤s120,如果第一身份鉴权结果为鉴权成功,服务端则对分布式锁的类型进行检查。
60.其中,分布式锁的类型包括redis锁机制和/或etcd锁机制。
61.示例性的,如图2所示,如果鉴权成功,即客户端对应的用户可以对锁进行操作,服务端对锁的类型进行检查,检查锁是属于redis锁还是etcd锁。作为中间件的redis和etcd各有优点,redis更像是内存型缓存,节点间的一致性主要强调的是数据,并不在乎事务,因此读写能力很强;etcd是一种分布式存储,更强调的是各个节点之间的通信,同步,确保各个节点上数据和事务的一致性,使得服务发现工作更稳定,本身单节点的写入能力并不强。
62.步骤s130,服务端基于分布式锁的类型对数据进行加锁操作。
63.示例性的,如图2所示,服务端在获取分布式锁的类型后,根据分布式锁的类型进行不同的加锁流程,完成对数据添加分布式锁的操作。
64.本技术实施例中,通过使分布式锁服务端接收到来自客户端的加锁请求后,对客户端的身份进行鉴权,检测客户端所对应的用户是否有对分布式锁的操作权,鉴权成功后,分布式锁服务端检查分布式锁是属于redis锁还是etcd锁,从而根据不同的锁类型进行不同的加锁流程,完成对数据添加分布式锁的操作,通过增加鉴权管理,控制应用对锁的访问权限,并且能够兼容redis和etcd中间件,客户端可灵活切换中间件,简化客户端的复杂度,客户端在使用的时候不用关心具体实现,降低了分布式锁服务的应用局限性,缓解了现有技术中分布式锁服务的局限性较高的技术问题。
65.在一些实施例中,系统能够兼容redis和etcd中间件,可以较为灵活切换中间件,进而根据不同中间件的机制进行加锁操作,并不强依赖某种中间件,降低了分布式锁服务的局限性。作为一个示例,分布式锁为redis锁机制;上述步骤s130具体可以包括如下步骤:
66.步骤a),服务端向redis锁机制发送添加redis分布式锁的第一请求信息。
67.步骤b),如果redis分布式锁已存在且持有者与客户端的身份不同,服务端则向redis锁机制发送第一订阅请求,并按第一预设时间设置第一定时器。
68.步骤c),如果服务端在第一定时器的第一预设时间内接收到了释放信息,服务端则通过redis锁机制对数据进行加锁操作。
69.对于上述步骤b),其中的第一订阅请求对应redis分布式锁的释放信息。
70.示例性的,如图2所示,如果是redis锁,则服务端发送redis加锁请求。具体请求为,如果锁不存在,则加锁,返回加锁成功的消息;如果锁已存在,锁的持有者与客户端对应的用户身份相同,则返回加锁失败的消息;如果锁存在,但是锁的持有者不同,也返回加锁失败的消息。如果第一次加锁失败,则服务端向redis锁订阅一条锁释放的消息,并启动一个第一定时器,如果在第一定时器的第一预设时间(例如,5秒)内,服务端收到了对应的锁释放的消息,则再去执行一遍加锁请求,如果超时,则返回加锁失败的消息。
71.需要说明的是,第一预设时间可以为任何时长,可以根据具体情况具体设定,本技术实施例对此不做限定。
72.通过使系统能够兼容redis和etcd中间件,在分布式锁为redis锁机制的情况下,根据redis的机制进行加锁操作,在加锁失败时设置定时器,尽可能的使客户端可以对数据进行加锁访问,避免了客户端无法对目标数据进行加锁的情况发生,而且较为灵活的实现了并不强依赖某种中间件的效果,降低了分布式锁服务的局限性。
73.在一些实施例中,系统能够兼容redis和etcd中间件,可以较为灵活切换中间件,进而根据不同中间件的机制进行加锁操作,并不强依赖某种中间件,降低了分布式锁服务的局限性。作为一个示例,分布式锁为etcd锁机制,客户端拥有对应的客户端key值;上述步骤s130具体可以包括如下步骤:
74.步骤d),服务端根据客户端key值,向etcd锁机制发送查询客户端key值所对应的etcd分布式锁是否存在的第二请求信息。
75.步骤e),如果etcd分布式锁不存在,服务端则向etcd锁机制申请获取所有key值,并且比较客户端key值在所有key值中排名是否为第一。
76.步骤f),如果客户端key值在所有key值中排名不为第一,服务端则向etcd锁机制发送第二订阅请求,并按第二预设时间设置第二定时器。
77.步骤g),如果服务端在第二定时器的第二预设时间内接收到了删除信息,服务端则通过etcd锁机制对数据进行加锁操作。
78.对于上述步骤f),其中的第二订阅请求对应排在客户端key值前一位的key值的删除信息。
79.示例性的,如图2所示,如果是etcd锁,则服务端发送etcd加锁请求。etcd和redis都为key-value存储,key和value的本意是钥匙和值的意思,在计算机应用中通常被用作键值对,在键值对中,key是关键字,value是值。服务端发送etcd加锁请求,读取对应的锁是否存在,读取的key是锁名称 锁持有者,如果锁存在,则返回加锁成功的消息。如果锁不存在,
则向etcd锁机制申请租约,发送写请求,写入key是锁名称 锁持有者,value是租约身份识别号(identity document,id),之后发送etcd读请求,按照锁名称为前缀读取,获取到所有的key值,比较自己所写的key值是否是第一个,即所写入的key值是否是最小的那一条,如果是第一个,则加锁成功;如果不是第一个,则监听前一个数据,即比写入的值小一号的key值的删除事件,并启动一个第二定时器,如果在第二定时器的第二预设时间(例如,5秒)内,服务端收到了删除事件,则加锁成功;如果超时了,则删除所写入的key值并返回加锁失败的消息。
80.需要说明的是,第二预设时间可以为任何时长,可以根据具体情况具体设定,本技术实施例对此不做限定。
81.通过使系统能够兼容redis和etcd中间件,在分布式锁为etcd锁机制的情况下,根据etcd的机制进行加锁操作,在加锁失败时设置定时器,对前一个数据的删除事件进行监听,尽可能的使客户端可以对数据进行加锁访问,避免了客户端无法对目标数据进行加锁的情况发生,而且较为灵活的实现了并不强依赖某种中间件的效果,降低了分布式锁服务的局限性。
82.在一些实施例中,系统可以较为灵活的实现对于分布式锁的解锁等操作,使分布式锁可以及时解除,并且增加鉴权管理功能,在解锁操作之前对请求方进行鉴权,控制应用对锁的访问权限,提高系统的安全性。作为一个示例,该方法还可以包括如下步骤:
83.步骤h),服务端响应于客户端针对数据的解锁请求指令,对客户端的身份进行鉴权,得到第二身份鉴权结果。
84.步骤i),如果第二身份鉴权结果为鉴权成功,服务端则对分布式锁的类型进行检查。
85.步骤j),服务端基于分布式锁的类型对数据进行解锁操作。
86.对于上述步骤i),其中的分布式锁的类型包括redis锁机制和/或etcd锁机制。
87.示例性的,客户端通过调用加锁服务接口与分布式锁服务端建立连接,服务端收到解锁请求后,请求携带锁名称以及锁持有者信息等信息,并检查锁是否能被这个客户端对应的用户操作,即进行鉴权,得到第二身份鉴权结果,如果该用户不能进行操作,则服务端返回一个失败消息给客户端;如果鉴权成功,即客户端对应的用户可以对锁进行操作,服务端对锁的类型进行检查,检查锁是属于redis锁还是etcd锁。如果是redis锁,则发送redis请求,请求内容包括删除锁,发送锁释放消息;如果是etcd锁,则发送etcd删除请求,删除对应名称的锁。如果定时保活消息的定时器存在,删除定时器。
88.通过使分布式锁服务端接收到来自客户端的解锁请求后,对客户端的身份进行鉴权,检测客户端所对应的用户是否有对分布式锁的操作权,鉴权成功后,分布式锁服务端检查分布式锁是属于redis锁还是etcd锁,从而根据不同的锁类型进行不同的解锁流程,完成解锁操作,降低了分布式锁服务应用局限性。
89.在一些实施例中,系统可以较为灵活的实现对于分布式锁的保活等操作,使分布式锁可以持续存在,并且增加鉴权管理功能,在保活操作之前对请求方进行鉴权,控制应用对锁的访问权限,提高系统的安全性。作为一个示例,该方法还可以包括如下步骤:
90.步骤k),客户端响应于针对分布式锁的保活请求指令,对分布式锁的持有者的身份进行验证,得到验证结果。
91.步骤l),如果验证结果为验证成功,客户端则对分布式锁的类型进行检查。
92.步骤m),客户端基于分布式锁的类型对数据进行保活操作。
93.对于上述步骤l),其中的分布式锁的类型包括redis锁机制和/或etcd锁机制。
94.示例性的,如图3所示,客户端通过调用加锁服务接口与分布式锁服务端建立连接,客户端收到用户的保活请求后,请求携带锁名称以及锁持有者信息等信息,并检查锁是否能被操作,如果不能操作,返回失败的消息。如果可以操作,则检查锁是属于redis锁还是etcd锁,如果是redis锁,则发送redis请求,更新对应锁的过期时间;如果是etcd锁,则发送etcd读请求,读取key是锁名称 锁持有者的value,得到租约id,进而更新租约id的到期时间。
95.通过使客户端端接收到保活请求后,检查锁是否能被操作,之后检查分布式锁是属于redis锁还是etcd锁,从而根据不同的锁类型进行不同的保活流程,完成保活操作,降低了分布式锁服务应用局限性。
96.在一些实施例中,系统可以对锁持有时间进行检测,通过在锁持有时间过长时进行告警,以对用户进行提示,避免了因锁持有时间过长导致数据无法被其它线程访问,避免造成不良影响。作为一个示例,分布式锁的数据处理系统还包括管理平台;该方法还可以包括如下步骤:
97.步骤n),管理平台获取分布式锁的已持有时间。
98.步骤o),管理平台基于分布式锁的类型对已持有时间是否超过第三预设时间进行判断,得到第一判断结果。
99.步骤p),如果第一判断结果为超时,管理平台则对客户端进行第一告警操作。
100.示例性的,如图4所示,分布式锁的数据处理系统除服务端和客户端以外还包括管理平台。分布式锁管理平台可以获取一个锁持有时间告警配置,例如,预设有第三预设时间,锁持有时间超过3秒后将判定为持有超时。管理平台首先查询锁加锁的时间,得到锁已持有的时间。如果是redis锁,查询锁对应的value为加锁时间,用当前时间减去锁对应的value得到锁持有时间;如果是etcd锁,查询锁对应的加锁时间,用当前时间减去加锁时间,获得锁持有时间。分布式锁管理平台进而判断锁是否已经超过告警配置,超过则告警。
101.需要说明的是,第三预设时间可以为任何时长,可以根据具体情况具体设定,本技术实施例对此不做限定。
102.通过使分布式管理平台获取布式锁的已持有时间,并第三预设时间对已持有时间进行判定,进而在持有超时的情况下进行告警,以对用户进行提示,避免了因锁持有时间过长导致数据无法被其它线程访问,避免造成不良影响,解决了分布式锁监控告警困难的问题。
103.在一些实施例中,系统可以对接口的申请数量进行检测,通过在检测到接口的申请数量过多时进行告警,以对用户进行提示,避免了因锁持有时间过长导致接口的申请数量过多,导致事务处理系统崩溃。作为一个示例,该方法还可以包括如下步骤:
104.步骤q),管理平台获取服务端的接口统计数据。
105.步骤r),管理平台对接口统计数据是否达到预设阈值进行判断,得到第二判断结果。
106.步骤s),如果第二判断结果为达到预设阈值,管理平台则对客户端进行第二告警
操作。
107.示例性的,分布式锁管理平台可以拉取分布式锁服务接口统计数据,根据接口统计数据判断是否需要告警。例如,设定一个预设阈值,当接口统计数据达到阈值时,管理平台对客户端进行告警操作。
108.需要说明的是,预设阈值可以为任何值,可以根据具体情况具体设定,本技术实施例对此不做限定。
109.通过使分布式管理平台对接口的申请数量进行检测,通过在检测到接口的申请数量过多时进行告警,以对用户进行提示,避免了因锁持有时间过长导致接口的申请数量过多,导致事务处理系统崩溃,解决了分布式锁监控告警困难的问题。
110.在一些实施例中,用户可以通过指令强制系统进行解锁,从而可以较为灵活的解除分布式锁,避免锁持有时间过长,或因程序错误导致的无法自动解锁情况发生。作为一个示例,分布式锁的数据处理系统还包括管理平台;该方法还可以包括如下步骤:
111.步骤t),管理平台响应于针对分布式锁的强制解锁指令,通过服务端对分布式锁进行解锁操作。
112.示例性的,如果分布式锁发生告警,或用户想改变访问数据的线程,用户可以通过分布式锁管理平台调用分布式锁服务释放锁接口,跳过鉴权步骤,直接释放锁。
113.通过使管理平台响应于用户针对分布式锁的强制解锁指令,通过服务端对分布式锁进行解锁操作,使用户可以通过指令强制系统进行解锁,从而可以较为灵活的解除分布式锁,避免锁持有时间过长,或因程序错误导致的无法自动解锁情况发生,缓解了分布式锁无法集中管理的问题。
114.图5为本技术实施例提供的一种分布式锁的数据处理装置的结构示意图,该装置可以应用于分布式锁的数据处理系统,分布式锁的数据处理系统包括客户端以及服务端。如图5所示,该装置包括:
115.鉴权模块501,用于服务端响应于客户端针对数据的加锁请求指令,对客户端的身份进行鉴权,得到第一身份鉴权结果。
116.分类模块502,用于如果第一身份鉴权结果为鉴权成功,服务端则对分布式锁的类型进行检查;其中,分布式锁的类型包括redis锁机制和/或etcd锁机制。
117.加锁模块503,用于服务端基于分布式锁的类型对数据进行加锁操作。
118.在一些实施例中,分布式锁为redis锁机制;加锁模块503具体用于:
119.服务端向redis锁机制发送添加redis分布式锁的第一请求信息;
120.如果redis分布式锁已存在且持有者与客户端的身份不同,服务端则向redis锁机制发送第一订阅请求,并按第一预设时间设置第一定时器;其中,第一订阅请求对应redis分布式锁的释放信息;
121.如果服务端在第一定时器的第一预设时间内接收到了释放信息,服务端则通过redis锁机制对数据进行加锁操作。
122.在一些实施例中,分布式锁为etcd锁机制,客户端拥有对应的客户端key值;加锁模块503具体用于:
123.服务端根据客户端key值,向etcd锁机制发送查询客户端key值所对应的etcd分布式锁是否存在的第二请求信息;
124.如果etcd分布式锁不存在,服务端则向etcd锁机制申请获取所有key值,并且比较客户端key值在所有key值中排名是否为第一;
125.如果客户端key值在所有key值中排名不为第一,服务端则向etcd锁机制发送第二订阅请求,并按第二预设时间设置第二定时器;其中,第二订阅请求对应排在客户端key值前一位的key值的删除信息;
126.如果服务端在第二定时器的第二预设时间内接收到了删除信息,服务端则通过etcd锁机制对数据进行加锁操作。
127.在一些实施例中,该装置还包括:
128.解锁模块,用于服务端响应于客户端针对数据的解锁请求指令,对客户端的身份进行鉴权,得到第二身份鉴权结果;
129.如果第二身份鉴权结果为鉴权成功,服务端则对分布式锁的类型进行检查;其中,分布式锁的类型包括redis锁机制和/或etcd锁机制;
130.服务端基于分布式锁的类型对数据进行解锁操作。
131.在一些实施例中,该装置还包括:
132.保活模块,用于客户端响应于针对分布式锁的保活请求指令,对分布式锁的持有者的身份进行验证,得到验证结果;
133.如果验证结果为验证成功,客户端则对分布式锁的类型进行检查;其中,分布式锁的类型包括redis锁机制和/或etcd锁机制;
134.客户端基于分布式锁的类型对数据进行保活操作。
135.在一些实施例中,分布式锁的数据处理系统还包括管理平台;该装置还包括:
136.第一告警模块,用于管理平台获取分布式锁的已持有时间;
137.管理平台基于分布式锁的类型对已持有时间是否超过第三预设时间进行判断,得到第一判断结果;
138.如果第一判断结果为超时,管理平台则对客户端进行第一告警操作。
139.在一些实施例中,该装置还包括:
140.第二告警模块,用于管理平台获取服务端的接口统计数据;
141.管理平台对接口统计数据是否达到预设阈值进行判断,得到第二判断结果;
142.如果第二判断结果为达到预设阈值,管理平台则对客户端进行第二告警操作。
143.在一些实施例中,分布式锁的数据处理系统还包括管理平台;该装置还包括:
144.释放模块,用于管理平台响应于针对分布式锁的强制解锁指令,通过服务端对分布式锁进行解锁操作。
145.图6为本技术实施例提供的一种电子设备的结构示意图,该电子设备包括:处理器601,存储器602,总线603和通信接口604,所述处理器601、通信接口604和存储器602通过总线603连接;处理器601用于执行存储器602中存储的可执行模块,例如计算机程序。
146.其中,存储器602可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口604(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
147.总线603可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数
据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
148.其中,存储器602用于存储程序,所述处理器601在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器601中,或者由处理器601实现。
149.处理器601可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器601中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器601可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器602,处理器601读取存储器602中的信息,结合其硬件完成上述方法的步骤。
150.本发明实施例所提供的可读存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见前述方法实施例,在此不再赘述。
151.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
152.最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献