CN112084044B - 系统中事件处理方法及相关装置 - Google Patents
系统中事件处理方法及相关装置 Download PDFInfo
- Publication number
- CN112084044B CN112084044B CN202010880703.3A CN202010880703A CN112084044B CN 112084044 B CN112084044 B CN 112084044B CN 202010880703 A CN202010880703 A CN 202010880703A CN 112084044 B CN112084044 B CN 112084044B
- Authority
- CN
- China
- Prior art keywords
- event
- target
- target event
- subscribed
- module
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 9
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000012545 processing Methods 0.000 claims abstract description 36
- 230000006870 function Effects 0.000 claims description 86
- 230000004044 response Effects 0.000 claims description 36
- 238000001914 filtration Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 7
- 238000012163 sequencing technique Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 18
- 238000003860 storage Methods 0.000 description 15
- 230000008878 coupling Effects 0.000 description 8
- 238000010168 coupling process Methods 0.000 description 8
- 238000005859 coupling reaction Methods 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 208000027418 Wounds and injury Diseases 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 208000014674 injury Diseases 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/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/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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
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)
- Stored Programmes (AREA)
Abstract
本申请提供一种系统中事件处理方法及相关装置,属于互联网技术领域。该方法包括:所述系统中包括多个业务模块及事件管理器,多个所述业务模块分别与所述事件管理器连接,所述方法应用于所述事件管理器,所述方法包括:接收目标事件的事件数据,所述事件数据为多个所述业务模块中的目标业务模块所推送;查询订阅所述目标事件的业务模块;控制订阅所述目标事件的业务模块根据所述事件数据对所述目标事件进行响应。本申请有效提升系统中事件处理的可靠性。
Description
技术领域
本申请涉及互联网技术领域,具体而言,涉及一种系统中事件处理方法及相关装置。
背景技术
系统中通常包含大量业务模块,以大型多人在线角色扮演游戏MMORPG(MassiveMultiplayer Online Role-Playing Game)中帮派系统为例,其中包括例如帮派战争、联赛、任务、种植、建筑等业务模块,各业务模块之间通常具有的数值关联,某个业务模块产生的事件的产生,需要通知其它业务模块作出相应响应。各业务模块的代码中对应的表现是:各个业务模块之间产生单向或双向依赖。
由于各业务模块之间相互依赖产生耦合,会存在网状耦合问题,难以满足灵活多变的事件处理需求,且各模块内聚性较差,系统中事件在处理时容易出错,进一步的,业务模块的相互依赖会导致在进行调整时需要协同改动双方代码,容易出现问题,进而导致系统中事件处理可靠性低。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本申请实施例的目的在于提供一种系统中事件处理方法及装置,其能够有效提升系统中事件处理的可靠性。
根据本申请的一个实施例,一种系统中事件处理方法,所述系统中包括多个业务模块及事件管理器,多个所述业务模块分别与所述事件管理器连接,所述方法应用于所述事件管理器,所述方法包括:接收目标事件的事件数据,所述事件数据为多个所述业务模块中的目标业务模块所推送;查询订阅所述目标事件的业务模块;控制订阅所述目标事件的业务模块根据所述事件数据对所述目标事件进行响应。
根据本申请的一个实施例,一种系统中事件处理装置,所述系统中包括多个业务模块及事件管理器,多个所述业务模块分别与所述事件管理器连接,所述装置应用于所述事件管理器,所述装置包括:接收模块,用于接收目标事件的事件数据,所述事件数据为多个所述业务模块中的目标业务模块所推送;查询模块,用于查询订阅所述目标事件的业务模块;响应模块,用于控制订阅所述目标事件的业务模块根据所述事件数据对所述目标事件进行响应。
在本申请的一些实施例中,所述查询模块包括:响应列表获取单元,用于获取事件响应列表,所述事件响应列表为建立事件标识与回调函数的关联关系的列表,所述回调函数用于对所述目标事件进行响应;遍历单元,用于根据所述目标事件的事件标识,遍历所述事件响应列表得到关联于所述目标事件的回调函数,其中,所述关联于所述目标事件的回调函数为订阅所述目标事件的业务模块所定义。
在本申请的一些实施例中,所述响应模块包括:执行单元,用于执行关联于所述目标事件的回调函数,以在订阅所述目标事件的业务模块中根据所述事件数据对所述目标事件进行响应。
在本申请的一些实施例中,所述执行单元包括:优先级获取子单元,用于获取订阅所述目标事件的业务模块的优先级顺序;执行子单元,用于根据所述优先级顺序,执行订阅所述目标事件的业务模块所对应的回调函数。
在本申请的一些实施例中,所述获取子单元包括:处理状态获取子单元,用于获取订阅所述目标事件的业务模块的事件处理状态;排序子单元,用于按照所述事件处理状态,将订阅所述目标事件的业务模块进行排序,得到所述优先级顺序。
在本申请的一些实施例中,所述执行单元包括:过滤函数获取子单元,用于获取订阅所述目标事件的业务模块所定义的过滤函数;执行子单元,用于执行所述回调函数及所述过滤函数,以在订阅所述目标事件的业务模块中根据所述事件数据对预定事件项进行响应,所述预定事件项属于所述目标事件。
在本申请的一些实施例中,所述查询模块包括:触发状态获取单元,用于获取所述目标事件的事件触发状态;查询确定单元,用于若所述事件触发状态为处于未触发状态时,则查询订阅所述目标事件的业务模块。
在本申请的一些实施例中,所述触发状态获取单元包括:触发列表获取子单元,用于获取事件触发列表,所述事件触发列表用于保存处于触发状态的事件所对应事件标识;触发状态确定子单元,用于根据所述目标事件的事件标识是否已存在于所述事件触发列表,确定所述目标事件的事件触发状态。
根据本申请的另一实施例,一种电子设备可以包括:存储器,存储有计算机可读指令;处理器,读取存储器存储的计算机可读指令,以执行如上所述的方法。
根据本申请的另一实施例,一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行如上所述的方法。
根据本申请的另一实施例,一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如上所述的各种可选实现方式中提供的方法。
根据本申请的实施例,系统中事件处理时,由于系统中包括多个业务模块及事件管理器,且多个业务模块分别与事件管理器连接,事件管理器可以接收目标事件的事件数据,其中,事件数据为多个业务模块中的目标业务模块所推送;然后,查询订阅该目标事件的业务模块;控制订阅该目标事件的业务模块根据事件数据对目标事件进行响应。
通过事件管理器进行各个业务模块之间事件的响应协同调度,降低了各业务模块之间的耦合,避免网状耦合的出现,同时,提升各模块的内聚性,系统可以满足灵活多变的事件处理需求,事件处理不容易出错,而且,可以避免个业务模块的代码协同改动,系统可扩展性高,提升编码人员的编码效率,进而有效提升系统中事件处理的可靠性。
本申请的其他特征和优点将通过下面结合附图的详细描述变得显然,或部分地通过本申请的实践而习得。
应当理解,以上的一般描述和后文的详细描述仅是示例性和解释性的,并不旨在限制本申请。
附图说明
图1示出了可以应用本申请实施例的系统的示意图。
图2示出了根据本申请的一个实施例的系统中事件处理方法的流程图。
图3示出了相关技术中业务模块形成网状耦合结构的示意图。
图4示出了相关技术中业务模块之间单项依赖结构的示意图。
图5示出了根据本申请的一个实施例的业务模块与事件管理器连接结构的示意图。
图6示出了根据本申请的一个实施例的业务模块之间事件循环触发结构的示意图。
图7示出了根据本申请的一个实施例的业务模块之间优先级结构的示意图。
图8示出了根据本申请的一个实施例的业务模块通过过滤函数过滤事件的示意图。
图9示出了根据本申请的一个实施例的系统中事件处理装置的框图。
图10示出了根据本申请的一个实施例的电子设备的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示出了可以应用本申请实施例的系统100的示意图。
如图1所示,系统100可以包括服务器101及终端102。
服务器101可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。服务器101可以进行系统中事件处理,服务器101中可以运行游戏服务端,为游戏客户端提供数据计算、校验、存储和转发等功能。
特别地,本示例实施方式中,服务器101可以提供人工智能云服务,例如提供大型多人在线角色扮演游戏(MMORPG)的人工智能云服务。所谓人工智能云服务,一般也被称作是AIaaS(AI as a Service,中文为“AI即服务”)。这是目前主流的一种人工智能平台的服务方式,具体来说AIaaS平台会把几类常见的AI服务进行拆分,并在云端提供独立或者打包的服务。这种服务模式类似于开了一个AI主题商城:所有的开发者都可以通过API接口的方式来接入使用平台提供的一种或者是多种人工智能服务,部分资深的开发者还可以使用平台提供的AI框架和AI基础设施来部署和运维自已专属的云人工智能服务。
终端102可以是边缘设备,例如智能手机,电脑等。终端102可以运行与游戏服务器相对应为用户提供本地服务的游戏客户端。
用户通过终端102可以在所有大型多人在线角色扮演游戏(MMORPG)中,扮演一个或多个虚拟角色,并控制该角色的在游戏中虚拟世界的活动与行为。
终端102和服务器101可以通过无线通信方式进行直接或间接地连接,本申请在此不做特殊限制。
本示例的一种实施方式中,如图1所示,服务器101中的系统中可以包括多个业务模块及事件管理器,多个业务模块分别与事件管理器连接,系统中事件处理方法应用于事件管理器,该方法包括:接收目标事件的事件数据,事件数据为多个业务模块中的目标业务模块所推送;查询订阅目标事件的业务模块;控制订阅目标事件的业务模块根据事件数据对目标事件进行响应。
图2示意性示出了根据本申请的一个实施例的系统中事件处理方法的流程图。该系统中事件处理方法的执行主体可以是具有计算处理功能的电子设备,比如图1中所示的服务器101或者终端102。
该系统中包括多个业务模块及事件管理器,多个业务模块分别与事件管理器连接系统中事件处理方法应用于事件管理器,如图2所示,该系统中事件处理方法可以包括步骤S210至步骤S230。
步骤S210,接收目标事件的事件数据,事件数据为多个业务模块中的目标业务模块所推送;
步骤S220,查询订阅目标事件的业务模块;
步骤S230,控制订阅目标事件的业务模块根据事件数据对目标事件进行响应。
下面描述系统中事件处理时,所进行的各步骤的具体过程。
在步骤S210,接收目标事件的事件数据,事件数据为多个业务模块中的目标业务模块所推送。
本示例的实施方式中,目标事件为业务模块中产生的某个事件,例如,大型多人在线角色扮演游戏MMORPG(Massive Multiplayer Online Role-Playing Game)中帮派系统包含了大量玩法模块(业务模块),例如帮派战争、联赛、任务、种植及建筑等玩法模块。其中,目标事件例如帮派战争玩法模块中产生的虚拟角色(例如怪物)死亡事件。目标事件的事件数据为目标事件对应的相关数据,包括事件标识、游戏内容收益数据及角色伤害数据等数据。
参考图3所示,相关技术中,各个玩法模块之间在直接依赖时,副本310、职位320、建筑330及种植340四个业务模块会形成网状耦合结构。参考图4所示,相关技术中,通过采用观察者模式,解决模块网状耦合问题,观察者模式根据事件的产生和接收将模块分为发布者和观察者,发布者作为事件源产生事件,观察者接受事件并作出对应的逻辑响应。每个作为发布者的玩法模块A,都维护一个观察者列表,其他玩法模块B若需要监听玩法模块A的事件,需要将自身注册至模块A的观察者列表中;例如图4中副本410和建筑420两个业务模块将自身注册至职位430;职位430将自身注册至种植440;建筑420与种植440将自身注册至副本410;种植440将自身注册至建筑420。
但是观察者对发布者还是存在单项依赖,观察者仍然需要到发布者所对应的玩法模块注册将自身注册至职位,标记自身对发布者中的事件感兴趣,否则发布者产生事件时,无法通知观察者。
本示例中,参考图5所示,在发布者和观察者之间设置事件管理器510,副本520、职位530、建筑540及种植550四个业务模块分别与事件管理器510连接,切断发布者与观察者之间的直接联系,双方无需知道对方的存在,各自只与事件管理器交互,避免各个业务模块之间的依赖。每个业务模块既可为发布者,也可为观察者,发布者可以向事件管理器推送事件,观察者可以从事件管理器订阅事件。事件管理器接收每个业务模块产生事件后都推送的事件数据,进而通知其他业务模块对事件作出相应响应,做出的响应包括逻辑响应或数值调整。
在步骤S220,查询订阅目标事件的业务模块。
本示例的实施方式中,每个业务模块事先根据需求向事件管理器订阅自身感兴趣的事件,具体地,可以通过在事件管理器中建立每个业务模块的唯一标识与业务模块感兴趣事件的事件标识之间的关联关系,实现订阅自身感兴趣的事件。
事件管理器在接收到事件数据后,根据事件数据中的事件标识可以查询到订阅该事件的业务模块。
一种实施例中,查询订阅目标事件的业务模块,包括:获取事件响应列表,该事件响应列表为建立事件标识与回调函数的关联关系的列表,该回调函数用于对目标事件进行响应;根据目标事件的事件标识,遍历事件响应列表得到关联于目标事件的回调函数,其中,关联于目标事件的回调函数为订阅目标事件的业务模块所定义。
事件管理器中维护事件响应列表,该事件响应列表可以是针对每个类型的事件设置有对应的事件响应列表,可以保证查询效率;也可以是对应于所有事件设置有总的事件响应列表。
每个业务模块通过将自身定义的回调函数注册到事件管理器当中,即在事件响应列表中建立回调函数与感兴趣事件的事件标识的映射关系,进而通过事件响应列表建立事件与业务模块的关联关系,从而每个业务模块实现订阅自身感兴趣的事件。
其中,回调函数是一个通过函数指针调用的函数,把函数地址作为参数传递给另一个函数,例如,在事件响应列表中建立事件标识与函数地址的对应关系;且回调函数不是由该函数的实现方(业务模块)直接调用,而是在特定的事件或条件发生时由另外的一方(事件管理器)调用,用于对该事件或条件进行响应。
事件管理器根据目标事件的事件标识,遍历事件响应列表得到关联于目标事件的回调函数,即遍历得到与目标事件的事件标识关联的所有回调函数,进而意味着确定了订阅目标事件的业务模块。
一种实施例中,查询订阅目标事件的业务模块,包括:获取目标事件的事件触发状态;若事件触发状态为处于未触发状态时,则查询订阅目标事件的业务模块。
事件触发状态用于描述目标事件在事件管理器中的触发状态。本示例中,当某个事件的事件数据推送至事件管理器且没有被移除时事件处于触发状态,此时,事件管理器正在进控制其他业务模块进行事件的响应或者等待控制其它业务模块进行事件的响应。当某个事件的事件数据没有推送至事件管理器,或者事件管理器中没有某个事件的事件数据时,该某个事件处于未触发状态。特别地,事件管理器对于推送过来的事件数据,在控制其他业务模块完成事件响应后移除该事件数据。
进而,可以通过查询事件管理器中是否已存在推送的目标事件的事件数据获取到目标事件的事件触发状态,具体地,可以通过查询事件管理器中是否已存在推送的目标事件的事件标识确定到目标事件的事件触发状态,而不必确定事件的相关数据是否一致。
参考图6所示,副本610和职位620两个业务模块与事件管理器630连接,副本610向事件管理器630推送事件1的同时接收事件4,职位620向事件管理器630推送事件3的同时接收事件2,此时,副本610和职位620两个业务模块之间可能会存在循环触发问题,因为一个业务模块可能同时作为发布者和观察者两种身份。例如:事件1和事件2为同一事件,事件4和事件3为同一事件,此时,副本向事件管理器推送事件5时,若事件5与事件1相同,那么就会出现循环依赖问题,导致系统崩溃。同理,循环触发问题同样可能会存在于如图3中业务模块之间直接耦合的情况,例如建筑330作为发布者发布事件a,职位320作为观察者接受事件a,发布了事件b,此时建筑330作为事件b的观察者,发布事件a,那么就会出现循环依赖问题。
本示例中,通过若事件触发状态为处于未触发状态时,则查询订阅目标事件的业务模块,否则,若事件触发状态为处于触发状态时,则打断本次流程,有效避免循环触发问题。例如,若事件5与事件1相同(即事件1的事件标识已存在于事件管理器),则打断事件5的进程,直到事件1响应完成。进而本示例可以检测并打断循环触发,同时生成告警日志。
一种实施例中,获取目标事件的事件触发状态,包括:获取事件触发列表,该事件触发列表用于保存处于触发状态的事件所对应事件标识;根据目标事件的事件标识是否已存在于该事件触发列表,确定目标事件的事件触发状态。
事件管理器维护一个事件触发列表,用于保存处于触发状态的事件所对应事件标识,即初始状态下,事件触发列表为空,事件触发一次(事件数据推送至事件管理器)将在事件触发列表中记录对应的事件标识,且在待本次触发流程全部结束(即事件响应结束)后,将事件标识从事件触发列表中删除。
进而,每次事件触发都判断事件标识是否已存在事件触发列表中,若事件标识已存在于该事件触发列表,则确定目标事件处于触发状态,相反,若事件标识不存在于该事件触发列表,则确定目标事件处于未触发状态,进而可以准确高效判断事件的触发状态。
在步骤S230,控制订阅目标事件的业务模块根据事件数据对目标事件进行响应。
本示例的实施方式中,控制订阅目标事件的业务模块根据事件数据对目标事件进行响应,可以是将目标事件的事件数据发布至订阅目标事件的业务模块由业务模块进行响应,也可以是执行订阅目标事件的业务模块定义的回调函数根据事件数据对目标事件进行响应。
一种实施例中,控制订阅目标事件的业务模块根据事件数据对目标事件进行响应,包括:执行关联于目标事件的回调函数,以在订阅目标事件的业务模块中根据事件数据对目标事件进行响应。
关联于目标事件的回调函数为订阅目标事件的业务模块所定义,通过执行关联于目标事件的回调函数,可以直接在订阅目标事件的业务模块中根据事件数据对目标事件进行响应。
一种实施例中,执行关联于目标事件的回调函数,包括:获取订阅目标事件的业务模块的优先级顺序;根据优先级顺序,执行订阅目标事件的业务模块所对应的回调函数。
业务模块的优先级顺序可以是预先设定的优先级顺序,也可以是根据业务模块的事件处理速度、CPU负载、内存占用等事件处理状态动态建立的优先级顺序。其中,优先级顺序可以包括并列优先级的业务模块,例如,图7所示副本710、职位720、建筑730及种植740四个业务模块分别与事件管理器750连接,副本710和职位720两个业务模块同为第一优先级,建筑730和种植740两个业务模块同为第二优先级,其中,第一优先级优于第二优先级。
根据优先级顺序,执行订阅目标事件的业务模块所对应的回调函数,即按照优先级由高到低的顺序,依次执行订阅目标事件的业务模块所对应的回调函数,例如,图7所示中副本710和职位720对应的回调函数先执行,然后再执行建筑730和种植740对应的回调函数。进而通过约定优先级顺序的实施方式可以解决事件模块之间的事件数据依赖问题。
一种实施例中,获取订阅目标事件的业务模块的优先级顺序,包括:获取订阅目标事件的业务模块的事件处理状态;按照事件处理状态,将订阅目标事件的业务模块进行排序,得到优先级顺序。
事件处理状态可以是业务模块的事件处理速度、CPU负载、内存占用等状态,根据这些状态信息可以评价出每个业务模块的事件处理能力。按照事件处理状态,将订阅目标事件的业务模块进行排序得到优先级顺序,例如内存占用越少,事件处理能力越好,事件处理状态越好,进而可以排为靠前的优先级。
一种实施例中,执行关联于目标事件的回调函数,以在订阅目标事件的业务模块中根据事件数据对目标事件进行响应,包括:获取订阅目标事件的业务模块所定义的过滤函数;执行该回调函数及该过滤函数,以在订阅目标事件的业务模块中根据事件数据对预定事件项进行响应,该预定事件项属于目标事件。
通过过滤函数,对于每种事件中的事件项业务模块可以选择性订阅,例如击杀怪物事件,业务模块可以定义过滤函数标记感兴趣的怪物(例如怪物A、怪物B及怪物C中一个或多个)。事件管理器支持业务模块注册事件过滤函数,即每个过滤函数在注册时同回调函数一样与事件的标识在事件管理器中建立映射关系。参考图8所示,副本810、职位820、建筑830及种植840四个业务模块在事件管理器850中注册自身的过滤函数,实现订阅自身感兴趣的事件项。
进而,通过获取订阅目标事件的业务模块所定义的回调函数及过滤函数,执行该回调函数及该过滤函数,在进行事件响应时可以通过过滤函数可以过滤掉不必要的事件项,具有高灵活性。
图9示出了根据本申请的一个实施例的系统中事件处理装置的框图。
如图9所示,系统中事件处理装置900,系统中包括多个业务模块及事件管理器,多个业务模块分别与事件管理器连接,该装置应用于事件管理器,该装置可以包括接收模块910、查询模块920及响应模块930。
接收模块910可以用于接收目标事件的事件数据,所述事件数据为多个所述业务模块中的目标业务模块所推送;
查询模块920可以用于查询订阅所述目标事件的业务模块;
响应模块930可以用于控制订阅所述目标事件的业务模块根据所述事件数据对所述目标事件进行响应。
在本申请的一些实施例中,所述查询模块包括:响应列表获取单元,用于获取事件响应列表,所述事件响应列表为建立事件标识与回调函数的关联关系的列表,所述回调函数用于对所述目标事件进行响应;遍历单元,用于根据所述目标事件的事件标识,遍历所述事件响应列表得到关联于所述目标事件的回调函数,其中,所述关联于所述目标事件的回调函数为订阅所述目标事件的业务模块所定义。
在本申请的一些实施例中,所述响应模块包括:执行单元,用于执行关联于所述目标事件的回调函数,以在订阅所述目标事件的业务模块中根据所述事件数据对所述目标事件进行响应。
在本申请的一些实施例中,所述执行单元包括:优先级获取子单元,用于获取订阅所述目标事件的业务模块的优先级顺序;执行子单元,用于根据所述优先级顺序,执行订阅所述目标事件的业务模块所对应的回调函数。
在本申请的一些实施例中,所述获取子单元包括:处理状态获取子单元,用于获取订阅所述目标事件的业务模块的事件处理状态;排序子单元,用于按照所述事件处理状态,将订阅所述目标事件的业务模块进行排序,得到所述优先级顺序。
在本申请的一些实施例中,所述执行单元包括:过滤函数获取子单元,用于获取订阅所述目标事件的业务模块所定义的过滤函数;执行子单元,用于执行所述回调函数及所述过滤函数,以在订阅所述目标事件的业务模块中根据所述事件数据对预定事件项进行响应,所述预定事件项属于所述目标事件。
在本申请的一些实施例中,所述查询模块包括:触发状态获取单元,用于获取所述目标事件的事件触发状态;查询确定单元,用于若所述事件触发状态为处于未触发状态时,则查询订阅所述目标事件的业务模块。
在本申请的一些实施例中,所述触发状态获取单元包括:触发列表获取子单元,用于获取事件触发列表,所述事件触发列表用于保存处于触发状态的事件所对应事件标识;触发状态确定子单元,用于根据所述目标事件的事件标识是否已存在于所述事件触发列表,确定所述目标事件的事件触发状态。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
图10示意性示出了根据本申请的一个实施例的电子设备的框图。
需要说明的是,图10示出的电子设备1000仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图10所示,电子设备1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机存取存储器(RAM)1003中的程序而执行各种适当的动作和处理。在RAM 1003中,还存储有系统操作所需的各种程序和数据。CPU1001、ROM 1002以及RAM1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN(局域网)卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
特别地,根据本申请的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(CPU)1001执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的实施例,而可以在不脱离其范围的情况下进行各种修改和改变。
Claims (9)
1.一种系统中事件处理方法,其特征在于,所述系统中包括多个业务模块及事件管理器,多个所述业务模块分别与所述事件管理器连接,所述方法应用于所述事件管理器,各业务模块均能够向所述事件管理器推送事件和从所述事件管理器订阅事件,所述方法包括:
接收目标事件的事件数据,所述事件数据为多个所述业务模块中的目标业务模块所推送;
获取事件触发列表,所述事件触发列表用于保存处于触发状态的事件所对应事件标识;
根据所述目标事件的事件标识是否已存在于所述事件触发列表,确定所述目标事件的事件触发状态;
若所述事件触发状态为处于未触发状态时,则查询订阅所述目标事件的业务模块;
在所述事件触发列表中记录所述目标事件的事件标识,并控制订阅所述目标事件的业务模块根据所述事件数据对所述目标事件进行响应;
待本次触发流程全部结束,将所述目标事件的事件标识从所述事件触发列表中删除;
若所述事件触发状态为处于触发状态,则打断本次触发流程。
2.根据权利要求1所述的方法,其特征在于,所述查询订阅所述目标事件的业务模块,包括:
获取事件响应列表,所述事件响应列表为建立事件标识与回调函数的关联关系的列表,所述回调函数用于对所述目标事件进行响应;
根据所述目标事件的事件标识,遍历所述事件响应列表得到关联于所述目标事件的回调函数,其中,所述关联于所述目标事件的回调函数为订阅所述目标事件的业务模块所定义。
3.根据权利要求2所述的方法,其特征在于,所述控制订阅所述目标事件的业务模块根据所述事件数据对所述目标事件进行响应,包括:
执行关联于所述目标事件的回调函数,以在订阅所述目标事件的业务模块中根据所述事件数据对所述目标事件进行响应。
4.根据权利要求3所述的方法,其特征在于,所述执行关联于所述目标事件的回调函数,包括:
获取订阅所述目标事件的业务模块的优先级顺序;
根据所述优先级顺序,执行订阅所述目标事件的业务模块所对应的回调函数。
5.根据权利要求4所述的方法,其特征在于,所述获取订阅所述目标事件的业务模块的优先级顺序,包括:
获取订阅所述目标事件的业务模块的事件处理状态;
按照所述事件处理状态,将订阅所述目标事件的业务模块进行排序,得到所述优先级顺序。
6.根据权利要求3所述的方法,其特征在于,所述执行关联于所述目标事件的回调函数,以在订阅所述目标事件的业务模块中根据所述事件数据对所述目标事件进行响应,包括:
获取订阅所述目标事件的业务模块所定义的过滤函数;
执行所述回调函数及所述过滤函数,以在订阅所述目标事件的业务模块中根据所述事件数据对预定事件项进行响应,所述预定事件项属于所述目标事件。
7.一种系统中事件处理装置,其特征在于,所述系统中包括多个业务模块及事件管理器,多个所述业务模块分别与所述事件管理器连接,所述装置应用于所述事件管理器,各业务模块均能够向所述事件管理器推送事件和从所述事件管理器订阅事件,所述装置包括:
接收模块,用于接收目标事件的事件数据,所述事件数据为多个所述业务模块中的目标业务模块所推送;
触发列表获取子单元,用于获取事件触发列表,所述事件触发列表用于保存处于触发状态的事件所对应事件标识;
触发状态确定子单元,用于根据所述目标事件的事件标识是否已存在于所述事件触发列表,确定所述目标事件的事件触发状态;
查询确定单元,用于若所述事件触发状态为处于未触发状态时,则查询订阅所述目标事件的业务模块;
响应模块,用于控制订阅所述目标事件的业务模块根据所述事件数据对所述目标事件进行响应;
所述装置还用于:在控制订阅所述目标事件的业务模块根据所述事件数据对所述目标事件进行响应时,在所述事件触发列表中记录所述目标事件的事件标识;待本次触发流程全部结束,将所述目标事件的事件标识从所述事件触发列表中删除;若所述事件触发状态为处于触发状态,则打断本次触发流程。
8.一种电子设备,其特征在于,包括:存储器,存储有计算机可读指令;处理器,读取存储器存储的计算机可读指令,以执行如权利要求1-6任一项所述的方法。
9.一种计算机程序介质,其特征在于,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行如权利要求1-6任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010880703.3A CN112084044B (zh) | 2020-08-27 | 2020-08-27 | 系统中事件处理方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010880703.3A CN112084044B (zh) | 2020-08-27 | 2020-08-27 | 系统中事件处理方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112084044A CN112084044A (zh) | 2020-12-15 |
CN112084044B true CN112084044B (zh) | 2024-02-02 |
Family
ID=73728743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010880703.3A Active CN112084044B (zh) | 2020-08-27 | 2020-08-27 | 系统中事件处理方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112084044B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112827178B (zh) * | 2021-01-29 | 2024-09-20 | 杭州电魂网络科技股份有限公司 | 一种技能实现的方法和系统 |
CN115203172B (zh) * | 2022-06-30 | 2023-11-07 | 北京亚控科技发展有限公司 | 模型构建及模型数据订阅方法、装置、电子设备和介质 |
CN118264531A (zh) * | 2022-12-27 | 2024-06-28 | 华为技术有限公司 | 数据发布的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120297399A1 (en) * | 2011-05-18 | 2012-11-22 | International Business Machines Corporation | Automatically updating the display state of the user interface of a client device in a publish/subscribe system |
CN104360904A (zh) * | 2014-10-16 | 2015-02-18 | 四川长虹电器股份有限公司 | 基于事件总线的模块间消息传递机制 |
CN107783849A (zh) * | 2017-09-27 | 2018-03-09 | 武汉斗鱼网络科技有限公司 | 事件处理方法及客户端 |
CN109767342A (zh) * | 2018-12-13 | 2019-05-17 | 中国平安财产保险股份有限公司 | 一种数据处理方法、系统、终端及存储介质 |
-
2020
- 2020-08-27 CN CN202010880703.3A patent/CN112084044B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120297399A1 (en) * | 2011-05-18 | 2012-11-22 | International Business Machines Corporation | Automatically updating the display state of the user interface of a client device in a publish/subscribe system |
CN104360904A (zh) * | 2014-10-16 | 2015-02-18 | 四川长虹电器股份有限公司 | 基于事件总线的模块间消息传递机制 |
CN107783849A (zh) * | 2017-09-27 | 2018-03-09 | 武汉斗鱼网络科技有限公司 | 事件处理方法及客户端 |
CN109767342A (zh) * | 2018-12-13 | 2019-05-17 | 中国平安财产保险股份有限公司 | 一种数据处理方法、系统、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112084044A (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112084044B (zh) | 系统中事件处理方法及相关装置 | |
CN104838360B (zh) | 基于配额的资源管理 | |
WO2016123042A1 (en) | Data factory platform and operating system | |
KR20180009352A (ko) | 모바일 게임에 대한 데이터 처리 방법 및 장치 | |
CN112418259A (zh) | 一种基于直播过程中用户行为的实时规则的配置方法、计算机设备及可读存储介质 | |
CN112861091B (zh) | 登录方法、装置、电子设备和存储介质 | |
CN111292028A (zh) | 库存信息处理方法及系统、计算机系统和可读存储介质 | |
CN111580883B (zh) | 应用程序启动方法、装置、计算机系统和介质 | |
CN111841019A (zh) | 游戏应用安全验证方法、装置、设备及存储介质 | |
CN111881148A (zh) | 对象组合的属性确定方法、装置、电子设备 | |
CN115563160A (zh) | 数据处理方法、装置、计算机设备和计算机可读存储介质 | |
CN109067864B (zh) | 通知消息推送方法、装置及电子设备 | |
CN116132526A (zh) | 一种车端信息推送方法、装置、设备及介质 | |
US11258838B2 (en) | Method, system, and non-transitory computer readable record medium for processing chatroom based on usage | |
CN115002495A (zh) | 动画处理方法及装置 | |
CN111639741B (zh) | 一种用于多目标QoS优化的服务自动组合代理系统 | |
CN112667949A (zh) | 用于前端网关的数据处理方法及装置 | |
CN112764837A (zh) | 数据上报方法、装置、存储介质及终端 | |
CN109460288B (zh) | 一种事务处理方法、管理服务器、事务处理系统和存储介质 | |
CN113077280A (zh) | 一种电子资源分配方法、装置、电子设备及存储介质 | |
CN109741055A (zh) | 黑名单调用方法、装置、服务器及存储介质 | |
CN112035133A (zh) | 一种主页升级方法及终端 | |
CN114968491B (zh) | 虚拟资源测试方法、装置、电子设备及存储介质 | |
CN115268740B (zh) | 虚拟角色抽取方法、装置、电子设备及可读存储介质 | |
CN113934453B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |