CN110677453A - 基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质 - Google Patents
基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110677453A CN110677453A CN201910752281.9A CN201910752281A CN110677453A CN 110677453 A CN110677453 A CN 110677453A CN 201910752281 A CN201910752281 A CN 201910752281A CN 110677453 A CN110677453 A CN 110677453A
- Authority
- CN
- China
- Prior art keywords
- lock
- node
- distributed lock
- service
- distributed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质,其中的所述方法包括:基于zookeeper配置分布式锁服务,所述分布式锁服务提供分布式锁的API接口;检测到通过API接口接入的系统时,为该系统创建独立系统节点;对每一独立系统节点配置对应的权限控制策略;所述独立系统节点从所述分布式锁服务的锁工场中获取锁。本发明的有益效果为:能够在高并发的情况下有效控制生产数据的重复调用,也能在多实例多任务的情况下,通过分布式锁充分应用分布式服务器的优势,实现多实例共享任务,多实例单台服务器独占任务,节省服务器资源;另一方面,不仅能够在数据安全性上能够得到保证,同时接入集成了系统平台内部框架和环境,易于使用。
Description
技术领域
本发明实施例涉及金融数据处理技术领域,尤其涉及一种基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质。
背景技术
zookeeper是是一个分布式的、开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件,其提供的功能包括:配置维护、名字服务、分布式同步、组服务等。zookeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。Zookeeper一般通过选举出一个leader,由这个leader负责发起各种系统任务,控制分布式锁调度。
目前市面上ApacheCurator框架封装zookeeper也提供了分布式锁服务。但是这种分布式锁服务具有以下不足之处:
1.数据安全性和数据隔离问题;
2.zookeeper异常情形比较多,需要人工判断处理各种情况;
3.没有提供分布式限时锁服务,不能自动释放锁;
4.引用处理比较麻烦,没有和平台框架环境进行集成。
发明内容
为了克服相关技术中存在的问题,本发明提供一种基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质,以实现通过分布式锁充分应用分布式服务器。
第一方面,本发明实施例提供了一种基于ZooKeeper的分布式锁服务实现方法,所述方法包括:
基于zookeeper配置分布式锁服务,所述分布式锁服务提供分布式锁的API接口;
检测到通过API接口接入的系统时,为该系统创建独立系统节点;
对每一独立系统节点配置对应的权限控制策略;
所述独立系统节点从所述分布式锁服务的锁工场中获取锁。
结合另一方面,本发明另一可行的实施方式中,所述检测到通过API接口接入的系统时,为该系统创建独立系统节点,包括:
在所述分布式锁服务的持久节点下创建第一临时顺序节点;
获取所述持久节点下的所有临时顺序节点编号;
检测新创建的所述第一临时顺序节点编号在所有临时顺序节点编号中是否为最小;
当新创建的所述第一临时顺序节点编号最小时,所述系统节点从分布式锁服务中获取锁;
当新创建的所述第一临时顺序节点编号不是最小时,查找比该新创建的所述临时顺序节点小的第二临时顺序节点,并为所述第二临时顺序节点注册事件监听器;
当所述第二临时顺序节点被删除时,返回所述检测新创建的所述第一临时顺序节点编号在所有临时顺序节点编号中是否为最小的步骤。
结合另一方面,本发明另一可行的实施方式中,所述系统通过API接口接入分布式锁服务之前,所述方法还包括:
所述系统接入用户管理端平台检验之后,通过API接口接入分布式锁服务,包括:
所述系统接入用户管理端平台检验之后,调用API接口,并验证所述系统接入用户的接入权限;
当所述系统接入用户具有接入权限时,通过所述API接口接入分布式锁服务;反之则拒绝接入。
结合另一方面,本发明另一可行的实施方式中,所述独立系统节点从所述分布式锁服务的锁工场中获取锁时,包括:
在获取锁时为该锁添加锁标识码,所述锁标识码为64位数字,64位数字中的高32位用以标识锁与独立系统节点之间的关系,64位数字中的低32位用以锁的递增计数。
结合另一方面,本发明另一可行的实施方式中,所述独立系统节点从所述分布式锁服务的锁工场中获取锁之后,所述方法还包括:
为每一锁的锁参数进行加密处理,所述锁参数包括:锁的路径参数、锁的时间参数、锁的名称参数以及变量参数的一种或两种以上的组合。
第二方面,本发明还提供了一种基于ZooKeeper的分布式锁服务实现装置,所述装置包括:
配置模块,用于基于zookeeper配置分布式锁服务,所述分布式锁服务提供分布式锁的API接口;
检测模块,用于检测到通过API接口接入的系统时,为该系统创建独立系统节点;
权限模块,用于对每一独立系统节点配置对应的权限控制策略;
锁分配模块,用于所述独立系统节点从所述分布式锁服务的锁工场中获取锁。
第三方面,本发明还提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
第四方面,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明通过Zookeeper开发套分布式应用组件,能够充分地利用Zookeeper的特性来实现分布式锁相关功能,其一方面不仅能够在高并发的情况下有效控制生产数据的重复调用,也能在多实例多任务的情况下,通过分布式锁充分应用分布式服务器的优势,实现多实例共享任务,多实例单台服务器独占任务,节省服务器资源;另一方面,不仅能够在数据安全性上能够得到保证,同时接入集成了系统平台内部框架和环境,易于使用。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种基于ZooKeeper的分布式锁服务实现方法的流程示意图。
图2是根据一示例性实施例示出的创建节点时的流程示意图。
图3是根据一示例性实施例示出的获取锁时的流程示意图。
图4是根据一示例性实施例示出的一种基于ZooKeeper的分布式锁服务实现装置的框图。
图5是根据一示例性实施例示出的的节点创建示意性框图。
图6是根据一示例性实施例示出的实现基于ZooKeeper的分布式锁服务实现方法的计算机设备的框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图中将各步骤描述成顺序的处理,但是其中的许多步骤可以并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排,当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图内的其它步骤。处理可以对应于方法、函数、规程、子例程、子程序等。
本发明涉及一种基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质,其主要运用于随着规模集群应用的扩大增多需要分布式锁应用组件支持的场景中,其基本思想是:通过Zookeeper开发套分布式应用组件,能够充分地利用Zookeeper的特性来实现分布式锁相关功能,该分布式锁能够实现对很多个子系统进行接入,子系统相互之间独立而互不影响,对每一独立的锁服务之间的权限进行控制,锁均进行加密处理,不仅节省了服务器的资源,而且极有效地保障了数据的安全性。
本实施例可适用于带有中央处理模块的服务器端中以进行面签业务中进线客户优化的情况中,该方法可以由中央处理模块来执行,其中该中央处理模块可以由软件和/或硬件来实现,一般地可集成于服务器端,如图1所示,为本发明中基于ZooKeeper的分布式锁服务实现方法的基本流程示意图,所述方法具体包括如下步骤:
步骤110,基于zookeeper配置分布式锁服务,所述分布式锁服务提供分布式锁的API接口;
本发明示例性实施例中,通过Rms-Snoopy实现分布式锁服务,Rms-Snoopy是基于Zookeeper开发的一套分布式锁应用组件,能够充分地利用Zookeeper的特性来实现分布式锁相关功能,充分利用Zookeeper的优势为生产服务提供高可用高效率高安全性的服务保障。
Rms-Snoopy组件提供的锁服务可以对接多个系统或子系统,其通过组件提供的API(ApplicationProgrammingInterface,应用程序编程接口)接口实现锁服务。
本步骤中,系统通过API接口接入分布式锁服务之前,所述方法包括使分布锁强制通过UM(user management,用户管理平台)进行校验的步骤,在强制接入UM校验之后各系统再通过API接口接入Rms-Snoopy组件提供的锁服务。
UM是一款通用系统,基于同一个平台下几乎所有的系统或平台或用户均可通过接入UM的方式连接至核心系统。通过UM强制接入校验,一方面保证了接入ZK-Snoopy的所有项目均为预设的项目,另一方面也保证了所有系统之间的安全性。由于UM账号与接入的各系统之间的一一对应的特性,所以不同系统之间不可能存在数据冲突,也不存在相互访问的问题,完成了数据隔离。
在此情况下,在接入Rms-Snoopy组件强制先接入UM,进一步保证了数据的隔离性和安全性。
所述系统接入用户管理端平台检验之后,通过API接口接入分布式锁服务。
本步骤中还包括在API接口验证接入用户权限的过程,以在一些应用场景中保障接入安全,这一过程包括:
所述系统接入用户管理端平台检验之后,调用API接口,并验证所述系统接入用户的接入权限,系统接入用户的接入权限包括但不限于指纹验证、面部识别验证等方式;
当所述系统接入用户具有接入权限时,通过所述API接口接入分布式锁服务;反之则拒绝接入。
步骤120,检测到通过API接口接入的系统时,为该系统创建独立系统节点;
RMS_SNOOPY提供的锁服务为每一接入的系统创建独立的系统节点,所有的锁服务操作都在对应的系统节点下产生,不同的系统接入Rms-Snoopy组件提供的锁服务之后,不同的系统之间相互独立、互不冲突,保障了数据安全。
步骤130,对每一独立系统节点配置对应的权限控制策略;
对每一独立系统节点创建权限控制策略,例如,对于A系统创建的节点,B系统无法操作或者访问,这样每一独立系统节点的数据安全也得到了进一步的保障。
步骤140,所述独立系统节点从所述分布式锁服务的锁工场中获取锁。
在Rms-Snoopy组件分布式锁服务中创建锁工场,可通过com.paic.rms.snoopy.lock.factory.LockFactory进行创建,锁工场中提供创建各类锁接口的方法。
所述锁工场包括锁接口,通过工场获取分布式锁接口后侵入对应的独立系统节点,通过锁接口即可使用锁服务。
Rms-Snoopy组件对锁的路径锁名称做加密处理,包括使用该组件的对应系统、用户均无法得知其所属的独立子系统节点名、数据以及锁接口、锁路径等,进一步保障了数据安全。
释放锁:删除自己创建子节点即可。
本发明示例性实施例的一种实施场景中,Rms-Snoopy组件在接收到其它系统或客户端在接入时发送的分布式锁服务注册请求时,根据所述分布式锁注册请求,获取与所述其它系统或客户端对应的唯一锁链接;分布式系统中,根据所述唯一锁链接,创建与所述其它系统或客户端对应的zookeeper系统节点,通过所述zookeeper系统节点,为所述客户端程序体提供分布式锁服务。
本发明的方法,一方面不仅能够在高并发的情况下有效控制生产数据的重复调用,也能在多实例多任务的情况下,通过分布式锁充分应用分布式服务器的优势,实现多实例共享任务,多实例单台服务器独占任务,节省服务器资源;另一方面,不仅能够在数据安全性上能够得到保证,同时接入集成了系统平台内部框架和环境,易于使用。
本发明示例性实施例的一实施场景中,所述检测到通过API接口接入的系统时,为该系统创建独立系统节点,包括通过编号识别的方式对获取锁进行分配,如图2所示,这一过程包括如下:
步骤210,在所述分布式锁服务的持久节点下创建第一临时顺序节点;
步骤220,获取所述持久节点下的所有临时顺序节点编号;
在一个Zookeeper集群实现分布式锁服务时,Rms-Snoopy组件下的locker是Zookeeper的一个持久节点,node_1、node_2、node_3是locker这个持久节点下面的临时顺序节点。其它系统或客户端可通过client_1、client_2、client_n表示。
本步骤中获取node_3临时顺序节点。
步骤230,检测新创建的所述第一临时顺序节点编号在所有临时顺序节点编号中是否为最小;
判断规则为node节点后的数字越大,则其临时顺序节点编号越小,本发明示例性实施例中,node_3相较于node_1和node_2而言,其编号最小。
步骤240,当新创建的所述第一临时顺序节点编号最小时,所述系统节点从分布式锁服务中获取锁;
步骤250,当新创建的所述第一临时顺序节点编号不是最小时,查找比该新创建的所述临时顺序节点小的第二临时顺序节点,并为所述第二临时顺序节点注册事件监听器;
步骤260,当所述第二临时顺序节点被删除时,返回所述检测新创建的所述第一临时顺序节点编号在所有临时顺序节点编号中是否为最小的步骤。
在本发明示例性实施例的一种实施场景中,结合图3所示,从分布式锁服务的锁工场获取锁并将所述锁传入所述独立系统节点,包括:
服务器端或用户端Client调用create()方法(创建方法)在某一节点xxx节点下(通常为系统的根目录)创建类型为EPHEMERAL_SEQUENTIAL的yyy00000a的临时节点。
服务器端或用户端Client调用getChildren(xxx)(获取子节点)方法来获取某一节点xxx节点下(通常为系统的根目录)创建的所有子节点,取所有子节点的最小值MIN。
判断MIN值是否和新创建的临时节点序号相等,当MIN值与新创建的临时节点序号相等时,表示此时所述临时系统节点获得锁,可在Rms-Snoopy组件中处理业务。
当业务处理完毕时可释放锁,删除其创建的临时节点。
当MIN值与新创建的临时节点序号不相等时,注册watch event监控并进入等待线程,直到下次子节点变更通知进程(WatchedEvent event)的时候,被唤醒,再以竞争者身份进行子节点的获取,判断是否获取锁。
同时在这个节点上注册上子节点变更通知的Watcher。
锁获取过程:a.Client获取到所有子节点path(路径),判断当创建的节点是所有子节点中序号最小时,则创建的独立系统节点从分布式锁服务的锁工场获取了锁。
锁获取失败:服务器端或用户端Client发现自己并非是所有子节点中最小,说明其还没有获取到锁,此时开始等待,等待时间为直到下次子节点变更通知process(WatchedEventevent)的时候,所述独立系统节点被唤醒,再以竞争者身份进行子节点的获取,重新判断是否获取锁,即步骤250和步骤260。
本发明的方法,通过判断编号是否最小的方式对锁进行判断,使得在创建节点的过程能够同时兼顾锁的分配,效率高不易出错,且不会互受影响。
本发明示例性实施例的一种实施场景中,所述方法还包括在获取锁时为该锁添加锁标识码的过程,以使得锁服务更易辨识且更加安全,这一过程包括如下:
在获取锁时添加64位数字的锁标识码,64位数字中的高32位用以标识锁与独立系统节点之间的关系,由于ZooKeeper同一个目录下只能有一个唯一文件名,可以将该唯一文件名添加到标识码中作为标识码中高32位的一部分,64位数字中的低32位用以锁的递增计数,所述锁标识码可以简化以字节、二进制及其组合。
本发明示例性实施例的具体实施场景中,每一独立系统节点获得锁之后还能够为每一锁的锁参数进行加密处理,所述锁参数包括:锁的路径参数、锁的时间参数、锁的名称参数以及变量参数的一种或两种以上的组合,一般为RMS_SNOOPY组件对锁的路径锁名称做加密处理,加密处理的方式包括base64/RSA等,在密钥传递过程中通过上述加密方式的随机明文密钥进行异或运算等对数据进行加密,在对数据进行加密运算时对运算中间结果进行扰乱保存,使得加密后的分布式锁的密钥明文有规律可寻,加密后,包括接入所述RMS_SNOOPY组件的对应系统也不能查看其在获取锁时相应的其它系统节点的数据,更无法得到其锁的特征,进一步保证了数据的安全性。
图4为本发明实施例提供的一种基于ZooKeeper的分布式锁服务实现装置的结构示意图,该装置可由软件和/或硬件实现,一般地集成于嗠器终端中,可通过基于ZooKeeper的分布式锁服务实现方法来实现。如图所示,本实施例可以以上述实施例为基础,提供了一种基于ZooKeeper的分布式锁服务实现装置,其主要包括了配置模块410、检测模块420、权限模块430以及锁分配模块440。
其中的配置模块410,用于基于zookeeper配置分布式锁服务,所述分布式锁服务提供分布式锁的API接口;
其中的检测模块420,用于检测到通过API接口接入的系统时,为该系统创建独立系统节点;
其中的权限模块430,用于对每一独立系统节点配置对应的权限控制策略;
其中的锁分配模块440,用于根据权限控制策略为所述独立系统节点从所述分布式锁服务的锁工场中获取锁。
本发明的另一实施场景中,如图5所示,所述检测模块420包括:
创建子模块421,用于在所述分布式锁服务的持久节点下创建第一临时顺序节点;
获取子模块422,用于获取所述持久节点下的所有临时顺序节点编号;
判断子模块423,用于检测新创建的所述第一临时顺序节点编号在所有临时顺序节点编号中是否为最小;
第一分配子模块424,用于当新创建的所述第一临时顺序节点编号最小时,所述系统节点从分布式锁服务中获取锁;
第二分配子模块425,用于当新创建的所述第一临时顺序节点编号不是最小时,查找比该新创建的所述临时顺序节点小的第二临时顺序节点,并为所述第二临时顺序节点注册事件监听器;
返回模块426,用于当所述第二临时顺序节点被删除时,返回所述检测新创建的所述第一临时顺序节点编号在所有临时顺序节点编号中是否为最小的步骤。
本发明示例性实施例的一种实施方式中,所述装置还包括:
检验模块,用于所述系统接入用户管理端平台检验之后,通过AIP接口接入分布式锁服务。
上述实施例中提供的基于ZooKeeper的分布式锁服务实现装置可执行本发明中任意实施例中所提供的基于ZooKeeper的分布式锁服务实现方法,具备执行该方法相应的功能模块和有益效果,未在上述实施例中详细描述的技术细节,可参见本发明任意实施例中所提供的基于ZooKeeper的分布式锁服务实现方法。
将意识到的是,本发明也扩展到适合于将本发明付诸实践的计算机程序,特别是载体上或者载体中的计算机程序。程序可以以源代码、目标代码、代码中间源和诸如部分编译的形式的目标代码的形式,或者以任何其它适合在按照本发明的方法的实现中使用的形式。也将注意的是,这样的程序可能具有许多不同的构架设计。例如,实现按照本发明的方法或者系统的功能性的程序代码可能被再分为一个或者多个子例程。
用于在这些子例程中间分布功能性的许多不同方式将对技术人员而言是明显的。子例程可以一起存储在一个可执行文件中,从而形成自含式的程序。这样的可执行文件可以包括计算机可执行指令,例如处理器指令和/或解释器指令(例如,Java解释器指令)。可替换地,子例程的一个或者多个或者所有子例程都可以存储在至少一个外部库文件中,并且与主程序静态地或者动态地(例如在运行时间)链接。主程序含有对子例程中的至少一个的至少一个调用。子例程也可以包括对彼此的函数调用。涉及计算机程序产品的实施例包括对应于所阐明方法中至少一种方法的处理步骤的每一步骤的计算机可执行指令。这些指令可以被再分成子例程和/或被存储在一个或者多个可能静态或者动态链接的文件中。
另一个涉及计算机程序产品的实施例包括对应于所阐明的系统和/或产品中至少一个的装置中每个装置的计算机可执行指令。这些指令可以被再分成子例程和/或被存储在一个或者多个可能静态或者动态链接的文件中。
计算机程序的载体可以是能够运载程序的任何实体或者装置。例如,载体可以包含存储介质,诸如(ROM例如CDROM或者半导体ROM)或者磁记录介质(例如软盘或者硬盘)。进一步地,载体可以是可传输的载体,诸如电学或者光学信号,其可以经由电缆或者光缆,或者通过无线电或者其它手段传递。当程序具体化为这样的信号时,载体可以由这样的线缆或者装置组成。可替换地,载体可以是其中嵌入有程序的集成电路,所述集成电路适合于执行相关方法,或者供相关方法的执行所用。
应该留意的是,上文提到的实施例是举例说明本发明,而不是限制本发明,并且本领域的技术人员将能够设计许多可替换的实施例,而不会偏离所附权利要求的范围。在权利要求中,任何放置在圆括号之间的参考符号不应被解读为是对权利要求的限制。动词“包括”和其词形变化的使用不排除除了在权利要求中记载的那些之外的元素或者步骤的存在。在元素之前的冠词“一”或者“一个”不排除复数个这样的元素的存在。本发明可以通过包括几个明显不同的组件的硬件,以及通过适当编程的计算机而实现。在列举几种装置的装置权利要求中,这些装置中的几种可以通过硬件的同一项来体现。在相互不同的从属权利要求中陈述某些措施的单纯事实并不表明这些措施的组合不能被用来获益。
如果期望的话,这里所讨论的不同功能可以以不同顺序执行和/或彼此同时执行。此外,如果期望的话,以上所描述的一个或多个功能可以是可选的或者可以进行组合。
如果期望的话,上文所讨论的各步骤并不限于各实施例中的执行顺序,不同步骤可以以不同顺序执行和/或彼此同时执行。此外,在其他实施例中,以上所描述的一个或多个步骤可以是可选的或者可以进行组合。
虽然本发明的各个方面在独立权利要求中给出,但是本发明的其它方面包括来自所描述实施方式的特征和/或具有独立权利要求的特征的从属权利要求的组合,而并非仅是权利要求中所明确给出的组合。
这里所要注意的是,虽然以上描述了本发明的示例实施方式,但是这些描述并不应当以限制的含义进行理解。相反,可以进行若干种变化和修改而并不背离如所附权利要求中所限定的本发明的范围。
本领域普通技术人员应该明白,本发明实施例的装置中的各模块可以用通用的计算装置来实现,各模块可以集中在单个计算装置或者计算装置组成的网络组中,本发明实施例中的装置对应于前述实施例中的方法,其可以通过可执行的程序代码实现,也可以通过集成电路组合的方式来实现,因此本发明并不局限于特定的硬件或者软件及其结合。
本领域普通技术人员应该明白,本发明实施例的装置中的各模块可以用通用的移动终端来实现,各模块可以集中在单个移动终端或者移动终端组成的装置组合中,本发明实施例中的装置对应于前述实施例中的方法,其可以通过编辑可执行的程序代码实现,也可以通过集成电路组合的方式来实现,因此本发明并不局限于特定的硬件或者软件及其结合。
本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备20至少包括但不限于:可通过系统总线相互通信连接的存储器21、处理器22,如图6所示。需要指出的是,图6仅示出了具有组件21-22的计算机设备20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器21(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备20的内部存储单元,例如该计算机设备20的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备20的外部存储设备,例如该计算机设备20上配备的插接式硬盘,智能存储卡(SmartMediaCard,SMC),安全数字(SecureDigital,SD)卡,闪存卡(FlashCard)等。当然,存储器21还可以既包括计算机设备20的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备20的操作系统和各类应用软件,例如实施例一的RNNs神经网络的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器22在一些实施例中可以是中央处理器(CentralProcessingUnit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备20的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如实现深度学习模型的各层结构,以实现上述实施例的基于ZooKeeper的分布式锁服务实现方法。
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储金融小程序,被处理器执行时实现上述实施例的基于ZooKeeper的分布式锁服务实现方法。
另一个涉及计算机程序产品的实施例包括对应于所阐明的系统和/或产品中至少一个的装置中每个装置的计算机可执行指令。这些指令可以被再分成子例程和/或被存储在一个或者多个可能静态或者动态链接的文件中。
计算机程序的载体可以是能够运载程序的任何实体或者装置。例如,载体可以包含存储介质,诸如(ROM例如CDROM或者半导体ROM)或者磁记录介质(例如软盘或者硬盘)。进一步地,载体可以是可传输的载体,诸如电学或者光学信号,其可以经由电缆或者光缆,或者通过无线电或者其它手段传递。当程序具体化为这样的信号时,载体可以由这样的线缆或者装置组成。可替换地,载体可以是其中嵌入有程序的集成电路,所述集成电路适合于执行相关方法,或者供相关方法的执行所用。
应该留意的是,上文提到的实施例是举例说明本发明,而不是限制本发明,并且本领域的技术人员将能够设计许多可替换的实施例,而不会偏离所附权利要求的范围。在权利要求中,任何放置在圆括号之间的参考符号不应被解读为是对权利要求的限制。动词“包括”和其词形变化的使用不排除除了在权利要求中记载的那些之外的元素或者步骤的存在。在元素之前的冠词“一”或者“一个”不排除复数个这样的元素的存在。本发明可以通过包括几个明显不同的组件的硬件,以及通过适当编程的计算机而实现。在列举几种装置的装置权利要求中,这些装置中的几种可以通过硬件的同一项来体现。在相互不同的从属权利要求中陈述某些措施的单纯事实并不表明这些措施的组合不能被用来获益。
如果期望的话,这里所讨论的不同功能可以以不同顺序执行和/或彼此同时执行。此外,如果期望的话,以上所描述的一个或多个功能可以是可选的或者可以进行组合。
如果期望的话,上文所讨论的各步骤并不限于各实施例中的执行顺序,不同步骤可以以不同顺序执行和/或彼此同时执行。此外,在其他实施例中,以上所描述的一个或多个步骤可以是可选的或者可以进行组合。
虽然本发明的各个方面在独立权利要求中给出,但是本发明的其它方面包括来自所描述实施方式的特征和/或具有独立权利要求的特征的从属权利要求的组合,而并非仅是权利要求中所明确给出的组合。
这里所要注意的是,虽然以上描述了本发明的示例实施方式,但是这些描述并不应当以限制的含义进行理解。相反,可以进行若干种变化和修改而并不背离如所附权利要求中所限定的本发明的范围。
本领域普通技术人员应该明白,本发明实施例的装置中的各模块可以用通用的计算装置来实现,各模块可以集中在单个计算装置或者计算装置组成的网络组中,本发明实施例中的装置对应于前述实施例中的方法,其可以通过可执行的程序代码实现,也可以通过集成电路组合的方式来实现,因此本发明并不局限于特定的硬件或者软件及其结合。
本领域普通技术人员应该明白,本发明实施例的装置中的各模块可以用通用的移动终端来实现,各模块可以集中在单个移动终端或者移动终端组成的装置组合中,本发明实施例中的装置对应于前述实施例中的方法,其可以通过编辑可执行的程序代码实现,也可以通过集成电路组合的方式来实现,因此本发明并不局限于特定的硬件或者软件及其结合。
注意,上述仅为本发明的示例性实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种基于ZooKeeper的分布式锁服务实现方法,其特征在于,所述方法包括:
基于zookeeper配置分布式锁服务,所述分布式锁服务提供分布式锁的API接口;
检测到通过API接口接入的系统时,为该系统创建独立系统节点;
对每一独立系统节点配置对应的权限控制策略;
所述独立系统节点从所述分布式锁服务的锁工场中获取锁。
2.根据权利要求1所述的方法,其特征在于,所述检测到通过API接口接入的系统时,为该系统创建独立系统节点,包括:
在所述分布式锁服务的持久节点下创建第一临时顺序节点;
获取所述持久节点下的所有临时顺序节点编号;
检测新创建的所述第一临时顺序节点编号在所有临时顺序节点编号中是否为最小;
当新创建的所述第一临时顺序节点编号最小时,所述系统节点从分布式锁服务中获取锁;
当新创建的所述第一临时顺序节点编号不是最小时,查找比该新创建的所述临时顺序节点小的第二临时顺序节点,并为所述第二临时顺序节点注册事件监听器;
当所述第二临时顺序节点被删除时,返回所述检测新创建的所述第一临时顺序节点编号在所有临时顺序节点编号中是否为最小的步骤。
3.根据权利要求1所述的方法,其特征在于,所述系统通过API接口接入分布式锁服务之前,所述方法还包括:
所述系统接入用户管理端平台检验之后,通过API接口接入分布式锁服务,包括:
所述系统接入用户管理端平台检验之后,调用API接口,并验证所述系统接入用户的接入权限;
当所述系统接入用户具有接入权限时,通过所述API接口接入分布式锁服务;反之则拒绝接入。
4.根据权利要求1所述的方法,其特征在于,所述独立系统节点从所述分布式锁服务的锁工场中获取锁时,包括:
在获取锁时为该锁添加锁标识码,所述锁标识码为64位数字,64位数字中的高32位用以标识锁与独立系统节点之间的关系,64位数字中的低32位用以锁的递增计数。
5.根据权利要求1所述的方法,其特征在于,所述独立系统节点从所述分布式锁服务的锁工场中获取锁之后,所述方法还包括:
为每一锁的锁参数进行加密处理,所述锁参数包括:锁的路径参数、锁的时间参数、锁的名称参数以及变量参数的一种或两种以上的组合。
6.一种基于ZooKeeper的分布式锁服务实现装置,其特征在于,所述装置包括:
配置模块,用于基于zookeeper配置分布式锁服务,所述分布式锁服务提供分布式锁的API接口;
检测模块,用于检测到通过API接口接入的系统时,为该系统创建独立系统节点;
权限模块,用于对每一独立系统节点配置对应的权限控制策略;
锁分配模块,用于所述独立系统节点从所述分布式锁服务的锁工场中获取锁。
7.根据权利要求6所述的装置,其特征在于,所述检测模块包括:
创建子模块,用于在所述分布式锁服务的持久节点下创建第一临时顺序节点;
获取子模块,用于获取所述持久节点下的所有临时顺序节点编号;
判断子模块,用于检测新创建的所述第一临时顺序节点编号在所有临时顺序节点编号中是否为最小;
第一分配子模块,用于当新创建的所述第一临时顺序节点编号最小时,所述系统节点从分布式锁服务中获取锁;
第二分配子模块,用于当新创建的所述第一临时顺序节点编号不是最小时,查找比该新创建的所述临时顺序节点小的第二临时顺序节点,并为所述第二临时顺序节点注册事件监听器;
返回模块,用于当所述第二临时顺序节点被删除时,返回所述检测新创建的所述第一临时顺序节点编号在所有临时顺序节点编号中是否为最小的步骤。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
检验模块,用于所述系统接入用户管理端平台检验之后,通过API接口接入分布式锁服务。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910752281.9A CN110677453A (zh) | 2019-08-15 | 2019-08-15 | 基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910752281.9A CN110677453A (zh) | 2019-08-15 | 2019-08-15 | 基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110677453A true CN110677453A (zh) | 2020-01-10 |
Family
ID=69075333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910752281.9A Pending CN110677453A (zh) | 2019-08-15 | 2019-08-15 | 基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110677453A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111562971A (zh) * | 2020-04-09 | 2020-08-21 | 北京明略软件系统有限公司 | 分布式定时器的调度方法及系统 |
CN112307105A (zh) * | 2020-11-03 | 2021-02-02 | 平安普惠企业管理有限公司 | 基于多线程的定时任务运行方法、装置、设备及存储介质 |
CN112395140A (zh) * | 2020-11-17 | 2021-02-23 | 平安科技(深圳)有限公司 | 去中心化的任务调度方法、装置、设备及介质 |
CN114547709A (zh) * | 2022-02-24 | 2022-05-27 | 江苏安超云软件有限公司 | 基于iSCSI共享盘数据一致性的方法及应用 |
CN115277114A (zh) * | 2022-07-08 | 2022-11-01 | 北京城市网邻信息技术有限公司 | 分布式锁处理方法、装置、电子设备及存储介质 |
CN115426356A (zh) * | 2022-08-30 | 2022-12-02 | 中国银行股份有限公司 | 一种分布式定时任务锁更新控制执行方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103997498A (zh) * | 2014-05-27 | 2014-08-20 | 北京京东尚科信息技术有限公司 | 一种分布式锁服务的实现方法及组件 |
WO2014201012A1 (en) * | 2013-06-10 | 2014-12-18 | Amazon Technologies, Inc. | Distributed lock management in a cloud computing environment |
CN106572051A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 分布式系统中分布式锁服务实现方法以及装置 |
CN106712981A (zh) * | 2015-07-23 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 一种节点变更通知方法及装置 |
CN108038005A (zh) * | 2017-12-28 | 2018-05-15 | 广东蜂助手网络技术股份有限公司 | 基于zookeeper的共享资源访问方法、客户端、服务端、系统 |
CN109067841A (zh) * | 2018-07-05 | 2018-12-21 | 武汉斗鱼网络科技有限公司 | 基于ZooKeeper的服务限流方法、系统、服务器及存储介质 |
CN109101341A (zh) * | 2017-06-21 | 2018-12-28 | 阿里巴巴集团控股有限公司 | 分布式锁的分配方法及设备 |
-
2019
- 2019-08-15 CN CN201910752281.9A patent/CN110677453A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014201012A1 (en) * | 2013-06-10 | 2014-12-18 | Amazon Technologies, Inc. | Distributed lock management in a cloud computing environment |
CN103997498A (zh) * | 2014-05-27 | 2014-08-20 | 北京京东尚科信息技术有限公司 | 一种分布式锁服务的实现方法及组件 |
CN106712981A (zh) * | 2015-07-23 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 一种节点变更通知方法及装置 |
CN106572051A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 分布式系统中分布式锁服务实现方法以及装置 |
CN109101341A (zh) * | 2017-06-21 | 2018-12-28 | 阿里巴巴集团控股有限公司 | 分布式锁的分配方法及设备 |
CN108038005A (zh) * | 2017-12-28 | 2018-05-15 | 广东蜂助手网络技术股份有限公司 | 基于zookeeper的共享资源访问方法、客户端、服务端、系统 |
CN109067841A (zh) * | 2018-07-05 | 2018-12-21 | 武汉斗鱼网络科技有限公司 | 基于ZooKeeper的服务限流方法、系统、服务器及存储介质 |
Non-Patent Citations (1)
Title |
---|
刘芬等: "基于Zookeeper的分布式锁服务及性能优化", 《计算机研究与发展》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111562971A (zh) * | 2020-04-09 | 2020-08-21 | 北京明略软件系统有限公司 | 分布式定时器的调度方法及系统 |
CN112307105A (zh) * | 2020-11-03 | 2021-02-02 | 平安普惠企业管理有限公司 | 基于多线程的定时任务运行方法、装置、设备及存储介质 |
CN112395140A (zh) * | 2020-11-17 | 2021-02-23 | 平安科技(深圳)有限公司 | 去中心化的任务调度方法、装置、设备及介质 |
CN112395140B (zh) * | 2020-11-17 | 2023-01-17 | 平安科技(深圳)有限公司 | 去中心化的任务调度方法、装置、设备及介质 |
CN114547709A (zh) * | 2022-02-24 | 2022-05-27 | 江苏安超云软件有限公司 | 基于iSCSI共享盘数据一致性的方法及应用 |
CN115277114A (zh) * | 2022-07-08 | 2022-11-01 | 北京城市网邻信息技术有限公司 | 分布式锁处理方法、装置、电子设备及存储介质 |
CN115277114B (zh) * | 2022-07-08 | 2023-07-21 | 北京城市网邻信息技术有限公司 | 分布式锁处理方法、装置、电子设备及存储介质 |
CN115426356A (zh) * | 2022-08-30 | 2022-12-02 | 中国银行股份有限公司 | 一种分布式定时任务锁更新控制执行方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110677453A (zh) | 基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质 | |
US10116642B2 (en) | Identity management over multiple identity providers | |
CN112188493B (zh) | 一种鉴权认证方法、系统及相关设备 | |
CN109086596B (zh) | 应用程序的认证方法、装置及系统 | |
US9922181B2 (en) | Security model for network information service | |
CN110673933A (zh) | 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质 | |
US11113047B2 (en) | Systems and processes of accessing backend services with a mobile application | |
CN107835181B (zh) | 服务器集群的权限管理方法、装置、介质和电子设备 | |
CN109995523B (zh) | 激活码管理方法及装置、激活码生成方法及装置 | |
CN111880919B (zh) | 数据调度方法、系统和计算机设备 | |
CN111666145A (zh) | 消息队列的消息处理方法、系统和计算机设备 | |
CN111899008A (zh) | 资源转移方法、装置、设备及系统 | |
CN107526580B (zh) | 终端应用识别方法及装置 | |
CN113285843B (zh) | 容器网络配置方法、装置、计算机可读介质及电子设备 | |
CN113434766B (zh) | 订阅信息的推送方法和装置、存储介质及电子装置 | |
CN113010238A (zh) | 一种微应用调用接口的权限确定方法、装置和系统 | |
CN112559352A (zh) | 接口测试的方法、装置、设备及存储介质 | |
CN112181599A (zh) | 模型训练方法、装置及存储介质 | |
CN109905407B (zh) | 基于vpn服务器访问内网的管理方法、系统、设备及介质 | |
CN113301557B (zh) | eSIM卡状态管理方法、装置、设备及存储介质 | |
CN116389385A (zh) | 一种系统资源处理方法、装置、存储介质及设备 | |
CN113360172B (zh) | 应用部署方法、装置、计算机设备及存储介质 | |
CN116150273A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN115567218A (zh) | 基于区块链的安全证书的数据处理方法、装置和服务器 | |
CN111369246B (zh) | 智能合约的调用鉴权方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200110 |