[发明专利]一种基于redis的动态集群锁系统在审
申请号: | 202011097234.4 | 申请日: | 2020-10-14 |
公开(公告)号: | CN112256443A | 公开(公告)日: | 2021-01-22 |
发明(设计)人: | 代存折;李妃军;龚勤 | 申请(专利权)人: | 杭州当虹科技股份有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 杭州橙知果专利代理事务所(特殊普通合伙) 33261 | 代理人: | 杜放 |
地址: | 310000 浙江省杭州市西*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 redis 动态 集群 系统 | ||
本发明公开了一种基于redis的动态集群锁系统。它包括定义模块、加锁模块、守护模块、计算模块、业务执行模块、释放守护模块、解锁模块,定义模块用于在内存中声明被锁资源的唯一标识集合;加锁模块用于使用redis提供的setnx原子方法对定义模块声明的资源唯一标识进行设置锁时间;守护模块用于启用延迟线程监听加锁模块中被锁资源的使用情况;计算模块用于通过对资源锁的时间及资源集合进行临界值计算,到期后通知加锁模块;业务执行模块用于业务逻辑执行;释放守护模块用于在业务执行模块结束后对守护模块的延迟线程的释放;解锁模块用于把该资源的标识从redis中剔除。本发明的有益效果是:对锁进行动态管控,让被锁资源能够被其他服务正常使用。
技术领域
本发明涉及数据处理相关技术领域,尤其是指一种基于redis的动态集群锁系统。
背景技术
由于目前微服务集群化,但是资源比如文件、视频等只存在一份,如果每个服务都要来获取相关资源会造成数据混乱;如果单纯使用锁机制且无动态机制的话,会造成持锁的服务由于部分原因停止服务而导致其对应的资源被锁住。目前业界大部分使用的集群锁没有对锁进行动态管控。
发明内容
本发明是为了克服现有技术中存在上述的不足,提供了一种能够对锁进行动态管控的基于redis的动态集群锁系统。
为了实现上述目的,本发明采用以下技术方案:
一种基于redis的动态集群锁系统,包括定义模块、加锁模块、守护模块、计算模块、业务执行模块、释放守护模块、解锁模块,所述的定义模块用于在内存中声明被锁资源的唯一标识集合,与加锁模块连接;所述的加锁模块用于使用redis提供的setnx原子方法对定义模块声明的资源唯一标识进行设置锁时间,分别与守护模块、计算模块、业务执行模块连接;所述的守护模块用于启用延迟线程监听加锁模块中被锁资源的使用情况,与计算模块连接;所述的计算模块用于通过对资源锁的时间及资源集合进行临界值计算,到期后通知加锁模块;所述的业务执行模块用于业务逻辑执行,分别与释放守护模块、解锁模块连接;所述的释放守护模块用于在业务执行模块结束后对守护模块的延迟线程的释放;所述的解锁模块用于把该资源的标识从redis中剔除。
本发明公开了一种基于redis的动态集群锁方案,包括定义模块、加锁模块、守护模块、计算模块、业务执行模块、释放守护模块、解锁模块,通过基于redis的动态集群锁,能够对锁进行动态管控,从而保证集群下使用锁的服务在宕机、停止服务时可以自动释放所持的锁,让被锁资源能够被其他服务正常使用。
作为优选,所述的定义模块中,被锁资源的唯一标识集合必须为线程安全,即多线程读写一致,使用java线程安全集合进行定义,值定义为资源唯一标识。
作为优选,所述的加锁模块中,由于redis提供的setnx方法为原子操作,因此可用于集群下的锁管理,setnx流程是设置一个值到redis,如果redis已经有了则设置失败,反之成功,利用该原理通过setnx设置资源的唯一标识,如果失败说明被别的服务使用,则放弃本次业务操作,如果成功需要设置过期时间即过期后该资源唯一标识从redis中自动剔除,过期时间设置为服务启动耗时时间,是为了方便服务重启后锁的时间刚好到期。
作为优选,所述的守护模块中,加锁模块成功后,启动一个延迟异步线程,该线程持续对该资源在redis中的过期时间进行变更。
作为优选,所述的计算模块中,根据资源锁的时间乘以85%得到延迟时间,用于守护模块创建的延迟线程的开始执行时间,剩余15%的时间是预留给操作redis耗时时间;延迟开始执行前需要获取定义模块中的资源锁集合,判断集合中是否有该资源锁,只有存在才会执行加锁模块。
作为优选,所述的业务执行模块中,根据具体的业务逻辑执行相应操作,因为计算模块已经完成了动态加锁的流程,业务未执行完成前,该锁一直在。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州当虹科技股份有限公司,未经杭州当虹科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011097234.4/2.html,转载请声明来源钻瓜专利网。