CN113391927A - 一种业务事件的处理方法、装置、系统及存储介质 - Google Patents
一种业务事件的处理方法、装置、系统及存储介质 Download PDFInfo
- Publication number
- CN113391927A CN113391927A CN202110771580.4A CN202110771580A CN113391927A CN 113391927 A CN113391927 A CN 113391927A CN 202110771580 A CN202110771580 A CN 202110771580A CN 113391927 A CN113391927 A CN 113391927A
- Authority
- CN
- China
- Prior art keywords
- event
- current
- service
- queue
- processing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000003860 storage Methods 0.000 title claims abstract description 47
- 238000009826 distribution Methods 0.000 claims abstract description 14
- 230000004044 response Effects 0.000 claims description 77
- 238000004590 computer program Methods 0.000 claims description 5
- 239000003999 initiator Substances 0.000 claims description 4
- 238000003672 processing method Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 22
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000012795 verification Methods 0.000 description 5
- 230000001276 controlling effect Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Telephonic Communication Services (AREA)
Abstract
本申请实施例公开了一种业务事件的处理方法、装置、系统及存储介质。其中,该方法包括:通过当前队列控制器根据当前事件队列的使用率和当前事件队列对业务事件的存储速率,确定当前事件队列是否能够接收新的业务事件;若能够,则将新的业务事件存储到当前事件队列中;通过当前线程池控制器对当前事件处理线程进行调整,并根据该调整结果为当前事件队列中的业务事件分配当前事件处理线程;通过所分配的当前事件处理线程对业务事件进行处理,得到业务请求结果。本申请实施例提供的技术方案,能够实现对系统资源的合理分配,从而使得系统资源使用达到最优化。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种业务事件的处理方法、装置、系统及存储介质。
背景技术
多阶段事件驱动架构模型(Staged Event Driven Architecture,简称SEDA)的核心思想为将应用程序的业务事件从逻辑上划分为一系列相互关联的阶段,每个阶段是一个独立的执行模块,具有独立的逻辑处理能力。多个阶段之间由事件队列相连接进行通信。
但是,传统的SEDA架构主要在资源控制机制方面存在一些缺点,如:在业务事件高并发场景下,阶段内以及各阶段之间的动态资源的缺乏协调机制,且协调动态资源的各种资源控制器参数的设置比较主观。因此,亟需设计一种业务事件的处理方法,用于解决SEDA架构在高并发场景下的资源管理及优化问题。
发明内容
本申请实施例提供了一种业务事件的处理方法、装置、系统及存储介质,能够实现对系统资源的合理分配,从而使得系统资源使用达到最优化。
第一方面,本申请实施例提供了一种业务事件的处理方法,该方法包括:
通过当前队列控制器根据当前事件队列的使用率和所述当前事件队列对业务事件的存储速率,确定所述当前事件队列是否能够接收新的业务事件;
若能够,则将所述新的业务事件存储到所述当前事件队列中;
通过所述当前线程池控制器对当前事件处理线程进行调整,并根据该调整结果为所述当前事件队列中的业务事件分配当前事件处理线程;
通过所分配的当前事件处理线程对业务事件进行处理,得到业务请求结果;其中,所述当前队列控制器、所述当前事件队列、所述当前线程池控制器和所述当前事件处理线程均属于当前业务处理模块。
第二方面,本申请实施例提供了一种业务事件的处理装置,该装置包括:
确定模块,用于通过当前队列控制器根据当前事件队列的使用率和所述当前事件队列对业务事件的存储速率,确定所述当前事件队列是否能够接收新的业务事件;
存储模块,用于若能够,则将所述新的业务事件存储到所述当前事件队列中;
分配模块,用于通过所述当前线程池控制器对当前事件处理线程进行调整,并根据该调整结果为所述当前事件队列中的业务事件分配当前事件处理线程;
处理模块,用于通过所分配的当前事件处理线程对业务事件进行处理,得到业务请求结果;其中,所述当前队列控制器、所述当前事件队列、所述当前线程池控制器和所述当前事件处理线程均属于当前业务处理模块。
第三方面,本申请实施例提供了一种业务事件的处理系统,该系统包括:
至少三个事件处理模块、服务接入控制器和服务接出控制器;其中,所述至少三个事件处理模块之间相连接,每个事件处理模块中包括事件队列、事件处理线程、路由器、应答队列、应答线程、队列控制器、线程池控制器和超时控制器;
所述业务事件的处理系统用于执行本申请任意实施例所述的业务事件的处理方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现本申请任意实施例所述的业务事件的处理方法。
本申请实施例提供了一种业务事件的处理方法、装置、系统及存储介质,通过当前队列控制器根据当前事件队列的使用率和当前事件队列对业务事件的存储速率,确定当前事件队列是否能够接收新的业务事件;若能够,则将新的业务事件存储到当前事件队列中;通过当前线程池控制器对当前事件处理线程进行调整,并根据该调整结果为当前事件队列中的业务事件分配当前事件处理线程;通过所分配的当前事件处理线程对业务事件进行处理,得到业务请求结果。本申请能够实现对系统资源的合理分配,从而使得系统资源使用达到最优化。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1A为本申请实施例提供的一种业务事件的处理方法的第一结构示意图;
图1B为本申请实施例提供的一种业务事件的处理方法的第一流程示意图;
图2为本申请实施例提供的一种业务事件的处理方法的第二流程示意图;
图3为本申请实施例提供的一种业务事件的处理方法的第三流程示意图;
图4为本申请实施例提供的一种业务事件的处理装置的第二结构示意图;
图5为本申请实施例提供的一种业务事件的处理系统的第三结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
图1A为本申请实施例提供的一种业务事件的处理方法的第一结构示意图;
图1B为本申请实施例提供的一种业务事件的处理方法的第一流程示意图。本实施例可适用于基于SEDA架构在高并发场景下对业务事件进行请求的情况。本实施例提供的一种业务事件的处理方法可以由本申请实施例提供的业务事件的处理装置来执行,该装置可以通过软件和/或硬件的方式实现,并集成在执行本方法的电子设备中,并集成在执行本方法的业务事件的处理系统中。
参见图1A,本申请中的业务事件处理系统包括至少三个业务处理模块,图1A中仅示出了两个业务处理模块,每个业务处理模块包括了路由器、事件队列、事件处理线程。业务事件的处理过程具体为:若以业务处理模块1为当前业务处理模块,则业务处理模块2为下一业务处理模块。以一个业务事件为例,业务请求方向业务事件处理系统发送业务事件,通过当前业务处理模块中的当前路由器将该业务事件存储至当前事件队列中,再通过当前事件处理线程从当前事件队列中获取到该业务事件,并对该业务事件进行处理。然后,通过下一业务处理模块中的下一路由器将该业务事件存储至下一事件队列中,由下一业务处理模块对该业务事件继续进行处理,直至通过若干个业务处理模块对该业务事件处理完成。
需要说明的是,由于本申请中的业务事件处理系统包括至少三个业务处理模块,所以在本申请中当前业务处理模块中的“当前”二字仅用于与下一业务处理模块进行区分,是用于表明当前时刻对业务事件进行处理的是哪一个业务处理模块。同理,当前业务处理模块中的当前队列控制器、当前事件队列、当前事件处理线程、当前线程池控制器和当前路由器等也仅用于与下一业务处理模块中的下一队列控制器、下一事件队列、下一事件处理线程、下一前线程池控制器和下一路由器等进行区分。因而可知,当前队列控制器和下一队列控制器在逻辑功能是相同的,同理,其他组件或者控制器也相同。
需要说明的是,不同业务处理模块对业务事件执行的任务不同,也就是,不同业务处理模块所执行功能的不同。在SEDA架构下,一个业务事件,是按顺序经过多个业务处理模块来进行处理的,每个业务处理模块负责对该业务事件进行不同的加工处理,各个业务处理模块之间分工协作,构成了一条对业务事件进行处理的“流水线”。
参见图1B,本实施例的方法包括但不限于如下步骤:
S110、通过当前队列控制器根据当前事件队列的使用率和当前事件队列对业务事件的存储速率,确定当前事件队列是否能够接收新的业务事件。
其中,队列控制器是用于根据事件队列的当前状况实时调控事件队列。事件队列是用于对大量的业务事件进行缓存,是作为请求处理的入口。当前队列控制器和当前事件队列均属于当前业务处理模块。
在本申请实施例中,当前队列控制器中配置有一套控制算法,该控制算法可以根据当前事件队列的实时状况,判断当前事件队列是否能够接收新的业务事件,实现动态地调节事件队列中的业务事件的数量。
具体的,当前队列控制器统计当前事件队列中的业务事件的数量,计算出当前事件队列的使用率,并计算当前事件队列对业务事件的存储速率。若该使用率超过预设使用率和/或该存储速率超过预设存储速率,表明业务事件处理系统处于繁忙状态,不能够对业务事件进行及时处理,则当前队列控制器控制当前事件队列,以使当前事件队列暂停接收新的业务事件。若该使用率低于预设使用率和/或该存储速率低于预设存储速率,表明业务事件处理系统处于轻闲状态,则当前事件队列可以继续接收新的业务事件。
S120、若能够,则将新的业务事件存储到当前事件队列中。
在本申请实施例中,经上述步骤,若通过当前队列控制器确定当前事件队列能够接收新的业务事件,则将新的业务事件存储到当前事件队列中。可选的,可以在当前业务处理模块中配置多个事件队列,用于存储不同类型的业务事件
具体的存储过程可以是:先根据每一个业务事件的标识号,确定出每一个业务事件的事件属性;再将各个业务事件存储到与其事件属性相对应的事件队列中。
具体的存储过程还可以是:先根据每一个业务事件的标识号,确定出每一个业务事件的优先级级别;再将各个业务事件存储到与其优先级级别相对应的事件队列中。
本申请将不同类型的业务事件存储至不同的事件队列中,这样设置的好处在于,可以对不同类型的业务事件进行交易隔离,避免不同类型的业务事件之间的相互影响。
S130、通过当前线程池控制器对当前事件处理线程进行调整,并根据该调整结果为当前事件队列中的业务事件分配当前事件处理线程。
其中,线程池控制器是用于根据事件处理线程的当前状况实时调控事件处理线程。事件处理线程是用于从事件队列中获取业务事件,并给业务事件进行处理。当前线程池控制器和当前事件处理线程均属于当前业务处理模块。
在本申请中,并不规定每个业务处理模块中事件处理线程的具体数量,而使用线程池控制器对当前事件处理线程进行调整。在本申请实施例中,通过当前线程池控制器中配置有一套控制算法,该控制算法可以根据当前事件处理线程和当前事件队列的实时状况,判断当前事件处理线程的数量是否能够对当前事件队列中所存储的业务事件及时处理,实现动态地调节事件处理线程的分配与回收。
具体的,根据当前事件处理线程的数量和使用率,以及当前事件队列中所存储的业务事件的数量,判断是否需要增加新的事件处理线程/回收空闲的事件处理线程,从而使得事件处理线程的资源使用达到最优化。
可选的,线程池控制器在创建事件处理线程时,可以设定一个初始数量值、最小数量值及最大数量值。因而,根据当前事件处理线程和当前事件队列的实时状况,可以在最小数量值和最大数量值之间对事件处理线程的数量进行调整。这样设置的好处在于,既可以避免分配过多的事件处理线程,又能保证所分配的事件处理线程的数量能够满足性能需求。
S140、通过所分配的当前事件处理线程对业务事件进行处理,得到业务请求结果。
在本申请实施例中,经上述步骤,通过当前线程池控制器为当前事件队列中的业务事件分配当前事件处理线程之后,再通过当前事件处理线程扫描当前事件队列,当扫描到业务事件之后,再从当前事件队列中获取业务事件,并对所获取到的业务事件进行处理。其中,对业务事件的处理过程可以是:根据业务处理模块所执行功能的不同,事件处理线程调用不同的事件处理器对业务事件进行处理,得到业务请求结果。示例性的,若当前业务处理模块所执行的功能是对业务事件进行权限验证,则事件处理线程调用处理权限验证的处理器对该业务事件进行权限验证;若当前业务处理模块所执行的功能是对业务事件进行信息配置,则事件处理线程调用处理信息配置的处理器对该业务事件进行信息配置。
可选的,若当前业务处理模块为执行业务事件接入的模块,则通过服务接入控制器控制服务接入模块获取业务事件的数量。具体的,服务接入控制器根据业务事件处理系统同时接入业务事件的最大请求数量,和/或当前业务处理模块同时接入业务事件的最大请求数量,确定当前业务处理模块是否能够继续接收新的业务事件。设置服务接入控制器的好处在于,可以不受上一业务处理模块的影响,可以保障当前业务处理模块对业务事件的处理能力。
可选的,若当前业务处理模块为执行业务事件接出的模块,则通过服务接出控制器控制服务接出模块接出业务事件的数量。具体的,服务接入控制器根据业务事件处理系统同时接出业务事件的最大请求数量,和/或当前业务处理模块同时接出业务事件的最大请求数量,确定是否继续将业务事件接出当前业务处理模块。
可选的,若当前业务处理模块为执行业务事件接出的模块,为该模块设置独立的接出处理池,并设置适当数量的处理线程。通过该接出处理池可以实现对需要接出的业务事件进行隔离保护的作用,避免因系统故障而造成丧失将业务事件接出的能力。
可选的,还可以设置全局资源控制器,用于对各个业务事件处理系统中的事件处理线程的数量的上下限进行设置。全局资源控制器会根据各个业务处理模块的负载及资源消耗反馈情况,进行事件处理线程的分配与回收。具体的,全局资源控制器可根据每个业务处理模块中事件处理线程的使用率、事件队列的使用率、事件队列对业务事件的存储速率,以及事件处理器对业务事件的处理速率等指标,动态调整每个业务处理模块的事件处理线程的数量上下限。这样设置的好处在于,可以在事件处理线程数量有限的情况下,实现每个业务处理模块的资源分配最优化。
本实施例提供的技术方案,通过当前队列控制器根据当前事件队列的使用率和当前事件队列对业务事件的存储速率,确定当前事件队列是否能够接收新的业务事件;若能够,则将新的业务事件存储到当前事件队列中;通过当前线程池控制器对当前事件处理线程进行调整,并根据该调整结果为当前事件队列中的业务事件分配当前事件处理线程;通过所分配的当前事件处理线程对业务事件进行处理,得到业务请求结果。本申请通过队列控制器实现动态地调节事件队列中的业务事件的数量,通过线程池控制器实现动态地调节事件处理线程的分配与回收。本申请方案在高并发场景下对业务请求方所发送的业务事件进行处理时,能够实现对系统资源的合理分配,从而使得系统资源使用达到最优化。
实施例二
图2为本申请实施例提供的一种业务事件的处理方法的第二流程示意图。本申请实施例是在上述实施例的基础上进行优化,具体优化为:增加对事件处理线程的调整过程和通过路由器对业务事件的处理过程进行详细的解释说明。
参见图2,本实施例的方法包括但不限于如下步骤:
S210、通过当前队列控制器根据当前事件队列的使用率和当前事件队列对业务事件的存储速率,确定当前事件队列是否能够接收新的业务事件。
S220、若能够,则将新的业务事件存储到当前事件队列中。
S230、通过当前线程池控制器根据当前事件处理线程的使用率、当前事件队列中业务事件的数量,对当前事件处理线程的数量进行调整。
在本申请实施例中,通过当前线程池控制器根据当前事件处理线程的使用率、当前事件队列中业务事件的数量对当前事件处理线程的数量进行调整,属于当前线程池控制器主动调整事件处理线程数量的方法。
具体的,当前线程池控制器统计当前事件处理线程的数量(即已分配的事件处理线程的数量)和当前事件处理线程的使用状态(使用中和未使用),从而计算当前事件处理线程的使用率。并且,当前线程池控制器访问当前事件队列,从而统计当前事件队列中业务事件的数量值。若该使用率超过预设使用率和/或该业务事件的数量值超过预设数量值,表明业务事件处理系统处于繁忙状态,不能够对业务事件进行及时处理,则当前线程池控制器分配新的事件处理线程。若该使用率低于预设使用率和/或该业务事件的数量值低于预设数量值,表明业务事件处理系统处于轻闲状态,则当前线程池控制器回收空闲的事件处理线程。
可选的,对事件处理线程的调整过程还可以是:计算出已分配的事件处理线程的数量占业务处理模块中所预先配置的事件处理线程的总数的比例(即事件处理线程的分配率),若该分配率超过预设分配率,表明业务事件处理系统处于繁忙状态,不能够对业务事件进行及时处理,则当前线程池控制器分配新的事件处理线程。若该分配率低于预设分配率,表明业务事件处理系统处于轻闲状态,则当前线程池控制器回收未使用的事件处理线程。
当前线程池控制器被动调整事件处理线程数量的方法为:通过当前队列控制器统计业务事件在当前事件队列中的停留时间,若停留时间超过预设时间,则向当前线程池控制器发送通知消息,以使当前线程池控制器增加当前事件处理线程的数量。
S240、根据该调整结果为当前事件队列中的业务事件分配当前事件处理线程。
S250、通过所分配的当前事件处理线程对业务事件进行处理,得到业务请求结果。
S260、通过下一业务处理模块中的下一路由器,将业务请求结果作为业务事件发给下一业务处理模块中的下一事件队列,由下一业务处理模块进行处理。
在本申请实施例中,不同业务处理模块对业务事件执行的任务不同。将上述步骤,通过当前业务处理模块对业务事件进行处理之后,得到业务请求结果。再将该业务请求结果作为业务事件,发给下一业务处理模块,由下一业务处理模块对该业务事件继续进行处理。具体的,可以通过下一业务处理模块中的下一路由器将该业务事件投递至下一事件队列。
需要说明的是,与当前业务处理模块相同,下一业务处理模块中包括下一队列控制器、下一事件队列、下一事件处理线程、下一前线程池控制器和下一路由器。
本实施例提供的技术方案,通过当前队列控制器根据当前事件队列的使用率和当前事件队列对业务事件的存储速率,确定当前事件队列是否能够接收新的业务事件;若能够,则将新的业务事件存储到当前事件队列中;通过当前线程池控制器根据当前事件处理线程的使用率、当前事件队列中业务事件的数量,对当前事件处理线程的数量进行调整;根据该调整结果为当前事件队列中的业务事件分配当前事件处理线程;通过所分配的当前事件处理线程对业务事件进行处理,得到业务请求结果;通过下一业务处理模块中的下一路由器,将业务请求结果作为业务事件发给下一事件队列,由下一业务处理模块进行处理。本申请实施例通过当前线程池控制器主动和被动共同调整事件处理线程数量,可以实现动态地调节事件处理线程的分配与回收,实现对系统资源的合理分配。
实施例三
图3为本申请实施例提供的一种业务事件的处理方法的第三流程示意图。本申请实施例是在上述实施例的基础上进行优化,具体给出了对业务事件的应答过程进行详细的解释说明。
参考图3,本实施例的方法包括但不限于如下步骤:
S310、通过当前队列控制器根据当前应答队列的使用率和当前应答队列对业务事件的存储速率,确定当前应答队列是否能够接收新的业务事件。
其中,应答队列是用于对大量的业务事件进行缓存,是作为应答处理的入口。当前应答队列属于当前业务处理模块。
在本申请实施例中,当前队列控制器中配置有一套控制算法,该控制算法可以根据当前应答队列的实时状况,判断当前应答队列是否能够接收新的业务事件,实现动态地调节应答队列中的业务事件的数量。
本步骤中判断当前应答队列是否能够接收新的业务事件和上述实施例中判断当前事件队列是否能够接收新的业务事件的具体实施过程相似,在此不做介绍。
S320、若能够,则将新的业务事件存储到当前应答队列中。
本步骤中将新的业务事件存储到当前应答队列中和上述实施例中将新的业务事件存储到当前事件队列中的具体实施过程相似,在此不做介绍。
S330、通过当前线程池控制器对当前应答线程进行调整,并根据该调整结果为当前应答队列中的业务事件分配当前应答线程。
其中,应答线程是用于从应答队列中获取业务事件,并给业务事件进行处理。当前应答线程属于当前业务处理模块。
本步骤中通过当前线程池控制器分配当前应答线程和上述实施例中通过当前线程池控制器分配当前事件处理线程的具体实施过程相似,在此不做介绍。
S340、通过所分配的当前应答线程对业务事件进行处理,得到业务应答结果。
本步骤中通过当前应答线程对业务事件进行处理和上述实施例中通过当前事件处理线程对业务事件进行处理的具体实施过程相似,在此不做介绍。
S350、通过下一业务处理模块中的下一路由器,将业务应答结果作为业务事件发给下一应答队列,由下一业务处理模块进行处理。
本步骤中将业务应答结果发给下一业务处理模块和上述实施例中将业务请求结果发给下一业务处理模块的具体实施过程相似,在此不做介绍。
可选的,通过当前超时控制器记录业务事件从存储到当前事件队列中到得到业务应答结果之间的时间间隔;若该时间间隔大于预设时间,则向请求发起方返回系统繁忙通知报文;其中,当前超时控制器均属于当前业务处理模块。本申请设置当前超时控制器的好处在于,可以监控系统对业务事件的响应性能。
可选的,若该时间间隔大于预设时间,还可以并向队列控制器和/或线程池控制器发生响应超时通知消息,以使队列控制器根据该响应超时通知消息调节事件队列中的业务事件的数量,和/或线程池控制器根据该响应超时通知消息调节事件处理线程的分配与回收。通过队列控制器、线程池控制器和超时控制器相互协调共同实现对系统资源的合理分配,从而使得系统资源使用达到最优化。
本实施例提供的技术方案,通过当前队列控制器根据当前应答队列的使用率和当前应答队列对业务事件的存储速率,确定当前应答队列是否能够接收新的业务事件;若能够,则将新的业务事件存储到当前应答队列中;通过当前线程池控制器对当前应答线程进行调整,并根据该调整结果为当前应答队列中的业务事件分配当前应答线程;通过所分配的当前应答线程对业务事件进行处理,得到业务应答结果;通过下一业务处理模块中的下一路由器,将业务应答结果作为业务事件发给下一应答队列,由下一业务处理模块进行处理。本申请实施例对业务事件的应答过程进行了介绍,并通过设置超时控制器监控系统对业务事件的响应性能,同时通过队列控制器、线程池控制器和超时控制器相互协调共同实现对系统资源的合理分配,从而使得系统资源使用达到最优化。
实施例四
图4为本申请实施例提供的一种业务事件的处理装置的第二结构示意图,如图4所示,该装置400可以包括:
确定模块410,用于通过当前队列控制器根据当前事件队列的使用率和所述当前事件队列对业务事件的存储速率,确定所述当前事件队列是否能够接收新的业务事件。
存储模块420,用于若能够,则将所述新的业务事件存储到所述当前事件队列中。
分配模块430,用于通过所述当前线程池控制器对当前事件处理线程进行调整,并根据该调整结果为所述当前事件队列中的业务事件分配当前事件处理线程。
处理模块440,用于通过所分配的当前事件处理线程对业务事件进行处理,得到业务请求结果;其中,所述当前队列控制器、所述当前事件队列、所述当前线程池控制器和所述当前事件处理线程均属于当前业务处理模块。
进一步的,上述分配模块430,包括线程调整单元和线程分配单元;其中,
所述线程调整单元,用于通过所述当前队列控制器统计所述业务事件在所述当前事件队列中的停留时间,若所述停留时间超过预设时间,则向当前线程池控制器发送通知消息,以使所述当前线程池控制器增加所述当前事件处理线程的数量;其中,所述当前线程池控制器属于当前业务处理模块。
所述线程调整单元,还用于通过当前线程池控制器根据所述当前事件处理线程的使用率、所述当前事件队列中业务事件的数量,对所述当前事件处理线程的数量进行调整。
进一步的,上述确定模块410,还用于通过所述当前队列控制器根据当前应答队列的使用率和当前应答队列对业务事件的存储速率,确定所述当前应答队列是否能够接收新的业务事件。
进一步的,上述存储模块420,还用于若能够,则将所述新的业务事件存储到所述当前应答队列中。
进一步的,上述分配模块430,还用于通过所述当前线程池控制器对当前应答线程进行调整,并根据该调整结果为所述当前应答队列中的业务事件分配当前应答线程。
进一步的,上述处理模块440,还用于通过所分配的当前应答线程对业务事件进行处理,得到业务应答结果。
进一步的,上述业务事件的处理装置,还可以包括:超时模块;
所述超时模块,用于通过当前超时控制器记录所述业务事件从存储到所述当前事件队列中到得到业务应答结果之间的时间间隔;若所述时间间隔大于预设时间,则向请求发起方返回系统繁忙通知报文;其中,所述当前应答队列、所述当前应答线程和所述当前超时控制器均属于当前业务处理模块。
进一步的,上述业务事件的处理装置,还可以包括:转发模块;
所述转发模块,用于通过下一业务处理模块中的下一路由器,将所述业务请求结果作为业务事件发给下一业务处理模块中的下一事件队列,由下一业务处理模块进行处理。
进一步的,上述业务事件的处理装置,还可以包括:控制模块;
所述控制模块,用于若当前业务处理模块为执行业务事件接入的模块,则通过所述服务接入控制器控制所述服务接入模块获取所述业务事件的数量;若当前业务处理模块为执行业务事件接出的模块,则通过所述服务接出控制器控制所述服务接出模块接出所述业务事件的数量。
进一步的,所述存储模块420,具体用于根据所述业务事件的标识号,确定所述业务事件的事件属性,并将所述业务事件存储到该事件属性对应的事件队列中。
本实施例提供的业务事件的处理装置可适用于上述任意实施例提供的业务事件的处理方法,具备相应的功能和有益效果。
实施例五
图5为本申请实施例提供的一种业务事件的处理系统的第三结构示意图。业务事件的处理系统包括:至少三个业务处理模块、服务接入控制器和服务接出控制器;其中,所述至少三个业务处理模块之间相连接,每个业务处理模块中包括事件队列、事件处理线程、路由器、应答队列、应答线程、队列控制器、线程池控制器和超时控制器。
参见图5,图5给出了三个业务处理模块的示例,分别是接入通道模块、服务处理模块和接出通道模块。图5为业务事件处理系统一个特定示例,其他业务事件处理系统需根据业务处理模块的具体功能进行相应调整。需要说明的是,本申请对业务事件处理系统中业务处理模块的数量不做具体限定,可根据实际要求进行设定。
具体的,在对业务事件进行请求的过程中,其中,接入通道模块执行的功能为(如图5中箭头1、2和3):通过异步的Servlet接收请求发起方所发送的业务事件,并将业务事件解析成预设格式数据之后添加一些属性信息,并验证业务事件是否有请求权限,以及验证业务事件的参数(如字段格式)是否为预设格式,经过验证操作成功之后,生成请求事件,并记录请求日志。通过路由器将请求事件投递到接入服务处理模块中(如图5中箭头4)。服务处理模块执行的功能为(如图5中箭头5和6):依据服务元数据对请求事件进行业务逻辑处理,生成执行事件。通过路由器将执行事件投递到接出通道模块中(如图5中箭头7)。接出通道模块执行的功能为(如图5中箭头8、9和10):对执行事件进行外调校验,并为执行事件添加属性信息,组装成报文;并通过HTTP接出通道和/或本地接出通道对组装后的执行事件进行服务外调发送至服务提供方,得到并返回业务请求结果。
具体的,在对业务事件进行应答的过程中,其中,接出通道模块执行的功能为(如图5中箭头11和12):对业务请求结果进行处理,生成执行应答事件。通过路由器将执行应答事件投递到服务处理模块中(如图5中箭头13)。服务处理模块执行的功能为(如图5中箭头14和15):对执行应答事件进行服务处理,生成服务应答事件。通过路由器将服务应答事件投递到接入通道模块中(如图5中箭头16。接入通道模块执行的功能为(如图5中箭头17和18):对服务应答事件进行组装成报文,生成应答事件之后返回给请求发起方。
所述业务事件的处理系统用于执行任一实施例所述的业务事件的处理方法。
实施例六
本申请实施例六还提供一种计算机可读存储介质,其上存储有计算机程序(或称为计算机可执行指令),该程序被处理器执行时可以用于执行本申请上述任一实施例所提供的业务事件的处理方法。
本申请实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请实施例进行了较为详细的说明,但是本申请实施例不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (10)
1.一种业务事件的处理方法,其特征在于,所述方法包括:
通过当前队列控制器根据当前事件队列的使用率和所述当前事件队列对业务事件的存储速率,确定所述当前事件队列是否能够接收新的业务事件;
若能够,则将所述新的业务事件存储到所述当前事件队列中;
通过所述当前线程池控制器对当前事件处理线程进行调整,并根据该调整结果为所述当前事件队列中的业务事件分配当前事件处理线程;
通过所分配的当前事件处理线程对业务事件进行处理,得到业务请求结果;其中,所述当前队列控制器、所述当前事件队列、所述当前线程池控制器和所述当前事件处理线程均属于当前业务处理模块。
2.根据权利要求1所述的方法,其特征在于,所述通过所述当前线程池控制器对当前事件处理线程进行调整,包括:
通过所述当前队列控制器统计所述业务事件在所述当前事件队列中的停留时间,若所述停留时间超过预设时间,则向当前线程池控制器发送通知消息,以使所述当前线程池控制器增加所述当前事件处理线程的数量;其中,所述当前线程池控制器属于当前业务处理模块。
3.根据权利要求1所述的方法,其特征在于,所述通过所述当前线程池控制器对当前事件处理线程进行调整,包括:
通过当前线程池控制器根据所述当前事件处理线程的使用率、所述当前事件队列中业务事件的数量,对所述当前事件处理线程的数量进行调整。
4.根据权利要求1所述的方法,其特征在于,还包括:
通过所述当前队列控制器根据当前应答队列的使用率和当前应答队列对业务事件的存储速率,确定所述当前应答队列是否能够接收新的业务事件;
若能够,则将所述新的业务事件存储到所述当前应答队列中;
通过所述当前线程池控制器对当前应答线程进行调整,并根据该调整结果为所述当前应答队列中的业务事件分配当前应答线程;
通过所分配的当前应答线程对业务事件进行处理,得到业务应答结果;
通过当前超时控制器记录所述业务事件从存储到所述当前事件队列中到得到业务应答结果之间的时间间隔;若所述时间间隔大于预设时间,则向请求发起方返回系统繁忙通知报文;其中,所述当前应答队列、所述当前应答线程和所述当前超时控制器均属于当前业务处理模块。
5.根据权利要求1所述的方法,其特征在于,还包括:
通过下一业务处理模块中的下一路由器,将所述业务请求结果作为业务事件发给下一业务处理模块中的下一事件队列,由下一业务处理模块进行处理。
6.根据权利要求1所述的方法,其特征在于,所述方法包括:
若当前业务处理模块为执行业务事件接入的模块,则通过所述服务接入控制器控制所述服务接入模块获取所述业务事件的数量;
若当前业务处理模块为执行业务事件接出的模块,则通过所述服务接出控制器控制所述服务接出模块接出所述业务事件的数量。
7.根据权利要求1所述的方法,其特征在于,所述将所述新的业务事件存储到所述当前事件队列中,包括:
根据所述业务事件的标识号,确定所述业务事件的事件属性,并将所述业务事件存储到该事件属性对应的事件队列中。
8.一种业务事件的处理装置,其特征在于,所述装置包括:
确定模块,用于通过当前队列控制器根据当前事件队列的使用率和所述当前事件队列对业务事件的存储速率,确定所述当前事件队列是否能够接收新的业务事件;
存储模块,用于若能够,则将所述新的业务事件存储到所述当前事件队列中;
分配模块,用于通过所述当前线程池控制器对当前事件处理线程进行调整,并根据该调整结果为所述当前事件队列中的业务事件分配当前事件处理线程;
处理模块,用于通过所分配的当前事件处理线程对业务事件进行处理,得到业务请求结果;其中,所述当前队列控制器、所述当前事件队列、所述当前线程池控制器和所述当前事件处理线程均属于当前业务处理模块。
9.一种业务事件的处理系统,其特征在于,所述系统包括:至少三个业务处理模块、服务接入控制器和服务接出控制器;其中,所述至少三个业务处理模块之间相连接,每个业务处理模块中包括事件队列、事件处理线程、路由器、应答队列、应答线程、队列控制器、线程池控制器和超时控制器;
所述业务事件的处理系统用于执行如权利要求1-7中任一所述的业务事件的处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一项所述的业务事件的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110771580.4A CN113391927A (zh) | 2021-07-08 | 2021-07-08 | 一种业务事件的处理方法、装置、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110771580.4A CN113391927A (zh) | 2021-07-08 | 2021-07-08 | 一种业务事件的处理方法、装置、系统及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113391927A true CN113391927A (zh) | 2021-09-14 |
Family
ID=77625474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110771580.4A Pending CN113391927A (zh) | 2021-07-08 | 2021-07-08 | 一种业务事件的处理方法、装置、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113391927A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115981896A (zh) * | 2023-03-16 | 2023-04-18 | 北京仁科互动网络技术有限公司 | 事件处理系统、方法、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661386A (zh) * | 2009-09-24 | 2010-03-03 | 成都市华为赛门铁克科技有限公司 | 多硬件线程处理器及其业务处理方法 |
US20170168879A1 (en) * | 2015-12-11 | 2017-06-15 | Successfactors, Inc. | Event Handling in a Cloud Data Center |
CN107818016A (zh) * | 2017-11-22 | 2018-03-20 | 苏州麦迪斯顿医疗科技股份有限公司 | 服务器应用程序设计方法、请求事件处理方法及装置 |
CN107832146A (zh) * | 2017-10-27 | 2018-03-23 | 北京计算机技术及应用研究所 | 高可用集群系统中的线程池任务处理方法 |
CN108628775A (zh) * | 2017-03-22 | 2018-10-09 | 华为技术有限公司 | 一种资源管理的方法和装置 |
CN112463314A (zh) * | 2020-11-06 | 2021-03-09 | 贝壳技术有限公司 | 异步队列的处理方法、装置、电子设备及存储介质 |
-
2021
- 2021-07-08 CN CN202110771580.4A patent/CN113391927A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661386A (zh) * | 2009-09-24 | 2010-03-03 | 成都市华为赛门铁克科技有限公司 | 多硬件线程处理器及其业务处理方法 |
US20170168879A1 (en) * | 2015-12-11 | 2017-06-15 | Successfactors, Inc. | Event Handling in a Cloud Data Center |
CN108628775A (zh) * | 2017-03-22 | 2018-10-09 | 华为技术有限公司 | 一种资源管理的方法和装置 |
CN107832146A (zh) * | 2017-10-27 | 2018-03-23 | 北京计算机技术及应用研究所 | 高可用集群系统中的线程池任务处理方法 |
CN107818016A (zh) * | 2017-11-22 | 2018-03-20 | 苏州麦迪斯顿医疗科技股份有限公司 | 服务器应用程序设计方法、请求事件处理方法及装置 |
CN112463314A (zh) * | 2020-11-06 | 2021-03-09 | 贝壳技术有限公司 | 异步队列的处理方法、装置、电子设备及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115981896A (zh) * | 2023-03-16 | 2023-04-18 | 北京仁科互动网络技术有限公司 | 事件处理系统、方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108776934B (zh) | 分布式数据计算方法、装置、计算机设备及可读存储介质 | |
CN107087019B (zh) | 一种基于端云协同计算架构的任务调度方法及装置 | |
CN107579926B (zh) | 基于令牌桶算法的Ceph云存储系统的QoS设置方法 | |
CN112882813B (zh) | 任务调度方法、装置、系统及电子设备 | |
CN107592345B (zh) | 交易限流装置、方法及交易系统 | |
WO2021159638A1 (zh) | 集群队列资源的调度方法、装置、设备及存储介质 | |
US20150295970A1 (en) | Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system | |
US11838384B2 (en) | Intelligent scheduling apparatus and method | |
CN113422842B (zh) | 一种考虑网络负载的分布式电力用电信息数据采集系统 | |
CN112579304A (zh) | 基于分布式平台的资源调度方法、装置、设备及介质 | |
CN112600761B (zh) | 一种资源分配的方法、装置及存储介质 | |
US9817698B2 (en) | Scheduling execution requests to allow partial results | |
CN111586140A (zh) | 一种数据交互的方法及服务器 | |
CN115277577A (zh) | 数据处理方法、装置、计算机设备和计算机可读存储介质 | |
CN111367693A (zh) | 基于消息队列调度插件任务的方法、系统、设备及介质 | |
CN111240864A (zh) | 异步任务处理方法、装置、设备及计算机可读存储介质 | |
CN116661960A (zh) | 一种批量任务处理方法、装置、设备以及存储介质 | |
CN113391927A (zh) | 一种业务事件的处理方法、装置、系统及存储介质 | |
CN213876703U (zh) | 一种资源池管理系统 | |
CN112214299B (zh) | 多核处理器及其任务调度方法和装置 | |
CN116319810A (zh) | 分布式系统的流量控制方法、装置、设备、介质及产品 | |
CN117743264A (zh) | 一种文件存储方式的转换方法和装置 | |
CN114090409A (zh) | 一种消息处理方法及装置 | |
CN114237914A (zh) | 一种基于混合云管理调度系统 | |
TWI735520B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210914 |