CN110673933A - 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质 - Google Patents
基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN110673933A CN110673933A CN201910752332.8A CN201910752332A CN110673933A CN 110673933 A CN110673933 A CN 110673933A CN 201910752332 A CN201910752332 A CN 201910752332A CN 110673933 A CN110673933 A CN 110673933A
- Authority
- CN
- China
- Prior art keywords
- wind control
- asynchronous
- queue
- requests
- node
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明涉及一种基于ZooKeeper的分布式异步队列实现方法、装置、计算机设备及可读存储介质,其中的所述方法包括:当接收风控请求时,对所述风控请求进行拆分,形成若干风控子请求;将所述若干风控子请求发送至分布式系统的异步任务队列;根据所述异步任务队列将所述若干风控子请求分配至不同的风控服务器。本发明的有益效果为:在分布式应用系统中建立异步任务队列,通过对风控请求进行拆分后分配到不同的异步任务节点,同时通过zookeeper集群自定义负载平衡分配任务,把异步任务节点分配到不同的服务器去处理,最后再回调处理对应任务逻辑,能够合理地节约服务器资源配置,把单服务器的任务结合到分布式环境中执行,大幅度提高高并发任务量的处理效率与准确率。
Description
技术领域
本发明实施例涉及金融数据处理技术领域,尤其涉及一种基于ZooKeeper的分布式异步队列实现方法、装置、设备及存储介质。
背景技术
zookeeper是是一个分布式的、开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件,其提供的功能包括:配置维护、名字服务、分布式同步、组服务等。zookeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。Zookeeper一般通过选举出一个leader持久节点,由这个leader负责发起各种系统任务,控制分布式锁调度。
随着公司业务的扩展,征信管理系统(PH-YXD-CM)已经很难满足高并发的实时查询征信的服务,因此需要做异步改造。作为调用方的风控管理系统(PH-YXD-RMS)同样需要配合做异步化调整。Rms-Snoopy组件通过迭代升级,不仅能够提供分布式锁服务,还能够提供分布式异步队列任务服务。通过本次系统改造,RMS系统将实现真正的异步化,处理更高并发量的任务。目的是为RMS系统异步化提供一个更高效、更稳健的分布式异步任务队列控制服务。
发明内容
为了克服相关技术中存在的问题,本发明提供一种基于ZooKeeper的分布式异步队列实现方法、装置、设备及存储介质,以实现通过异步化的系统调用服务,满足更高的并发需求。
第一方面,本发明实施例提供了一种基于ZooKeeper的分布式异步队列实现方法,所述方法包括:
当接收风控请求时,对所述风控请求进行拆分,形成若干风控子请求;
将所述若干风控子请求发送至分布式系统的异步任务队列;
根据所述异步任务队列将所述若干风控子请求分配至不同的风控服务器。
结合另一方面,本发明另一可行的实施方式中,所述方法还包括:
当其中的一个所述风控服务器接收到风控子请求时,根据所述分布式系统的回调机制,获取所述若干风控子请求中的其它风控子请求;
将所述若干风控子请求中的其它风控子请求发送至不同的其它风控服务器。
结合另一方面,本发明另一可行的实施方式中,当接收风控请求之前,所述方法包括:
创建异步任务队列:
在所述分布式系统的持久节点下创建临时有序队列任务节点;
监听到新节点的增加时,查询缓存中所述持久节点下所有临时有序队列任务节点中编号最大的节点;
获取所述分布式系统下所有临时有序队列任务节点;
比较缓存和所述分布式系统下所有临时有序队列任务节点,得到新增节点;
将新增节点存入缓存中;
获取对应的新增节点数据;
通过调用分布式系统的异步锁服务获取异步任务的调度权,为所述新增节点配置异步锁。
结合另一方面,本发明另一可行的实施方式中,所述方法还包括:
当需要删除所述异步任务时,所述方法包括:
删除所述异步任务的节点;
监听到删除节点的操作时,获取缓存中所述持久节点下的所有临时有序队列任务节点;
检测所述异步任务节点是否存在于所述分布式系统,若不存在,则在缓存中删除所述异步任务节点的记录;若存在,结束流程。
结合另一方面,本发明另一可行的实施方式中,所述将所述若干风控子请求发送至分布式系统的异步任务队列,包括:
为拆分的各风控子请求生成对应的处理标识;
将各所述风控子请求的处理标识发送至分布式系统的异步任务队列;
通过所述异步任务队列的每一异步任务为对应的所述风控子请求释放锁。
第二方面,本发明还提供了一种基于ZooKeeper的分布式异步队列实现装置,所述装置包括:
拆分模块,用于当接收风控请求时,对所述风控请求进行拆分,形成若干风控子请求;
异步队列模块,用于将所述若干风控子请求发送至分布式系统的异步任务队列;
分配模块,用于根据所述异步任务队列将所述若干风控子请求分配至不同的风控服务器。
第三方面,本发明还提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
第四方面,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明在分布式应用系统中建立异步任务队列,通过对风控请求进行拆分后分配到不同的异步任务节点,同时通过zookeeper集群自定义负载平衡分配任务,把异步任务节点分配到不同的服务器去处理,最后再回调处理对应任务逻辑,能够合理地节约服务器资源配置,把单服务器的任务结合到分布式环境中执行,大幅度提高高并发任务量的处理效率与准确率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种基于ZooKeeper的分布式异步队列实现方法的流程示意图。
图2是根据一示例性实施例示出的异步锁分配时的流程示意图。
图3是根据一示例性实施例示出的异步锁删除时的示意图。
图4是根据一示例性实施例示出的异步锁整体实现时具体的示意图。
图5是根据一示例性实施例示出的一种基于ZooKeeper的分布式异步队列实现装置的示意性框图。
图6是根据一示例性实施例示出的实现方法的计算机设备的框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图中将各步骤描述成顺序的处理,但是其中的许多步骤可以并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排,当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图内的其它步骤。处理可以对应于方法、函数、规程、子例程、子程序等。
本发明涉及一种基于ZooKeeper的分布式异步队列实现方法、装置、设备及存储介质,其主要运用于带有基于Zookeeper开发的一套分布式锁应用组件Rms-Snoopy的场景中,其基本思想是:通过接入Rms-Snoopy项目,使用该项目提供的分布式异步队列任务服务,把风控模块业务逻辑进行梳理拆分,把不同的逻辑任务分配到Zookeeper不同的任务队列节点,再通过Zookeeper集群进行自定义负载均衡分配任务,把任务分配到不同的服务器去处理,最后再回调处理对应业务逻辑。这样不仅可以更好的管理需要异步化处理的系统调用服务,还可以满足更高的并发需求,同时节省了服务器环境资源。
本实施例可适用于带有中央处理模块的服务器集群中以实现基于ZooKeeper的分布式异步队列实现的情况中,该方法可以由中央处理模块来执行,其中该中央处理模块可以由软件和/或硬件来实现,一般地可集成于服务器集群,如图1所示,为本发明中基于ZooKeeper的分布式异步队列实现方法的基本流程示意图,所述方法具体包括如下步骤:
步骤110,当接收风控请求时,对所述风控请求进行拆分,形成若干风控子请求;
所述风控请求为通过风控系统发出的请求信息,其一般是对风险事件的分析,根据具体的场景动态地调整规则以实现风险预警,根据发出风控请求的请求方的不同,所述风控请求可包括不同的风险事件的分析以及变化的风险规则。
本发明示例性实施例的一种实施场景中,所述对所述风控请求进行拆分,可以为对一个完整的风控请求的拆解,拆解之后的若干风控子请求组合之后能够再恢复成所述完整的风控请求,也可以为对一个完整的风控请求的复制,复制之后的风控请求发送至不同的服务器之后对应执行其负责执行的部分。
步骤120,将所述若干风控子请求发送至分布式系统的异步任务队列;
本发明示例性实施例中,通过Rms-Snoopy实现分布式锁服务,Rms-Snoopy是基于Zookeeper开发的一套分布式锁应用组件,能够充分地利用Zookeeper的特性来实现分布式锁相关功能,充分利用Zookeeper的优势为生产服务提供高可用高效率高安全性的服务保障。
风控平台包括一定数量的风控服务器,不同的风控流程风控规则复杂度不同,一次风控请求仅能通过一台服务器执行运算。通过SNOOPY组件能够把一次风控请求拆分成功多个风控服务均分到不同的风控服务器,实现分布资源优化配置,同时将各风控子请求发送至分布式系统的异步任务队列的异步服务也能够减少调用方必须等待被调用方返回结果而超时占用服务器资源的情况。
通过Rms-Snoopy组件连接到Zookeeper之后,通过Zookeeper对接收到的风控请求进行分布,通常一个风控请求能够拆分或衍生10~20个(根据风控服务器的数量确定拆分的风控子请求的数量)不同的风控子请求到不同的服务器。
不同的风控子请求实现不同的风控服务和风险规则,通过不同的服务器的对所述风控子请求的计算最终得出风险结果并汇总之后发送风控请求的请求方。
步骤130,根据所述异步任务队列将所述若干风控子请求分配至不同的风控服务器。
本发明示例性实施例中,每一个分布式系统对应一个异步任务控制系统,该异步任务控制系统至少包括一个异步任务队列,异步任务队列为其对应的分布式系统的异步任务进行管控。例如,异步任务队列为收集其对应的分布式系统自身的所有异步任务(风控请求拆分形成的风控子请求的配置)建立的异步任务队列,所述异步任务队列可以对异步任务数量进行监控,即可实时掌握该分布式系统当前的任务负担,实现分布资源的优化配置。
本发明的方法,通过在分布式应用系统中建立异步任务队列,使得对请求方发出的风控请求能够在zookeeper中进行拆分或衍生之后分配到不同的服务器节点,各服务器的任务处理逻辑则可以根据服务器的回调机制从风控请求中得出,通过异步任务队列不仅能够合理地节约服务器资源配置,把单服务器的任务结合到分布式环境中执行,还能够大幅度提高高并发任务量的处理效率与准确率。
本发明示例性实施例的一种实施场景中,当其中的一个所述风控服务器接收到风控子请求时,根据所述分布式系统的回调机制,获取所述若干风控子请求中的其它风控子请求;将所述若干风控子请求中的其它风控子请求发送至不同的其它风控服务器。所述回调机制在不同的应用场景中根据具体的计算机编写语言的不同其所应用的具体回调函数及采用的代码也不相同。
本发明的方法,能够根据风控子请求的业务处理逻辑得到风控请求的业务逻辑,并结合风控请求的业务逻辑在最终的风险控制汇总中得到更加符合用户需求的风险计算结果。
本发明示例性实施例的一种实施场景中,如图2所示,基于zookeeper的Rms-Snoopy组件中实现异步队列任务的过程可包括如下步骤:
步骤210,创建异步任务队列:
通过Rms-Snoopy组件的异步任务系统创建异步任务队列。
步骤220,在所述分布式系统的持久节点下创建临时有序队列任务节点;
在一个Zookeeper集群实现分布式锁服务时,Rms-Snoopy组件下的locker是Zookeeper的一个持久节点,node_1、node_2、node_3是locker这个持久节点下面的临时顺序节点。其它系统或客户端可通过client_1、client_2、client_n表示。
步骤230,监听到新节点的增加时,查询缓存中所述持久节点下所有临时有序队列任务节点中编号最大的节点;
通过注册watch event(监听事件)监控并进入等待线程,直到子节点变更新节点增加时通知监听事件,此时通过对缓存中持久节点下的临时有序队列任务节点node_n中编号n最大的节点。
判断规则可以为node节点后的数字越大,则其临时顺序节点编号越小,也可以为node节点后数字越大,则其临时有序队列任务节点编号越大,本发明示例性实施例的实施场景中中,node_3相较于node_1和node_2而言,其编号最大。
步骤240,获取所述分布式系统下所有临时有序队列任务节点;
步骤250,比较缓存和所述分布式系统下所有临时有序队列任务节点,得到新增节点;
本步骤中查询得出具体的新增节点。
步骤260,将新增节点存入缓存中;
步骤270,获取对应的新增节点数据;
步骤280,通过调用分布式系统的异步锁服务获取异步任务的调度权,为所述新增节点配置异步锁。
服务器端或用户端Client调用getChildren(xxx)(获取子节点)方法来获取某一节点xxx节点下(通常为系统的根目录)创建的所有子节点,取所有子节点的最小值MIN或最大值MAX。
判断MIN值或最大值MAX是否和新创建的临时节点序号相等,当MIN值或最大值MAX与新创建的临时节点序号相等时,表示此时所述临时系统节点获得锁,可在Rms-Snoopy组件中处理业务。
当业务处理完毕时可释放锁,删除其创建的临时节点。
当MIN值或最大值MAX与新创建的临时节点序号不相等时,注册watch event监控并进入等待线程,直到下次子节点变更通知进程(WatchedEvent event)的时候,被唤醒,再以竞争者身份进行子节点的获取,判断是否获取锁。
同时在这个节点上注册上子节点变更通知的Watcher。
锁获取过程:a.Client获取到所有子节点path(路径),判断当创建的节点是所有子节点中序号最小或最大时,则创建的独立系统节点从分布式锁服务的锁工场获取了锁。
锁获取失败:服务器端或用户端Client发现自己并非是所有子节点中最小或最大,说明其还没有获取到锁,此时开始等待,等待时间为直到下次子节点变更通知process(WatchedEventevent)的时候,所述独立系统节点被唤醒,再以竞争者身份进行子节点的获取,重新判断是否获取锁,即步骤250和步骤260。
本发明的方法,通过对缓存和分布式系统中已创建的临时节点的比较得出新增节点进而判断其是否能够配置锁,进一步更好地管理了异步化处理的系统调用服务。
本发明示例性实施例还包括对异步任务的删除以达到释放锁的目的,如图3所示,这一过程可包括如下步骤:
当需要删除所述异步任务时,所述方法包括:
步骤310,删除所述异步任务的节点;
删除异步任务队列中的节点node_3。
步骤320,监听到删除节点的操作时,获取缓存中所述持久节点下的所有临时有序队列任务节点;
步骤330,检测所述异步任务节点是否存在于所述分布式系统;
步骤340,若不存在,则在缓存中删除所述异步任务节点的记录;步骤350,若存在,结束流程。
当删除异步任务队列中的节点时,需要确认是否同步删除了持久节点下创建的临时有序队列任务节点,本步骤中首先获取持久节点下的所有临时有序队列任务节点,然后检测持久节点下的所有临时有序队列任务节点中是否删除了确认要删除的异步任务节点node_3,当不存在时,则确认要删除的异步任务节点node_3已于持久节点下删除,此时可于缓存中删除其对应的记录,当存在时则结束流程。
本发明的方法,对异步任务的删除时在保存的日志中检测对应的节点是否存储于zoopkeeper集群,使得缓存的节点及其日志记录与zoopkeeper集群中的节点保持一致。
本发明示例性实施例,所述将所述若干风控子请求发送至分布式系统的异步任务队列,包括:
为拆分的各风控子请求生成对应的处理标识;
所述处理标识可以通过字段添加的方式添加到已拆分的各风控子请求中,例如在各风控子请求中添加“-suc”的处理标识时,表示该风控子请求已处理成功,当在风控子请求中添加“-fail”的处理标识时,表示该风控子请求处理失败。
将各所述风控子请求的处理标识发送至分布式系统的异步任务队列;
将各风控子请求的处理标识发送至异步任务队列,在该异步任务队列中可查看各风控子请求的处理标识。
通过所述异步任务队列的每一异步任务为对应的所述风控子请求释放锁。
结合所述处理标识,异步任务队列中的每一异步任务根据处理标识的具体内容决定是否为对应的风控子请求释放锁服务。
本发明的方法,通过为风控子请求添加处理标识的方式,在对后续的释放锁操作中根据处理标识决定是否执行释放操作,使得锁释放操作的执行更准确,避免了执行错误的情形。
在本发明示例性实施例的一种实施场景中,如图4所示,为本发明的一种全面的实施方式,结合图示,Rms-Snoopy组件中包括分别于RMS以及SNOOPY的步骤或模块,其具体的实施过程包括:
于RMS中进行的步骤:
创建异步任务工厂。
于SNOOPY中进行的步骤;
接入UM检验,UM为一种通过的接入子系统较多的验证平台;UM是一款通用系统,基于同一个平台下几乎所有的系统或平台或用户均可通过接入UM的方式连接至核心系统。通过UM强制接入校验,一方面保证了接入ZK-Snoopy的所有项目均为预设的项目,另一方面也保证了所有系统之间的安全性。由于UM账号与接入的各系统之间的一一对应的特性,所以不同系统之间不可能存在数据冲突,也不存在相互访问的问题,完成了数据隔离;
初始化ZK客户端,判断是否配置包路径,当不需要配置时,直接结束,即用户端不使用分布式队列服务器,当需要配置时,于SNOOPY中扫描指定包路径下所有服务类,判断服务类是否实现回调接口(是否使用回调函数)并在确定需要回调接口时对对应的持久节点进行初始化并进行监听。
根据持久化队列节点反射校验,删除多余的持久化队列节点,初始化临时节点到缓存,结束本阶段的流程。
于RMS中进行的步骤:
开始异步任务。
于SNOOPY中进行的步骤:
入参检验,在对应持久节点下创建异步任务,包括创建临时有序节点,当于RMS中的客户端监听事件监听到节点的增加时,查询对应持久节点下缓存中最大的节点编号,获取zookeeper对应持久节点下所有临时节点,比较得出新增的临时节点,将得到的新增临时节点存储对应持久节点下的缓存,获取新增节点数据,从锁工厂中为该新增节点竞争分布式异步锁,当未获取锁时,流程结束,当获取锁时,根据节点信息反射调用相应实现并结束流程。
于RMS中进行的步骤:
结束异步任务。
于SNOOPY中进行的步骤:
对结束的任务入参校验,并删除任务节点,于RMS中注册监听事件监听到节点删除事件时,获取对应的持久化节点中所有缓存节点,检测缓存节点是否还存在于zookeeper集群,当还存在时结束流程,当不存在时删除缓存节点并结束流程。
图5为本发明实施例提供的一种基于ZooKeeper的分布式异步队列实现装置的结构示意图,该装置可由软件和/或硬件实现,一般地集成于ZK服务器集群中,可通过基于ZooKeeper的分布式异步队列实现方法来实现。如图所示,本实施例可以以上述实施例为基础,提供了一种基于ZooKeeper的分布式异步队列实现装置,其主要包括了拆分模块510、异步队列模块520以及分配模块530。
其中的拆分模块510,用于当接收风控请求时,对所述风控请求进行拆分,形成若干风控子请求;
其中的异步队列模块520,用于将所述若干风控子请求发送至分布式系统的异步任务队列;
其中的分配模块530,用于根据所述异步任务队列将所述若干风控子请求分配至不同的风控服务器。
本发明示例性实施例中,所述装置还包括:
回调模块,用于当其中的一个所述风控服务器接收到风控子请求时,根据所述分布式系统的回调机制,获取所述若干风控子请求中的其它风控子请求;
将所述若干风控子请求中的其它风控子请求发送至不同的其它风控服务器。
本发明示例性实施例中,所述装置还包括:
队列创建模块,用于创建异步任务队列:
节点创建模块,用于在所述分布式系统的持久节点下创建临时有序队列任务节点;
监听模块,用于监听到新节点的增加时,查询缓存中所述持久节点下所有临时有序队列任务节点中编号最大的节点;
第一获取模块,用于获取所述分布式系统下所有临时有序队列任务节点;
比较模块,用于比较缓存和所述分布式系统下所有临时有序队列任务节点,得到新增节点;
保存模块,用于将新增节点存入缓存中;
第二获取模块,用于获取对应的新增节点数据;
配置锁模块,用于通过调用分布式系统的异步锁服务获取异步任务的调度权,为所述新增节点配置异步锁。
上述实施例中提供的基于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上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器21还可以既包括计算机设备20的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备20的操作系统和各类应用软件,例如实施例一的RNNs神经网络的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备20的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如实现深度学习模型的各层结构,以实现上述实施例的基于ZooKeeper的分布式异步队列实现方法。
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储金融小程序,被处理器执行时实现上述实施例的基于ZooKeeper的分布式异步队列实现方法。
另一个涉及计算机程序产品的实施例包括对应于所阐明的系统和/或产品中至少一个的装置中每个装置的计算机可执行指令。这些指令可以被再分成子例程和/或被存储在一个或者多个可能静态或者动态链接的文件中。
计算机程序的载体可以是能够运载程序的任何实体或者装置。例如,载体可以包含存储介质,诸如(ROM例如CDROM或者半导体ROM)或者磁记录介质(例如软盘或者硬盘)。进一步地,载体可以是可传输的载体,诸如电学或者光学信号,其可以经由电缆或者光缆,或者通过无线电或者其它手段传递。当程序具体化为这样的信号时,载体可以由这样的线缆或者装置组成。可替换地,载体可以是其中嵌入有程序的集成电路,所述集成电路适合于执行相关方法,或者供相关方法的执行所用。
应该留意的是,上文提到的实施例是举例说明本发明,而不是限制本发明,并且本领域的技术人员将能够设计许多可替换的实施例,而不会偏离所附权利要求的范围。在权利要求中,任何放置在圆括号之间的参考符号不应被解读为是对权利要求的限制。动词“包括”和其词形变化的使用不排除除了在权利要求中记载的那些之外的元素或者步骤的存在。在元素之前的冠词“一”或者“一个”不排除复数个这样的元素的存在。本发明可以通过包括几个明显不同的组件的硬件,以及通过适当编程的计算机而实现。在列举几种装置的装置权利要求中,这些装置中的几种可以通过硬件的同一项来体现。在相互不同的从属权利要求中陈述某些措施的单纯事实并不表明这些措施的组合不能被用来获益。
如果期望的话,这里所讨论的不同功能可以以不同顺序执行和/或彼此同时执行。此外,如果期望的话,以上所描述的一个或多个功能可以是可选的或者可以进行组合。
如果期望的话,上文所讨论的各步骤并不限于各实施例中的执行顺序,不同步骤可以以不同顺序执行和/或彼此同时执行。此外,在其他实施例中,以上所描述的一个或多个步骤可以是可选的或者可以进行组合。
虽然本发明的各个方面在独立权利要求中给出,但是本发明的其它方面包括来自所描述实施方式的特征和/或具有独立权利要求的特征的从属权利要求的组合,而并非仅是权利要求中所明确给出的组合。
这里所要注意的是,虽然以上描述了本发明的示例实施方式,但是这些描述并不应当以限制的含义进行理解。相反,可以进行若干种变化和修改而并不背离如所附权利要求中所限定的本发明的范围。
本领域普通技术人员应该明白,本发明实施例的装置中的各模块可以用通用的计算装置来实现,各模块可以集中在单个计算装置或者计算装置组成的网络组中,本发明实施例中的装置对应于前述实施例中的方法,其可以通过可执行的程序代码实现,也可以通过集成电路组合的方式来实现,因此本发明并不局限于特定的硬件或者软件及其结合。
本领域普通技术人员应该明白,本发明实施例的装置中的各模块可以用通用的移动终端来实现,各模块可以集中在单个移动终端或者移动终端组成的装置组合中,本发明实施例中的装置对应于前述实施例中的方法,其可以通过编辑可执行的程序代码实现,也可以通过集成电路组合的方式来实现,因此本发明并不局限于特定的硬件或者软件及其结合。
注意,上述仅为本发明的示例性实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种基于ZooKeeper的分布式异步队列实现方法,其特征在于,所述方法包括:
当接收风控请求时,对所述风控请求进行拆分,形成若干风控子请求;
将所述若干风控子请求发送至分布式系统的异步任务队列;
根据所述异步任务队列将所述若干风控子请求分配至不同的风控服务器。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当其中的一个所述风控服务器接收到风控子请求时,根据所述分布式系统的回调机制,获取所述若干风控子请求中的其它风控子请求;
将所述若干风控子请求中的其它风控子请求发送至不同的其它风控服务器。
3.根据权利要求1所述的方法,其特征在于,当接收风控请求之前,所述方法包括:
创建异步任务队列:
在所述分布式系统的持久节点下创建临时有序队列任务节点;
监听到新节点的增加时,查询缓存中所述持久节点下所有临时有序队列任务节点中编号最大的节点;
获取所述分布式系统下所有临时有序队列任务节点;
比较缓存和所述分布式系统下所有临时有序队列任务节点,得到新增节点;
将新增节点存入缓存中;
获取对应的新增节点数据;
通过调用分布式系统的异步锁服务获取异步任务的调度权,为所述新增节点配置异步锁。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当需要删除所述异步任务时,所述方法包括:
删除所述异步任务的节点;
监听到删除节点的操作时,获取缓存中所述持久节点下的所有临时有序队列任务节点;
检测所述异步任务节点是否存在于所述分布式系统,若不存在,则在缓存中删除所述异步任务节点的记录;若存在,结束流程。
5.根据权利要求1所述的方法,其特征在于,所述将所述若干风控子请求发送至分布式系统的异步任务队列,包括:
为拆分的各风控子请求生成对应的处理标识;
将各所述风控子请求的处理标识发送至分布式系统的异步任务队列;
通过所述异步任务队列的每一异步任务为对应的所述风控子请求释放锁。
6.一种基于ZooKeeper的分布式异步队列实现装置,其特征在于,所述装置包括:
拆分模块,用于当接收风控请求时,对所述风控请求进行拆分,形成若干风控子请求;
异步队列模块,用于将所述若干风控子请求发送至分布式系统的异步任务队列;
分配模块,用于根据所述异步任务队列将所述若干风控子请求分配至不同的风控服务器。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
回调模块,用于当其中的一个所述风控服务器接收到风控子请求时,根据所述分布式系统的回调机制,获取所述若干风控子请求中的其它风控子请求;
将所述若干风控子请求中的其它风控子请求发送至不同的其它风控服务器。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
队列创建模块,用于创建异步任务队列:
节点创建模块,用于在所述分布式系统的持久节点下创建临时有序队列任务节点;
监听模块,用于监听到新节点的增加时,查询缓存中所述持久节点下所有临时有序队列任务节点中编号最大的节点;
第一获取模块,用于获取所述分布式系统下所有临时有序队列任务节点;
比较模块,用于比较缓存和所述分布式系统下所有临时有序队列任务节点,得到新增节点;
保存模块,用于将新增节点存入缓存中;
第二获取模块,用于获取对应的新增节点数据;
配置锁模块,用于通过调用分布式系统的异步锁服务获取异步任务的调度权,为所述新增节点配置异步锁。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910752332.8A CN110673933A (zh) | 2019-08-15 | 2019-08-15 | 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910752332.8A CN110673933A (zh) | 2019-08-15 | 2019-08-15 | 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110673933A true CN110673933A (zh) | 2020-01-10 |
Family
ID=69075332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910752332.8A Pending CN110673933A (zh) | 2019-08-15 | 2019-08-15 | 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110673933A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111752970A (zh) * | 2020-06-26 | 2020-10-09 | 武汉众邦银行股份有限公司 | 一种基于缓存的分布式查询服务响应方法及存储介质 |
CN111858047A (zh) * | 2020-07-14 | 2020-10-30 | 中国工商银行股份有限公司 | 文件交互方法、装置及系统 |
CN112527489A (zh) * | 2020-12-22 | 2021-03-19 | 税友软件集团股份有限公司 | 一种任务调度方法、装置、设备及计算机可读存储介质 |
CN113268317A (zh) * | 2020-02-17 | 2021-08-17 | 北京搜狗科技发展有限公司 | 一种任务处理方法、装置及电子设备 |
CN115051981A (zh) * | 2022-05-12 | 2022-09-13 | 中国农业银行股份有限公司 | 一种基于Zookeeper的异步下载方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106330987A (zh) * | 2015-06-15 | 2017-01-11 | 交通银行股份有限公司 | 动态负荷均衡方法 |
CN106993019A (zh) * | 2016-11-29 | 2017-07-28 | 上海壹账通金融科技有限公司 | 分布式任务调度方法和系统 |
CN108108239A (zh) * | 2017-12-29 | 2018-06-01 | 咪咕文化科技有限公司 | 一种业务功能的提供方法、装置及计算机可读存储介质 |
CN108958920A (zh) * | 2018-07-13 | 2018-12-07 | 众安在线财产保险股份有限公司 | 一种分布式任务调度方法及系统 |
-
2019
- 2019-08-15 CN CN201910752332.8A patent/CN110673933A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106330987A (zh) * | 2015-06-15 | 2017-01-11 | 交通银行股份有限公司 | 动态负荷均衡方法 |
CN106993019A (zh) * | 2016-11-29 | 2017-07-28 | 上海壹账通金融科技有限公司 | 分布式任务调度方法和系统 |
CN108108239A (zh) * | 2017-12-29 | 2018-06-01 | 咪咕文化科技有限公司 | 一种业务功能的提供方法、装置及计算机可读存储介质 |
CN108958920A (zh) * | 2018-07-13 | 2018-12-07 | 众安在线财产保险股份有限公司 | 一种分布式任务调度方法及系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268317A (zh) * | 2020-02-17 | 2021-08-17 | 北京搜狗科技发展有限公司 | 一种任务处理方法、装置及电子设备 |
CN113268317B (zh) * | 2020-02-17 | 2023-10-31 | 北京搜狗科技发展有限公司 | 一种任务处理方法、装置及电子设备 |
CN111752970A (zh) * | 2020-06-26 | 2020-10-09 | 武汉众邦银行股份有限公司 | 一种基于缓存的分布式查询服务响应方法及存储介质 |
CN111752970B (zh) * | 2020-06-26 | 2024-01-30 | 武汉众邦银行股份有限公司 | 一种基于缓存的分布式查询服务响应方法及存储介质 |
CN111858047A (zh) * | 2020-07-14 | 2020-10-30 | 中国工商银行股份有限公司 | 文件交互方法、装置及系统 |
CN111858047B (zh) * | 2020-07-14 | 2024-03-22 | 中国工商银行股份有限公司 | 文件交互方法、装置及系统 |
CN112527489A (zh) * | 2020-12-22 | 2021-03-19 | 税友软件集团股份有限公司 | 一种任务调度方法、装置、设备及计算机可读存储介质 |
CN115051981A (zh) * | 2022-05-12 | 2022-09-13 | 中国农业银行股份有限公司 | 一种基于Zookeeper的异步下载方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110673933A (zh) | 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质 | |
CN108614726B (zh) | 虚拟机创建方法及装置 | |
CN108897628B (zh) | 一种分布式锁的实现方法、装置及电子设备 | |
CN109800083B (zh) | 一种微服务协同调用的方法、装置、系统及存储介质 | |
CN110661842B (zh) | 一种资源的调度管理方法、电子设备和存储介质 | |
CN110677453A (zh) | 基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质 | |
CN112650576A (zh) | 资源调度方法、装置、设备、存储介质及计算机程序产品 | |
CN111126948A (zh) | 用于审批流程的处理方法和装置 | |
CN111258726A (zh) | 任务调度方法和装置 | |
CN115017169A (zh) | 一种多云管理平台的管理方法及系统 | |
CN109828830B (zh) | 用于管理容器的方法和装置 | |
CN112598529B (zh) | 数据处理方法及装置、计算机可读存储介质、电子设备 | |
US11645109B2 (en) | Managing failures in edge computing environments | |
CN113010238A (zh) | 一种微应用调用接口的权限确定方法、装置和系统 | |
CN113282589A (zh) | 一种数据获取方法和装置 | |
CN117076096A (zh) | 任务流程的执行方法、装置、计算机可读介质及电子设备 | |
CN116389385A (zh) | 一种系统资源处理方法、装置、存储介质及设备 | |
CN114070889B (zh) | 配置方法、流量转发方法、设备、存储介质及程序产品 | |
CN115550413A (zh) | 一种数据调用方法、装置、服务网关及存储介质 | |
CN116151631A (zh) | 一种业务决策处理系统、一种业务决策处理方法和装置 | |
CN115309558A (zh) | 一种资源调度管理系统、方法、计算机设备及存储介质 | |
CN115037757A (zh) | 一种多集群服务管理系统 | |
CN115150811A (zh) | 多租户运维管理方法、装置及系统 | |
CN112737838A (zh) | 云资源的申请与云数据的访问方法、装置及电子设备 | |
CN113760487A (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 |