获取分布式锁的方法、装置、电子设备和计算机可读介质与流程
- 国知局
- 2024-07-31 22:58:52
本发明涉及计算机,尤其涉及一种获取分布式锁的方法、装置、电子设备和计算机可读介质。
背景技术:
1、分布式服务管理框架(比如zookeeper)需要服务提供者将自己的服务信息(ip地址、端口号等)注册到分布式服务管理框架中,而服务消费者(系统的登录用户)则通过查询分布式服务管理框架来发现可用的服务。
2、在现有技术中,分布式服务管理框架采用基于临时节点实现分布式锁,这种临时节点实现原理为:假设有客户端a、b、c均来获取同一把分布式锁:key1。首先,客户端a来获取分布式锁key1,那么分布式服务管理框架就会尝试在locks节点下创建一个叫做key1的znode节点。如果这个时候locks节点下没有key1这个znode节点,那么分布式服务管理框架就能成功创建key1节点,这就表示客户端a成功获取到了key1这把锁。同时,客户端b也来获取key1这把锁。分布式服务管理框架也需要为客户端b在locks这个节点下创建key1这个znode节点。这个时候,由于key1这个znode节点已经存在,所以分布式服务管理框架就会创建失败,表示客户端b获取分布式锁失败。此时,客户端b就会向分布式服务管理框架注册自己的监听器,通过监听器监听key1这个znode节点的变化(当key1节点发生变化时,分布式服务管理框架会通知到客户端b)。同理,此时客户端c来获取key1锁时,也是无法获取到key1锁,也会将监听器注册到分布式服务管理框架中,监听key1这个znode节点的变化。
3、现有技术中存在的技术问题是:当客户端a释放分布式锁成功以后,分布式服务管理框架需要去通知所有监听key1这个节点的客户端,在实际应用中可能有成百上千个客户端,甚至更多。分布式服务管理框架在这一瞬间需要发送成百上千个通知,导致处理数据的效率降低。另外,当分布式锁的竞争较为激烈时,极有可能在这一瞬间分布式服务管理框架的网卡被撑爆。而且系统中可能并不仅仅存key1这一把分布式锁,还会存在key2、key3、key4...等分布式锁,这些锁也会存在竞争,分布式服务管理框架的压力会更大,导致处理数据的效率降低。
技术实现思路
1、有鉴于此,本发明实施例提供一种获取分布式锁的方法、装置、电子设备和计算机可读介质,以解决数据处理效率降低的技术问题。
2、为实现上述目的,根据本发明实施例的一个方面,提供了一种获取分布式锁的方法,包括:
3、接收客户端发送的分布式锁获取请求,所述分布式锁获取请求携带目标业务系统标识;
4、在第一锁节点下定位出所述目标系统标识对应的目标服务节点,在所述目标服务节点下定位出第二锁节点,并在所述第二锁节点下创建临时顺序节点;
5、判断所述临时顺序节点在所述第二锁节点下是不是序号最小的节点;若是,则将所述目标业务系统对应的分布式锁分配给所述客户端,并向所述客户端返回分布式锁获取成功的响应结果;若否,则向所述客户端返回分布式锁获取失败的响应结果。
6、可选地,向所述客户端返回分布式锁获取成功的响应结果之后,还包括:
7、接收所述客户端返回的分布式锁释放请求,所述分布式锁释放请求携带所述目标业务系统标识;
8、释放所述目标业务系统对应的分布式锁;
9、在所述第一锁节点下定位出所述目标系统标识对应的目标服务节点,在所述目标服务节点下定位出所述第二锁节点,将所述第二锁节点下所述客户端对应的临时顺序节点删除。
10、可选地,向所述客户端返回分布式锁获取失败的响应结果之后,还包括:
11、接收所述客户端发送的监听器注册请求;
12、为所述客户端创建监听器,通过所述监听器监听序号小于所述临时顺序节点且序号最大的目标临时顺序节点;
13、响应于监听到所述目标临时顺序节点被删除,判断所述客户端对应的临时顺序节点在所述第二锁节点下是不是序号最小的节点,若是,则将所述目标业务系统对应的分布式锁分配给所述客户端,并向所述客户端返回分布式锁获取成功的响应结果。
14、可选地,所述分布式锁获取请求还携带目标子业务系统标识;
15、在第一锁节点下定位出所述目标系统标识对应的目标服务节点,在所述目标服务节点下定位出第二锁节点,并在所述第二锁节点下创建临时顺序节点,包括:
16、在第一锁节点下定位出所述目标系统标识对应的目标服务节点,在所述目标服务节点下定位出所述目标子业务系统对应的第二锁节点,并在所述第二锁节点下创建临时顺序节点;
17、将所述目标业务系统对应的分布式锁分配给所述客户端,包括:
18、将所述目标子业务系统对应的分布式锁分配给所述客户端。
19、可选地,所述分布式锁释放请求还携带所述目标子业务系统标识;
20、释放所述目标业务系统对应的分布式锁,包括:
21、释放所述子目标业务系统对应的分布式锁;
22、在所述第一锁节点下定位出所述目标系统标识对应的目标服务节点,在所述目标服务节点下定位出所述第二锁节点,包括:
23、在第一锁节点下定位出所述目标系统标识对应的目标服务节点,在所述目标服务节点下定位出所述目标子业务系统对应的第二锁节点。
24、可选地,在所述第二锁节点下创建临时顺序节点,包括:
25、在所述第二锁节点下查找出序号最大的临时顺序节点,按照预设自增规则创建临时顺序节点,使得当前创建的临时顺序节点在所述第二锁节点下是序号最大的节点。
26、可选地,所述方法还包括:
27、定时检测与所述客户端的通信连接是否断开,若是,则将所述第二锁节点下所述客户端对应的临时顺序节点删除。
28、另外,根据本发明实施例的另一个方面,提供了一种获取分布式锁的装置,包括:
29、接收模块,用于接收客户端发送的分布式锁获取请求,所述分布式锁获取请求携带目标业务系统标识;
30、创建模块,用于在第一锁节点下定位出所述目标系统标识对应的目标服务节点,在所述目标服务节点下定位出第二锁节点,并在所述第二锁节点下创建临时顺序节点;
31、分配模块,用于判断所述临时顺序节点在所述第二锁节点下是不是序号最小的节点;若是,则将所述目标业务系统对应的分布式锁分配给所述客户端,并向所述客户端返回分布式锁获取成功的响应结果;若否,则向所述客户端返回分布式锁获取失败的响应结果。
32、可选地,所述接收模块还用于:接收所述客户端返回的分布式锁释放请求,所述分布式锁释放请求携带所述目标业务系统标识;
33、所述分配模块还用于:
34、释放所述目标业务系统对应的分布式锁;
35、在所述第一锁节点下定位出所述目标系统标识对应的目标服务节点,在所述目标服务节点下定位出所述第二锁节点,将所述第二锁节点下所述客户端对应的临时顺序节点删除。
36、可选地,所述接收模块还用于:接收所述客户端发送的监听器注册请求;
37、所述分配模块还用于:
38、为所述客户端创建监听器,通过所述监听器监听序号小于所述临时顺序节点且序号最大的目标临时顺序节点;
39、响应于监听到所述目标临时顺序节点被删除,判断所述客户端对应的临时顺序节点在所述第二锁节点下是不是序号最小的节点,若是,则将所述目标业务系统对应的分布式锁分配给所述客户端,并向所述客户端返回分布式锁获取成功的响应结果。
40、可选地,所述分布式锁获取请求还携带目标子业务系统标识;
41、所述创建模块还用于:在第一锁节点下定位出所述目标系统标识对应的目标服务节点,在所述目标服务节点下定位出所述目标子业务系统对应的第二锁节点,并在所述第二锁节点下创建临时顺序节点;
42、所述分配模块还用于:将所述目标子业务系统对应的分布式锁分配给所述客户端。
43、可选地,所述分布式锁释放请求还携带所述目标子业务系统标识;
44、所述分配模块还用于:
45、释放所述子目标业务系统对应的分布式锁;
46、在第一锁节点下定位出所述目标系统标识对应的目标服务节点,在所述目标服务节点下定位出所述目标子业务系统对应的第二锁节点。
47、可选地,所述创建模块还用于:
48、在所述第二锁节点下查找出序号最大的临时顺序节点,按照预设自增规则创建临时顺序节点,使得当前创建的临时顺序节点在所述第二锁节点下是序号最大的节点。
49、可选地,所述分配模块还用于:
50、定时检测与所述客户端的通信连接是否断开,若是,则将所述第二锁节点下所述客户端对应的临时顺序节点删除。
51、根据本发明实施例的另一个方面,还提供了一种电子设备,包括:
52、一个或多个处理器;
53、存储装置,用于存储一个或多个程序,
54、当所述一个或多个程序被所述一个或多个处理器执行时,所述一个或多个处理器实现上述任一实施例所述的方法。
55、根据本发明实施例的另一个方面,还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例所述的方法。
56、根据本发明实施例的另一个方面,还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
57、上述发明中的一个实施例具有如下优点或有益效果:因为采用在第一锁节点下定位出目标系统标识对应的目标服务节点,在目标服务节点下定位出第二锁节点,在第二锁节点下创建临时顺序节点,如果临时顺序节点在第二锁节点下是序号最小的节点,则将目标业务系统对应的分布式锁分配给客户端,并向客户端返回分布式锁获取成功的响应结果的技术手段,所以克服了现有技术中数据处理效率降低的技术问题。本发明实施例通过在锁节点下创建临时顺序节点,如果创建的临时顺序节点是序号最小的节点,则将目标业务系统对应的分布式锁分配给客户端,这样可以减轻分布式服务管理框架的压力,防止分布式服务管理框架处理数据的效率降低。
58、上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
本文地址:https://www.jishuxx.com/zhuanli/20240730/195586.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表