事件处理方法、装置、设备和介质与流程
未命名
09-23
阅读:39
评论:0
1.本发明涉及互联网技术领域,具体而言,涉及一种事件处理方法、装置、设备和介质。
背景技术:
2.当前,软件系统具有越来越复杂的领域知识,为了方便开发人员理解业务、提升开发效率,领域建模设计方法已经在软件系统设计中被逐渐推广。在领域建模设计中,为了提高应用程序的松耦合、高扩展特性,事件处理框架也随之成为构建复杂应用的架构选择。事件处理框架通常包括事件处理器、事件总线、事件存储等组件,可以实现事件的发布、订阅、处理和持久化。其中,事件总线是该框架的重要组件,它允许应用程序中的事件发布者与事件订阅者通过事件的方式进行松散耦合,完成针对事件的过滤与分发,实现整个系统各部分基于事件的异步协作。然而,现有的事件总线的事件处理合理性有待提升。
技术实现要素:
3.本发明的目的之一包括,例如,提供了一种事件处理方法、装置、设备和介质,以至少部分地提高事件处理的合理性。
4.本发明的实施例可以这样实现:
5.第一方面,本发明提供一种事件处理方法,应用于事件总线装置,所述方法包括:
6.接收事件实例;
7.确定所述事件实例的事件类型,所述事件类型包括域内事件和跨域事件中的至少一种;
8.在所述事件实例属于域内事件的情况下,按照第一处理策略进行处理,所述第一处理策略包括基于所述事件总线装置对所述事件实例进行域内处理;
9.在所述事件实例属于跨域事件的情况下,按照第二处理策略进行处理,所述第二处理策略包括将所述事件实例进行广播,以使对应的目标事件总线装置对所述事件实例进行跨域处理。
10.在可选的实施方式中,所述事件总线装置包括事件监听器、路由管理器、域内处理器和跨域处理器;
11.所述接收事件实例,包括:基于所述事件监听器接收事件实例,并将所述事件实例发送至所述路由管理器;
12.所述确定所述事件实例的事件类型,包括:基于所述路由管理器接收事件实例,确定所述事件实例的事件类型;
13.所述在所述事件实例属于域内事件的情况下,按照第一处理策略进行处理,包括:基于所述路由管理器,在所述事件实例属于域内事件的情况下,生成事件实例处理指令并发送至所述域内处理器,基于所述域内处理器,将所述事件实例路由至对应的域内事件处理器进行处理;
14.所述在所述事件实例属于跨域事件的情况下,按照第二处理策略进行处理,包括:基于所述路由管理器,在所述事件实例属于跨域事件的情况下,生成事件实例处理指令并发送至所述跨域处理器,基于所述跨域处理器,根据所述事件实例处理指令生成事件实例传输指令,并将所述事件实例传输指令广播至组播网络中,以使与所述事件实例传输指令对应的目标跨域处理器对所述事件实例进行处理。
15.在可选的实施方式中,所述方法还包括:
16.所述跨域处理器在接收到组播网络中其他跨域处理器广播的事件实例传输指令的情况下,确定自身是否为所述事件实例传输指令所对应的目标跨域处理器;
17.若是,对所述事件实例传输指令进行处理;
18.若否,丢弃所述事件实例传输指令。
19.在可选的实施方式中,所述事件实例包括事件类型标识,所述路由管理器中预存有域内路由映射表和跨域路由映射表,所述基于所述路由管理器接收事件实例,确定所述事件实例的事件类型,包括:
20.根据所述事件实例的事件类型标识,检索所述域内路由映射表,确定是否存在本地可用的事件处理器,若是,确定所述事件实例属于域内事件;
21.根据所述事件实例的事件类型标识,检索所述跨域路由映射表,确定是否存在跨域可用的事件处理器,若存在跨域可用的事件处理器,确定所述事件实例属于跨域事件。
22.在可选的实施方式中,所述事件实例还包括事件实例标识和事件实例参数;所述事件实例处理指令包括事件实例标识、事件类型标识、事件实例参数和事件处理目标标识;
23.所述根据所述事件实例处理指令生成事件实例传输指令,包括:
24.根据所述事件实例处理指令中的事件类型标识获取具体事件类型;
25.将所述事件实例处理指令中的事件实例参数序列化;
26.基于所述事件实例、具体事件类型、序列化后的事件实例参数生成事件实例传输指令,所述事件实例传输指令包括事件实例标识、事件类型标识、事件实例参数内容和第一事件处理目标标识;
27.其中,所述事件实例标识用于唯一指定一个事件实例的标识;所述事件类型标识用于描述事件处理器所处理的事件类型;所述事件实例参数用于存放事件实例的具体参数信息;所述事件处理目标标识用于描述事件的具体处理目标,该事件处理目标标识使用事件处理器标识填充;所述事件实例参数内容用于存放事件实例的具体参数的序列化结果;所述第一事件处理目标标识用于指定处理该事件的应用实例标识。
28.在可选的实施方式中,所述将所述事件实例传输指令广播至组播网络中,以使与所述事件实例传输指令对应的目标跨域处理器对所述事件实例进行处理,包括:
29.将所述事件实例传输指令广播至组播网络中;
30.基于接收到所述事件实例传输指令的跨域处理器,确定所述事件实例传输指令中的第一事件处理目标标识是否与本地的应用实例标识匹配;
31.若是,确定自身为所述事件实例传输指令所对应的目标跨域处理器,根据所述事件实例传输指令中的事件类型标识获取具体事件类型,将所述事件实例传输指令中的事件实例参数内容反序列化为事件实例参数,通过所述事件实例传输指令中的事件类型标识,检索所述路由管理器的域内路由映射表,获取本地可用于进行处理的事件处理器,生成事
件实例处理指令发送至其进行处理。
32.在可选的实施方式中,所述事件总线装置还包括注册器和跨域协调器,所述方法还包括基于所述注册器对所述组播网络中的信息进行注册的步骤,该步骤包括:
33.在所述事件总线装置所属的领域服务应用启动时,扫描所述领域服务应用内所有已声明的事件元信息和事件处理器元信息,并基于所述注册器完成事件类型和事件处理器注册,扫描所述领域服务应用配置,检索应用本地实例标识,生成事件处理器注册指令;其中,所述事件元信息包括事件类型标识和事件类型,所述事件处理器元信息包括事件处理器类型标识、事件类型标识和事件处理器本地入口信息;
34.基于所述注册器,将所述事件元信息和事件处理器元信息发送至所述路由管理器,并将所述事件处理器注册指令发送至所述跨域协调器,基于所述跨域协调器将所述事件处理器注册指令广播至组播网络;
35.基于所述路由管理器接收所述事件元信息和事件处理器元信息,创建事件类型标识对应事件处理器标识集合的域内路由映射表;
36.基于所述路由管理器接收所述跨域协调器发送的事件处理器注册指令,创建事件类型标识对应应用实例标识集合的跨域路由映射表。
37.第二方面,本发明实施例提供一种事件处理装置,应用于事件总线装置,所述事件处理装置包括信息获得模块和信息处理模块;
38.所述信息获得模块用于接收事件实例;
39.所述信息处理模块用于确定所述事件实例的事件类型,所述事件类型包括域内事件和跨域事件中的至少一种,在所述事件实例属于域内事件的情况下,按照第一处理策略进行处理,所述第一处理策略包括基于所述事件总线装置对所述事件实例进行域内处理;在所述事件实例属于跨域事件的情况下,按照第二处理策略进行处理,所述第二处理策略包括将所述事件实例进行广播,以使对应的目标事件总线装置对所述事件实例进行跨域处理。
40.在可选的实施方式中,所述事件总线装置包括事件监听器、路由管理器、域内处理器和跨域处理器;
41.所述信息获得模块用于基于所述事件监听器接收事件实例,并将所述事件实例发送至所述路由管理器;
42.所述信息处理模块用于基于所述路由管理器接收事件实例,确定所述事件实例的事件类型,在所述事件实例属于域内事件的情况下,生成事件实例处理指令并发送至所述域内处理器,基于所述域内处理器,将所述事件实例路由至对应的域内事件处理器进行处理;在所述事件实例属于跨域事件的情况下,生成事件实例处理指令并发送至所述跨域处理器,基于所述跨域处理器,根据所述事件实例处理指令生成事件实例传输指令,并将所述事件实例传输指令广播至组播网络中,以使与所述事件实例传输指令对应的目标跨域处理器对所述事件实例进行处理。
43.第三方面,本发明提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述实施方式任一项所述的事件处理方法。
44.第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质包括
计算机程序,所述计算机程序运行时控制所述计算机可读存储介质所在电子设备执行前述实施方式任一项所述的事件处理方法。
45.本发明实施例的有益效果包括,例如:通过对事件总线装置的巧妙设计,实现了对域内事件路由和跨域事件路由的可靠整合,从而实现对域内事件、跨域事件的可靠处理,提高了事件处理的合理性。
附图说明
46.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
47.图1示出了本发明实施例提供的一种应用场景示意图。
48.图2示出了本发明实施例提供的一种事件处理方法的流程示意图。
49.图3示出了本发明实施例提供的一种事件总线装置的结构示意图。
50.图4示出了本发明实施例提供的一种事件处理方法的另一流程示意图。
51.图5示出了本发明实施例提供的一种事件总线装置的交互架构示意图。
52.图6示出了本发明实施例提供的一种事件处理方法的另一流程示意图。
53.图7示出了本发明实施例提供的一种事件总线装置的功能模块图。
54.图标:100-电子设备;110-存储器;120-处理器;130-通信模块;140-事件处理装置;141-信息获得模块;142-信息处理模块。
具体实施方式
55.现今,领域建模设计可以将复杂的应用程序切分成多个松耦合的微服务,每个微服务应用(本实施例中又称领域服务应用、领域服务进程)可以独立进程运行,这就对事件总线提出了两个场景的事件路由述求:每个微服务进程内,域内模型之间的事件路由;微服务之间,跨域模型之间的事件路由。目前,可以通过axon framework等事件处理框架获得单一职责的简易事件总线、分布式事件总线来实现上述两类事件的路由能力。
56.经研究发现,上述实现方式存在以下问题:
57.1.如果单独使用简易事件总线,事件只能在进程内分发,域内模型间可以通过内存高速交互事件消息,但是,无法与域外模型实现事件协同。
58.2.如果单独使用分布式事件总线,应用运行时,大量的域内事件通过分布式事件总线进行分发会迅速消耗网络资源,同时,原来的内存级事件交互转成网络交互,也会降低事件分发效率。而实际用于跨域协同的模型事件往往只占应用全部事件的极小部分(微服务的高内聚,松耦合特性控制了跨域服务间交互的数量)。
59.3.如果在应用中同时引入简易事件总线和分布式事件总线,则面对应用开发,需要在开发过程中不停切换两套事件总线的使用,降低了开发效率,也增加了开发出错的概率。
60.基于上述研究,本发明实施例提供一种事件处理方案,通过对事件处理装置的巧妙配置,能够实现对域内事件路由和跨域事件路由的统一处理,从而提高事件处理的合理
性。
61.针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本发明实施例针对上述问题所提出的解决方案,都应该是发明人在发明过程中做出的贡献。
62.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
63.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
64.需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
65.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
66.需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
67.请参照图1,是本实施例提供的一种电子设备100的方框示意图,本实施例中的电子设备100可以为能够进行数据交互、处理的服务器、处理设备、处理平台等。例如,可以为事件处理框架中用于实现事件总线装置的设备。
68.所述电子设备100包括存储器110、处理器120及通信模块130。所述存储器110、处理器120以及通信模块130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
69.其中,存储器110用于存储程序或者数据。所述存储器110可以是,但不限于,随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electric erasable programmable read-only memory,eeprom)等。
70.处理器120用于读/写存储器110中存储的数据或程序,并执行相应地功能。
71.通信模块130用于通过所述网络建立所述电子设备100与其它通信终端之间的通信连接,并用于通过所述网络收发数据。
72.应当理解的是,图1所示的结构仅为电子设备100的结构示意图,所述电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
73.请结合参阅图2,为本发明实施例提供的一种事件处理方法的流程示意图,可以由图1所述电子设备100执行,例如可以由电子设备100中的处理器120执行。该事件处理方法
包括s110、s120和s130。
74.s110,接收事件实例。
75.s120,确定所述事件实例的事件类型,所述事件类型包括域内事件和跨域事件中的至少一种。
76.s130,在所述事件实例属于域内事件的情况下,按照第一处理策略进行处理,所述第一处理策略包括基于所述事件总线装置对所述事件实例进行域内处理;在所述事件实例属于跨域事件的情况下,按照第二处理策略进行处理,所述第二处理策略包括将所述事件实例进行广播,以使对应的目标事件总线装置对所述事件实例进行跨域处理。
77.通过上述流程,实现了对域内事件、跨域事件的可靠处理,通过对事件实例进行域内事件、跨域事件划分,针对域内事件、跨域事件分别按照适配的处理策略进行处理,提高了事件处理的合理性。
78.本实施例中,事件总线装置的实现架构可以灵活选择,只要能够如图2所示流程,对域内事件、跨域事件进行可靠处理即可。
79.请结合参阅图3,为本发明实施例提供的一种事件总线装置的结构示意图,本实施例中的事件总线装置可以基于图1所示电子设备实现。该事件总线装置可以包括事件监听器、路由管理器、域内处理器和跨域处理器。
80.基于图3所示架构,请结合参阅图4,为本发明实施例提供的一种事件处理方法的另一流程示意图。该事件处理方法包括s210、s220、s230和s240。
81.s210,基于所述事件监听器接收事件实例,并将所述事件实例发送至所述路由管理器。
82.s220,基于所述路由管理器接收事件实例,确定所述事件实例的事件类型,在所述事件实例属于域内事件的情况下,生成事件实例处理指令并发送至所述域内处理器;在所述事件实例属于跨域事件的情况下,生成事件实例处理指令并发送至所述跨域处理器。
83.s230,基于所述域内处理器,将所述事件实例路由至对应的域内事件处理器进行处理。
84.s240,基于所述跨域处理器,根据所述事件实例处理指令生成事件实例传输指令,并将所述事件实例传输指令广播至组播网络中,以使与所述事件实例传输指令对应的目标跨域处理器对所述事件实例进行处理。
85.通过将事件总线装置设计为集成事件监听器、路由管理器、域内处理器和跨域处理器,实现对域内事件、跨域事件的协同处理,灵活性较高,提高了事件处理的效率和可靠性。
86.s210中,事件实例可以来自于领域服务应用中的领域模型,相应地,基于所述事件监听器接收事件实例可以包括:基于所述事件监听器,接收所述领域服务应用中领域模型发出的事件实例。
87.示例性地,某领域a服务应用包括本实施例中图3所示事件总线装置和领域a模型,那么,s210中,可以基于事件监听器接收领域a服务应用中领域a模型发出的事件实例。
88.事件监听器监听领域服务应用中的所有事件,并将监听到的事件交由路由管理器进行事件路由。
89.s220中,基于路由管理器接收到的事件实例,可能来自于本领域服务应用中的领
域模型,由事件监听器监听并发送至路由管理器,也可能来自于其他领域服务应用。相应地,路由管理器接收到事件实例后,判断事件实例所属类型。
90.例如,事件实例可能对应于本领域服务应用(域内),也可能对应于其他领域服务应用(跨域),还可能即属于本领域服务应用(域内)也属于其他领域服务应用(跨域)。
91.将对应于本领域服务应用的事件实例发送至域内处理器,将对应于其他领域服务应用的事件实例发送至跨域处理器。将同时对应于本领域服务应用和其他领域服务应用的事件实例发送至域内处理器和跨域处理器。
92.其中,路由管理器中可以预先配置各数据、器件的对应关系,例如,可以通过唯一标识定义各数据、器件的对应关系。路由管理器从而基于预先配置判断将事件实例处理指令发送至域内处理器和跨域处理器中的至少一个。
93.示例性地,事件实例可以包括事件类型标识,路由管理器中可以预存有域内路由映射表和跨域路由映射表。路由管理器通过维护路由映射表,为跨域处理器和域内处理器提供事件路由指令。
94.s220中,可以根据所述事件实例的事件类型标识,检索所述域内路由映射表,确定是否存在本地可用的事件处理器,若是,生成事件实例处理指令并发送给所述域内处理器。根据所述事件实例的事件类型标识,检索所述跨域路由映射表,确定是否存在跨域可用的事件处理器,若存在跨域可用的事件处理器,生成事件实例处理指令并发送给所述跨域处理器。
95.其中,根据所述事件实例的事件类型标识,检索所述域内路由映射表,以及根据所述事件实例的事件类型标识,检索所述跨域路由映射表可以同步执行,也可以顺次执行。示例性地,为了尽可能提高事件处理效率,可以同步检索域内路由映射表和跨域路由映射表。为了尽可能节约处理资源,可以顺次执行,例如,先检索域内路由映射表,再检索跨域路由映射表,本实施例对此不做限制。
96.在将事件实例处理指令发送至域内处理器和/或跨域处理器的情况下,s230中的域内处理器用于接收所有的域内事件,并将域内事件路由至对应的域内事件处理器上,以完成域内事件处理。s240中的跨域处理器用于分发和接收跨域事件,将接收到的跨域事件过滤后发送至对应的域内处理器,以完成事件处理。从而完成域内事件和跨域事件的可靠处理。
97.示例性地,跨域处理器在接收到待分发的跨域事件的情况下,根据该跨域事件的事件实例处理指令生成事件实例传输指令并广播至组播网络中。各跨域处理器在接收到组播网络中其他跨域处理器广播的事件实例传输指令的情况下,确定自身是否为事件实例传输指令所对应的目标跨域处理器,若是,则将事件实例传输指令分发至自身所处的事件总线装置中的域内处理器上,以完成事件处理。若否,则丢弃事件实例传输指令。
98.本实施例中,s230和s240并不旨在对执行顺序进行限定,根据s220的处理结果,s230和s240可以仅执行其中某一个步骤,也可以二者同步执行。
99.请结合参阅图5,为了进一步提高事件处理的可靠性和合理性,事件总线装置还可以包括注册器和跨域协调器。其中,注册器用于负责注册领域内声明的所有事件类型和事件处理器。跨域协调器用于在不同领域间分发被注册的事件类型和事件处理器。
100.基于注册器,可以通过以下步骤实现对组播网络中信息的注册:在所述事件总线
装置所属的领域服务应用启动时,扫描所述领域服务应用内所有已声明的事件元信息和事件处理器元信息,并基于所述注册器完成事件类型和事件处理器注册;扫描所述领域服务应用配置,检索应用本地实例标识,生成事件处理器注册指令。其中,所述事件元信息包括事件类型标识和事件类型,所述事件处理器元信息包括事件处理器类型标识、事件类型标识和事件处理器本地入口信息,所述事件处理器注册指令包括事件处理器类型标识、事件类型标识和应用实例标识。
101.基于所述注册器,将所述事件元信息和事件处理器元信息发送至所述路由管理器,并将所述事件处理器注册指令发送至所述跨域协调器,基于所述跨域协调器将所述事件处理器注册指令广播至组播网络。从而基于所述路由管理器接收所述事件元信息和事件处理器元信息,创建事件类型标识对应事件处理器标识集合的域内路由映射表。基于所述路由管理器接收所述跨域协调器发送的事件处理器注册指令,创建事件类型标识对应应用实例标识集合的跨域路由映射表。
102.本实施例中,事件实例、事件实例处理指令、事件实例传输指令等包括的内容可以有多种形式,只要能可靠地实现事件处理便可。例如,在一种实现方式中,事件实例可以包括事件类型标识、事件实例标识和事件实例参数。事件实例处理指令可以包括事件实例标识、事件类型标识、事件实例参数和事件处理目标标识。
103.相应地,请结合参阅图6,根据所述事件实例处理指令生成事件实例传输指令可以通过s241、s242和s243实现。
104.s241,根据所述事件实例处理指令中的事件类型标识获取具体事件类型。
105.s242,将所述事件实例处理指令中的事件实例参数序列化。
106.s243,基于所述事件实例、具体事件类型、序列化后的事件实例参数生成事件实例传输指令。
107.所述事件实例传输指令包括事件实例标识、事件类型标识、事件实例参数内容和第一事件处理目标标识。
108.其中,所述事件实例标识用于唯一指定一个事件实例的标识;所述事件类型标识用于描述事件处理器所处理的事件类型;所述事件实例参数用于存放事件实例的具体参数信息;所述事件处理目标标识用于描述事件的具体处理目标,该事件处理目标标识使用事件处理器标识填充;所述事件实例参数内容用于存放事件实例的具体参数的序列化结果;所述第一事件处理目标标识用于指定处理该事件的应用实例标识。
109.相应地,将所述事件实例传输指令广播至组播网络中,以使与所述事件实例传输指令对应的目标跨域处理器对所述事件实例进行处理可以通过以下步骤实现:将所述事件实例传输指令广播至组播网络中,基于接收到所述事件实例传输指令的跨域处理器,确定所述事件实例传输指令中的第一事件处理目标标识是否与本地的应用实例标识匹配。若是,确定自身为所述事件实例传输指令所对应的目标跨域处理器,根据所述事件实例传输指令中的事件类型标识获取具体事件类型,将所述事件实例传输指令中的事件实例参数内容反序列化为事件实例参数,通过所述事件实例传输指令中的事件类型标识,检索所述路由管理器的域内路由映射表,获取本地可用于进行处理的事件处理器,生成事件实例处理指令发送至其进行处理。
110.为了更为清楚地阐述本案中的事件处理方案,以下述场景为例,对事件总线装置
的整体配置、实现原理进行举例说明。
111.请继续参阅图5,本实施例中的事件总线装置包含一个注册器、一个跨域协调器、一个路由管理器、一个跨域处理器、一个域内处理器和一个事件监听器。
112.注册器:用于负责注册领域内声明的所有事件类型和事件处理器。
113.跨域协调器:用于在不同领域间分发被注册的事件类型和事件处理器。
114.事件监听器:用于监听领域内的所有事件,并将监听到的事件交由路由管理器进行事件路由。
115.路由管理器:用于维护事件路由表,为跨域处理器和域内处理器提供事件路由指令。
116.跨域处理器:用于分发和接收跨域事件,同时将接收到的跨域事件过滤后发送至域内处理器。
117.域内处理器:用于接收所有的域内事件,并将域内事件路由至对应的域内事件处理器上。
118.基于上述架构,针对领域服务应用进行如下配置:
119.预先进行事件声明和事件处理器声明,通过注解或配置方式声明本领域涉及的所有事件元信息,事件元信息包含以下内容:
120.事件类型标识(event_id):在全域范围内,事件类型标识用于唯一定义一种事件类型。
121.事件类型(event_type):描述事件的类型信息(如事件类型定义的类路径),用于实现事件的序列化和反序列化处理。
122.事件描述(event_description):用于描述事件相关的具体说明。
123.通过注解或配置方式声明本领域涉及的所有事件处理器元信息,事件处理器元信息包含以下内容:
124.事件处理器类型标识(handler_id):在全域范围内,事件处理器类型标识用于唯一定义一种事件处理器类型。
125.事件类型标识(event_id):用于描述该事件处理器所处理的事件类型。
126.事件处理器本地入口信息(handler_target):用于声明该事件处理器对应的本地程序入口地址(如处理器实现的类路径及方法名)。
127.通过配置方式声明本领域的应用本地实例标识(application_name)。
128.基于上述配置,领域服务应用启动时,扫描本应用内所有已声明的事件元信息和事件处理器元信息,完成事件注册和事件处理器注册,注册流程如下:
129.领域服务应用启动时,注册器通过扫描注解或配置,检索应用内所有声明的事件元信息,生成事件元信息描述清单。该清单包括事件类型标识和对应的事件元信息组成的一张map映射表。
130.领域服务应用启动时,注册器通过扫描注解或配置,检索应用内所有声明的事件处理器元信息,生成事件处理器元信息描述清单。该清单包括事件处理器标识和对应的事件处理器元信息组成的一张map映射表。
131.领域服务应用启动时,注册器通过扫描应用配置,检索应用本地实例标识。同时根据生成的事件处理器元信息描述清单,生成事件处理器注册指令,指令包含以下内容:
132.事件处理器类型标识(handler_id):在全域范围内,事件处理器类型标识用于唯一定义一种事件处理器类型。
133.事件类型标识(event_id):用于描述该事件处理器所处理的事件类型。
134.应用实例标识(application_name):用于描述该处理器所属应用实例。
135.注册器将生成的事件元信息描述清单、事件处理器元信息描述清单发送给路由管理器,将生成的事件处理器注册指令发送给跨域协调器。
136.跨域协调器接收注册器发送的事件处理器注册指令,将该指令广播到组播网络。同时,跨域协调器接收组播网络其它应用节点广播的事件处理器注册指令,并将该指令发送到路由管理器。
137.路由管理器接收注册器发送的事件元信息描述清单、事件处理器元信息描述清单。创建事件类型标识对应事件处理器标识集合的本地(域内)路由映射表。如下表所示:
138.event_1[handler_a]event_2[handler_b,handler_c]event_3[handler_d]
…ꢀ
[0139]
路由管理器接收跨域协调器发送的事件处理器注册指令,创建事件类型标识对应应用实例标识集合的跨域路由映射表。如下表所示:
[0140]
event_1[application_a]event_2[application_b]event_3[]
…ꢀ
[0141]
在应用运行期间,应用中的领域模型发布具体的事件实例,通过事件总线进行事件路由,将事件实例送达对应的事件处理器进行处理。
[0142]
事件监听器接收应用中领域模型发出的具体事件实例。事件实例包含以下内容:
[0143]
事件实例标识(instance_id):用于唯一指定一个事件实例的标识。
[0144]
事件类型标识(event_id):用于描述该事件处理器所处理的事件类型。
[0145]
事件实例参数(parameters):用于存放该实例事件的具体参数信息。
[0146]
事件监听器将接收的事件实例发送给路由管理器。
[0147]
路由管理器接收事件监听器发送的事件实例,从中获取事件类型标识。
[0148]
路由管理器通过事件类型标识,检索本地路由映射表,若存在本地可用于进行处理的事件处理器集合,生成事件实例处理指令发送给域内处理器。事件实例处理指令包含以下内容:
[0149]
事件实例标识(instance_id):用于唯一指定一个事件实例的标识。
[0150]
事件类型标识(event_id):用于描述该事件处理器所处理的事件类型。
[0151]
事件实例参数(parameters):用于存放该实例事件的具体参数信息。
[0152]
事件处理目标标识(target_id):用于描述该事件的具体处理目标。此处使用事件处理器标识填充该事件处理目标标识。
[0153]
路由管理器通过事件类型标识,检索跨域路由映射表,若存在跨域可用于事件处理的应用实例标识集合,生成事件实例处理指令发送给跨域处理器。事件实例处理指令内
容如下:
[0154]
事件实例标识(instance_id):用于唯一指定一个事件实例的标识。
[0155]
事件类型标识(event_id):用于描述该事件处理器所处理的事件类型。
[0156]
事件实例参数(parameters):用于存放该实例事件的具体参数信息。
[0157]
事件处理目标标识(target_id):用于描述该事件的具体处理目标。此处使用应用实例标识填充该事件处理目标标识。
[0158]
跨域处理器接收路由管理器发送的事件实例处理指令,根据事件类型标识获取具体事件类型(event_type),然后将事件实例参数序列化后生成事件实例传输指令,并将该指令广播到组播网络内。事件实例传输指令包含以下内容:
[0159]
事件实例标识(instance_id):用于唯一指定一个事件实例的标识。
[0160]
事件类型标识(event_id):用于描述该事件处理器所处理的事件类型。
[0161]
事件实例参数内容(parameters_message):用于存放该实例事件的具体参数的序列化结果。
[0162]
事件处理目标标识(target_id):用于处理该事件的应用实例标识。
[0163]
跨域处理器接收组播网络中其它应用节点广播的事件实例传输指令,如果该指令的事件处理目标标识等于应用本地实例标识,则跨域处理器根据事件类型标识获取具体事件类型event_type),然后将事件实例传输指令中的事件实例参数内容反序列化为事件实例参数。通过该指令的事件类型标识,检索路由管理器的本地路由映射表,获取本地可用于进行处理的事件处理器集合,生成事件实例处理指令发送给域内处理器。如果该指令的事件处理目标标识不等于应用本地实例标识,则域内处理器接收路由管理器和跨域处理器发送的事件实例处理指令,通过事件处理器标识获取事件处理器本地入口信息,将该事件送达本地用于处理的具体类和方法上,实现最终的事件路由。
[0164]
基于上述事件处理方法,将现有技术实践中的域内事件路由和跨域事件路由能力整合到一个统一的事件总线装置上,通过应用启动时的自动扫描获取事件类型和事件处理器的元信息,通过组播网络将上述元信息在各个应用节点中进行广播分发,实现各应用节点的统一注册。在系统运行期间,可以自动根据路由管理器中统一注册的跨域路由映射表和本地路由映射表,自动实现不同的事件路由策略。由于跨域事件的数量是可控的,无外部应用注册事件处理器的事件类型不会进入跨域事件传输,大大降低了网络资源的消耗。跨域事件通过组播网络进行广播,非本域事件可以在入口处被过滤,拥有较高的处理性能。域内事件直接通过内存本地路由映射表进行分发,保证了域内事件的处理效率。领域模型的开发人员在进行业务逻辑开发时,只需要面对一个事件总线装置,事件具体在何处处理可以做到开发人员无感,提升开发效率,同时也降低了系统出错的风险,确保了事件处理的合理性和可靠性。
[0165]
为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种事件处理装置的实现方式。请参阅图7,图7为本发明实施例提供的一种事件处理装置140的功能模块图,该事件处理装置140可以应用于图1所示用以实现事件总线装置的电子设备。需要说明的是,本实施例所提供的事件处理装置140,其基本原理及产生的技术效果和上述方法实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的方法实施例中相应内容。该事件处理装置140包括信息获得模块141和信息处理模块142。
[0166]
其中,所述信息获得模块141用于接收事件实例。
[0167]
信息处理模块142用于确定所述事件实例的事件类型,所述事件类型包括域内事件和跨域事件中的至少一种,在所述事件实例属于域内事件的情况下,按照第一处理策略进行处理,所述第一处理策略包括基于所述事件总线装置对所述事件实例进行域内处理;在所述事件实例属于跨域事件的情况下,按照第二处理策略进行处理,所述第二处理策略包括将所述事件实例进行广播,以使对应的目标事件总线装置对所述事件实例进行跨域处理。
[0168]
在事件总线装置包括事件监听器、路由管理器、域内处理器和跨域处理器的情况下,所述信息获得模块141用于基于所述事件监听器接收事件实例,并将所述事件实例发送至所述路由管理器。
[0169]
所述信息处理模块142用于基于所述路由管理器接收事件实例,确定所述事件实例的事件类型,在所述事件实例属于域内事件的情况下,生成事件实例处理指令并发送至所述域内处理器,基于所述域内处理器,将所述事件实例路由至对应的域内事件处理器进行处理;在所述事件实例属于跨域事件的情况下,生成事件实例处理指令并发送至所述跨域处理器,基于所述跨域处理器,根据所述事件实例处理指令生成事件实例传输指令,并将所述事件实例传输指令广播至组播网络中,以使与所述事件实例传输指令对应的目标跨域处理器对所述事件实例进行处理。
[0170]
在上述基础上,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,所述计算机程序运行时控制所述计算机可读存储介质所在电子设备执行上述的事件处理方法。
[0171]
采用本发明实施例中的上述方案,可以维护事件分类元信息,实现域内事件和跨域事件的智能识别,降低跨域事件交互的网络压力,实现分布式下的事件高性能路由,模型开发者只需面向一个统一的事件总线,便可实现事件的发布与订阅,提高了事件处理的合理性和可靠性。
[0172]
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0173]
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0174]
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计
算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0175]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种事件处理方法,其特征在于,应用于事件总线装置,所述方法包括:接收事件实例;确定所述事件实例的事件类型,所述事件类型包括域内事件和跨域事件中的至少一种;在所述事件实例属于域内事件的情况下,按照第一处理策略进行处理,所述第一处理策略包括基于所述事件总线装置对所述事件实例进行域内处理;在所述事件实例属于跨域事件的情况下,按照第二处理策略进行处理,所述第二处理策略包括将所述事件实例进行广播,以使对应的目标事件总线装置对所述事件实例进行跨域处理。2.根据权利要求1所述的事件处理方法,其特征在于,所述事件总线装置包括事件监听器、路由管理器、域内处理器和跨域处理器;所述接收事件实例,包括:基于所述事件监听器接收事件实例,并将所述事件实例发送至所述路由管理器;所述确定所述事件实例的事件类型,包括:基于所述路由管理器接收事件实例,确定所述事件实例的事件类型;所述在所述事件实例属于域内事件的情况下,按照第一处理策略进行处理,包括:基于所述路由管理器,在所述事件实例属于域内事件的情况下,生成事件实例处理指令并发送至所述域内处理器,基于所述域内处理器,将所述事件实例路由至对应的域内事件处理器进行处理;所述在所述事件实例属于跨域事件的情况下,按照第二处理策略进行处理,包括:基于所述路由管理器,在所述事件实例属于跨域事件的情况下,生成事件实例处理指令并发送至所述跨域处理器,基于所述跨域处理器,根据所述事件实例处理指令生成事件实例传输指令,并将所述事件实例传输指令广播至组播网络中,以使与所述事件实例传输指令对应的目标跨域处理器对所述事件实例进行处理。3.根据权利要求2所述的事件处理方法,其特征在于,所述方法还包括:所述跨域处理器在接收到组播网络中其他跨域处理器广播的事件实例传输指令的情况下,确定自身是否为所述事件实例传输指令所对应的目标跨域处理器;若是,对所述事件实例传输指令进行处理;若否,丢弃所述事件实例传输指令。4.根据权利要求2所述的事件处理方法,其特征在于,所述事件实例包括事件类型标识,所述路由管理器中预存有域内路由映射表和跨域路由映射表,所述基于所述路由管理器接收事件实例,确定所述事件实例的事件类型,包括:根据所述事件实例的事件类型标识,检索所述域内路由映射表,确定是否存在本地可用的事件处理器,若是,确定所述事件实例属于域内事件;根据所述事件实例的事件类型标识,检索所述跨域路由映射表,确定是否存在跨域可用的事件处理器,若存在跨域可用的事件处理器,确定所述事件实例属于跨域事件。5.根据权利要求4所述的事件处理方法,其特征在于,所述事件实例还包括事件实例标识和事件实例参数;所述事件实例处理指令包括事件实例标识、事件类型标识、事件实例参数和事件处理目标标识;
所述根据所述事件实例处理指令生成事件实例传输指令,包括:根据所述事件实例处理指令中的事件类型标识获取具体事件类型;将所述事件实例处理指令中的事件实例参数序列化;基于所述事件实例、具体事件类型、序列化后的事件实例参数生成事件实例传输指令,所述事件实例传输指令包括事件实例标识、事件类型标识、事件实例参数内容和第一事件处理目标标识;其中,所述事件实例标识用于唯一指定一个事件实例的标识;所述事件类型标识用于描述事件处理器所处理的事件类型;所述事件实例参数用于存放事件实例的具体参数信息;所述事件处理目标标识用于描述事件的具体处理目标,该事件处理目标标识使用事件处理器标识填充;所述事件实例参数内容用于存放事件实例的具体参数的序列化结果;所述第一事件处理目标标识用于指定处理该事件的应用实例标识。6.根据权利要求5所述的事件处理方法,其特征在于,所述将所述事件实例传输指令广播至组播网络中,以使与所述事件实例传输指令对应的目标跨域处理器对所述事件实例进行处理,包括:将所述事件实例传输指令广播至组播网络中;基于接收到所述事件实例传输指令的跨域处理器,确定所述事件实例传输指令中的第一事件处理目标标识是否与本地的应用实例标识匹配;若是,确定自身为所述事件实例传输指令所对应的目标跨域处理器,根据所述事件实例传输指令中的事件类型标识获取具体事件类型,将所述事件实例传输指令中的事件实例参数内容反序列化为事件实例参数,通过所述事件实例传输指令中的事件类型标识,检索所述路由管理器的域内路由映射表,获取本地可用于进行处理的事件处理器,生成事件实例处理指令发送至其进行处理。7.根据权利要求2至6任意一项所述的事件处理方法,其特征在于,所述事件总线装置还包括注册器和跨域协调器,所述方法还包括基于所述注册器对所述组播网络中的信息进行注册的步骤,该步骤包括:在所述事件总线装置所属的领域服务应用启动时,扫描所述领域服务应用内所有已声明的事件元信息和事件处理器元信息,并基于所述注册器完成事件类型和事件处理器注册,扫描所述领域服务应用配置,检索应用本地实例标识,生成事件处理器注册指令;其中,所述事件元信息包括事件类型标识和事件类型,所述事件处理器元信息包括事件处理器类型标识、事件类型标识和事件处理器本地入口信息;基于所述注册器,将所述事件元信息和事件处理器元信息发送至所述路由管理器,并将所述事件处理器注册指令发送至所述跨域协调器,基于所述跨域协调器将所述事件处理器注册指令广播至组播网络;基于所述路由管理器接收所述事件元信息和事件处理器元信息,创建事件类型标识对应事件处理器标识集合的域内路由映射表;基于所述路由管理器接收所述跨域协调器发送的事件处理器注册指令,创建事件类型标识对应应用实例标识集合的跨域路由映射表。8.一种事件处理装置,其特征在于,应用于事件总线装置,所述事件处理装置包括信息获得模块和信息处理模块;
所述信息获得模块用于接收事件实例;所述信息处理模块用于确定所述事件实例的事件类型,所述事件类型包括域内事件和跨域事件中的至少一种,在所述事件实例属于域内事件的情况下,按照第一处理策略进行处理,所述第一处理策略包括基于所述事件总线装置对所述事件实例进行域内处理;在所述事件实例属于跨域事件的情况下,按照第二处理策略进行处理,所述第二处理策略包括将所述事件实例进行广播,以使对应的目标事件总线装置对所述事件实例进行跨域处理。9.根据权利要求8所述的事件处理装置,其特征在于,所述事件总线装置包括事件监听器、路由管理器、域内处理器和跨域处理器;所述信息获得模块用于基于所述事件监听器接收事件实例,并将所述事件实例发送至所述路由管理器;所述信息处理模块用于基于所述路由管理器接收事件实例,确定所述事件实例的事件类型,在所述事件实例属于域内事件的情况下,生成事件实例处理指令并发送至所述域内处理器,基于所述域内处理器,将所述事件实例路由至对应的域内事件处理器进行处理;在所述事件实例属于跨域事件的情况下,生成事件实例处理指令并发送至所述跨域处理器,基于所述跨域处理器,根据所述事件实例处理指令生成事件实例传输指令,并将所述事件实例传输指令广播至组播网络中,以使与所述事件实例传输指令对应的目标跨域处理器对所述事件实例进行处理。10.一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至7任一项所述的事件处理方法。11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机程序,所述计算机程序运行时控制所述计算机可读存储介质所在电子设备执行权利要求1至7任一项所述的事件处理方法。
技术总结
本发明的实施例提供了一种事件处理方法、装置、设备和介质,涉及互联网技术领域,方法包括:接收事件实例,并确定事件实例的事件类型,事件类型包括域内事件和跨域事件中的至少一种,在事件实例属于域内事件的情况下,按照第一处理策略进行处理,第一处理策略包括基于事件总线装置对事件实例进行域内处理,在事件实例属于跨域事件的情况下,按照第二处理策略进行处理,第二处理策略包括将事件实例进行广播,以使对应的目标事件总线装置对事件实例进行跨域处理,从而提升事件处理的合理性。从而提升事件处理的合理性。从而提升事件处理的合理性。
技术研发人员:许欣芃 徐进 童世红 周翔 周淼
受保护的技术使用者:恒生电子股份有限公司
技术研发日:2023.06.28
技术公布日:2023/9/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:掩膜板及其使用方法、掩膜板组件与流程 下一篇:农林作业系统及其控制方法与流程