[发明专利]锁标识分配和定位方法、装置、设备及存储介质在审
申请号: | 202210532882.0 | 申请日: | 2022-05-11 |
公开(公告)号: | CN115048228A | 公开(公告)日: | 2022-09-13 |
发明(设计)人: | 樊哲 | 申请(专利权)人: | 北京奇艺世纪科技有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52;G06F16/176 |
代理公司: | 北京华夏泰和知识产权代理有限公司 11662 | 代理人: | 韩月玲 |
地址: | 100080 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 标识 分配 定位 方法 装置 设备 存储 介质 | ||
本申请涉及一种锁标识分配和定位方法、装置、设备及存储介质,涉及云计算技术领域。该锁标识分配方法包括:获取一级节点的数量,其中,一级节点是指根节点的子节点,一级节点的数量为至少两个;获取目标锁标识;根据目标锁标识和一级节点的数量,查找目标锁标识对应的目标一级节点;将目标锁标识分配至目标一级节点。本申请用以解决Reaper线程与ZK断开连接,无法删除锁的问题。
技术领域
本申请涉及云计算技术领域,尤其涉及一种锁标识分配和定位方法、装置、设备及存储介质。
背景技术
ZooKeeper(简称ZK)是一个分布式应用程序协调服务软件,是一个开源的软件项目,它为大型分布式计算提供分布式配置服务、同步服务和命名注册。分布式锁是控制分布式系统之间同步访问共享资源的一种方式,在互联网开发中经常使用ZK实现分布式锁。Curator是对ZK的高阶封装,是一套开源的ZK客户端框架,解决了很多ZK客户端非常底层的细节开发工作,与操作原生的ZK相比,它提供了更加方便的功能,开发中经常直接使用Curator操作分布式锁。
获取锁的工作原理:ZK上有一个锁,锁标识为“my_lock”,客户端A想获取锁“my_lock”,对ZK发出加锁请求,在锁“my_lock”下创建一个临时顺序节点a,当查询到锁“my_lock”下的所有子节点中,临时顺序节点a的排序是第一个,则客户端A成功获取锁“my_lock”。
释放锁的工作原理:客户端A获取锁之后,可能处理了一些代码逻辑,处理完成后就会释放锁,释放锁就是客户端A把在锁“my_lock”下创建的临时顺序节点a删除。客户端A释放锁“my_lock”之后,其他客户端才有可能成功获取锁“my_lock”。
删除锁的方式:锁“my_lock”是持久节点,ZK不能主动删除,需要外部显式的调用ZK进行删除。使用Curator删除锁时,需要创建一个Reaper(收割)线程用于清理锁。这个Reaper线程的机制是,先读取ZK中所有锁父节点的名称,然后每次读取一个锁父节点下的所有锁标识,查看每个锁标识下面是否有锁的子节点,若该锁标识下面无锁的子节点,则这个锁标识对应的锁可以删除。
当Reaper线程每次读取的一个锁父节点下的所有锁标识的数量超过了Reaper线程的阈值,会导致Reaper线程与ZK断开连接,无法删除锁,ZK中各个节点的数量越积越多,ZK响应越来越慢,最终拖垮系统。
发明内容
本申请提供了一种锁标识分配和定位方法、装置、设备及存储介质,用以解决Reaper线程与ZK断开连接,无法删除锁的问题。
第一方面,本申请提供了一种锁标识分配方法,包括:
获取一级节点的数量,其中,所述一级节点是指根节点的子节点,所述一级节点的数量为至少两个;
获取目标锁标识;
根据所述目标锁标识和所述一级节点的数量,查找所述目标锁标识对应的目标一级节点;
将所述目标锁标识分配至所述目标一级节点。
可选地,所述根据所述目标锁标识和所述一级节点的数量,查找所述目标锁标识对应的目标一级节点,包括:
获取所述目标锁标识对应的哈希值;
根据所述一级节点的数量,对所述哈希值进行取模运算,获得目标序号;
获取所述目标序号对应的所述目标一级节点。
可选地,所述方法还包括:
获取任一所述一级节点下的锁标识的数量;
根据所述锁标识的数量,调整所述一级节点的数量。
可选地,所述根据所述锁标识的数量,调整所述一级节点的数量,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇艺世纪科技有限公司,未经北京奇艺世纪科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210532882.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于追踪动物群体的健康的方法和系统
- 下一篇:一种锂离子电池状态联合估算方法