CN110471780B - 分布式事件处理装置、终端和计算机存储介质 - Google Patents
分布式事件处理装置、终端和计算机存储介质 Download PDFInfo
- Publication number
- CN110471780B CN110471780B CN201910775438.XA CN201910775438A CN110471780B CN 110471780 B CN110471780 B CN 110471780B CN 201910775438 A CN201910775438 A CN 201910775438A CN 110471780 B CN110471780 B CN 110471780B
- Authority
- CN
- China
- Prior art keywords
- event
- event processing
- database
- distributed
- message
- 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
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种分布式事件处理装置、终端和计算机存储介质,该装置包括:事件处理总线和至少一事件处理模块,事件处理总线包含事件发布子模块;事件发布子模块用于产生待处理事件时并将待处理事件存储于数据库中并通过数据库进行消息发布;事件处理总线用于在接收到数据库发布的所述消息时,从消息中获取事件类型名称和事件ID设置分布式锁并进行消息分发;各事件处理模块用于接收所述事件消息并由获取到分布式锁的一事件处理模块启动事件执行器用于事件处理。本发明的技术方案基于特定格式进行消息分布并通过事件处理总线实现统一处理事件的分发,并结合分布式锁使分布式事件得到唯一处理,操作简洁,提高了实时性及可靠性等。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种分布式事件处理装置、终端和计算机存储介质。
背景技术
在软件后台程序中,不同的业务会产生不同的事件,诸如定时事件、告警事件、存储事件等等,对于这些不同种类的事件处理是后台功能开发中的一个相对比较繁琐的地方。在大多数事件处理程序中,对不同的事件都是进行分门别类的处理,为了对事件的统一管理、分发以及在应用分布式环境中,需要设计一种分布式事件处理的框架来满足多种应用场景。
然而,现有的分布式事件处理方式却往往至少存在以下一种或多种问题:一是过于冗余且不实用,即框架中包含一些实际应用非常少的功能,如libevent框架,包含了缓冲区、信号等实际应用非常少的功能;二是难以理解,例如ACE框架,过多的使用回调函数、虚函数、消息管道等,再加上消息的优先级处理,使得对整个框架的流程理解比较困难,导致设计周期长等;三是调试验证困难,由于事件处理流程太冗长,容易加大对故障的定位难度,有的还加入了权限处理或逐层解析,往往导致一个事件产生后需要经过多个节点,这样使得发生异常时追踪链路比较长,消耗时间长等等。
发明内容
鉴于上述问题,本发明提供了一种分布式事件处理装置、终端和计算机存储介质,通过基于特定格式进行消息分布并采用事件处理总线统一处理事件的分发,及结合分布式锁实现分布式事件的唯一处理等,操作简洁,提高了实时性及可靠性等。
本发明的一个实施方式提供一种分布式事件处理装置,包括:事件处理总线和至少一事件处理模块,各所述事件处理模块均与所述事件处理总线连接,所述事件处理总线包含事件发布子模块;
所述事件发布子模块用于产生待处理事件,并将所述待处理事件存储于数据库中并通过所述数据库进行消息发布;所述消息中包含所述待处理事件对应的事件类型名称和根据所述待处理事件的参数生成的事件ID;
所述事件处理总线用于当接收到所述数据库发布的所述消息时,从所述消息中获取所述事件类型名称和所述事件ID,并根据所述事件类型名称和所述事件ID设置对应的分布式锁并进行事件消息分发;
各所述事件处理模块分别用于接收所述事件消息,并由获取到所述分布式锁的一所述事件处理模块启动对应的事件执行器,以使所述事件执行器从所述分布式锁中取出所述事件ID并根据所述事件ID从所述数据库中获取所述待处理事件的参数信息并调用对应的事件处理函数进行事件处理。
进一步地,在上述的分布式事件处理装置中,所述事件处理总线接收所述数据库发布的所述消息,之前还包括:
各事件处理模块初始化对应的事件执行器,以使所述事件执行器将所述事件处理模块中的至少一事件类型名称和对应的事件处理模块名称预先注册到所述事件处理总线上;
所述事件处理总线对每一所述事件类型名称添加第一预设字段以生成对应的唯一类型标识,并将各唯一类型标识以集合形式存储于所述数据库中;其中,每一所述唯一类型标识与对应的事件处理模块名称进行关联。
进一步地,在上述的分布式事件处理装置中,还包括:所述事件处理总线从所述数据库中取出所有唯一类型标识,并将各唯一类型标识中的所述第一预设字段替换为第二预设字段后添加订阅发布模式以用于接收及分发所订阅的数据库中的消息。
进一步地,在上述的分布式事件处理装置中,所述事件发布子模块将所述待处理事件存储于数据库中并通过所述数据库进行消息发布,包括:
所述事件发布子模块将所述待处理事件的参数序列化以生成对应的事件ID,并将所述事件ID作为关键字存储于数据库中;
所述事件发布子模块根据所述待处理事件对应的事件类型名称添加第一预设字段以生成对应的唯一类型标识,并将所述对应的唯一类型标识添加发布模式后通过所述数据库进行消息发布。
进一步地,在上述的分布式事件处理装置中,所述事件处理总线根据所述事件类型名称和所述事件ID设置对应的分布式锁,包括:
所述事件处理总线根据所述事件类型名称确定对应的事件处理模块名称,并将所述事件处理模块名称作为分布式锁的键值,以及将所述事件ID与所述键值关联存储于所述分布式锁中。
进一步地,在上述的分布式事件处理装置中,所述事件处理总线根据所述事件类型名称和所述事件ID进行事件消息分发,包括:
所述事件处理总线利用所述事件类型名称和所述事件ID组合生成一类型标识关键字,并将所述类型标识关键字添加发布模式以用于事件消息分发。
进一步地,在上述的分布式事件处理装置中,所述事件处理总线对每一所述事件类型名称添加第一预设字段以生成对应的唯一类型标识,包括:
所述事件处理总线在每一所述事件类型名称的名称头部添加第一预设字段以生成所述唯一类型标识。
进一步地,在上述的分布式事件处理装置中,所述事件处理总线包含事件监听子模块;
所述事件处理总线在订阅所述数据库中的消息时通过所述事件监听子模块实时监听并接收所述数据库发布的消息。
本发明的另一实施例还提出一种终端,所述终端包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序以采用上述的分布式事件处理装置。
本发明的又一实施例还提出一种计算机存储介质,其存储计算机程序,在所述计算机程序被执行时,采用上述的分布式事件处理装置。
本发明的技术方案通过数据库并基于特定格式进行消息发布,并采用事件处理总线统一处理事件的分发,同时结合分布式锁实现分布式事件的唯一处理等,简洁明了,提高了实时性,可轻量地实现事件处理的全流程。另外,结合分布式锁的处理方式,使得每一事件能够得到唯一处理,可使该方法能够应用于实时性更高的场合,以及大量事件需并发处理的场景等。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了本发明实施例的分布式事件处理装置的第一结构示意图;
图2示出了本发明实施例的分布式事件处理装置的应用示意图;
图3示出了本发明实施例的分布式事件处理装置的流程示意图。
主要元件符号说明:
100-分布式事件处理装置;10-事件处理总线;11-事件发布子模块;20-事件处理模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
实施例1
请参照图1,本实施例提出一种分布式事件处理装置100,可应用于如平板电脑、计算机等终端的后台事件处理,通过利用数据库和事件处理总线实现事件消息的发布及分发,并结合分布式锁等进行分布式唯一处理,可方便大量事件的并发处理等等。下面对该分布式事件处理装置100进行详细说明。
如图1所示,该分布式事件处理装置100包括事件处理总线10和至少一事件处理模块20,各事件处理模块20均与该事件处理总线10连接,其中,该事件处理总线10包含事件发布子模块11,即软件层面定义的事件发布函数。可以理解,该事件处理总线10为软件层面定义的事件总线函数。
本实施例中,事件发布子模块11用于产生待处理事件,并将所述待处理事件存储于一数据库中并通过所述数据库进行消息发布。其中,所述消息中包含所述待处理事件对应的事件类型名称和根据所述待处理事件的参数生成的事件ID。
示范性地,如图2所示,当一事件被外部触发时,事件发布子模块11将相应地产生一待处理事件并将该待处理事件按照预设事件格式存储于数据库中,然后通过该数据库将该待处理事件进行消息发布。例如,该预设事件格式可包括事件发布子模块11对该待处理事件的传递参数进行序列化以生成对应的事件ID,并将该事件ID作为关键字存储于数据库中。而该数据库作为缓存数据库,可采用预设关联的关系型数据库等。可以理解,通过查找该事件ID可以从该数据库中获取到该待处理事件的传递参数等详细信息。
本实施例中,该事件发布子模块11还用于对该待处理事件对应的事件类型名称添加第一预设字段以生成对应的唯一类型标识,并将该对应的唯一类型标识添加发布模式后通过该数据库进行消息发布。
可以理解,该待处理事件对应于一事件类型,通过该对应的事件类型名称和该第一预设字段可组合形成一唯一类型标识,即唯一的key。通过将该唯一的key添加为发布模式,即作为发布者后通过数据库进行消息发布。其中,可在该唯一key的字段末尾添加上述的事件ID以使其生成的消息中携带事件ID信息。本实施例中,上述的第一预设字段可以是预设设定的通用字段,当然也可以是动态生成的随机字段等,具体根据实际需求设定。
本实施例中,事件处理总线10用于当接收到所述数据库发布的所述消息时,从所述消息中获取所述事件类型名称和所述事件ID,并根据所述事件类型名称和所述事件ID设置对应的分布式锁并进行事件消息分发。
其中,事件处理总线10包含事件监听子模块,即事件监听函数,所述事件处理总线10在订阅所述数据库中的消息时通过所述事件监听子模块实时监听并接收所述数据库发布的消息。示范性地,当事件处理总线10通过该事件监听子模块监听到数据库发布的消息后,将从获取的该消息中获取该待处理事件的事件类型名称和事件ID,进而用于分布式锁的设置及事件消息的分发。
本实施例中,每一事件类型名称对应于一事件执行器。示范性地,事件处理总线10进行分布式锁设置时,将根据该事件类型名称确定对应的事件处理模块名称,并根据所述事件处理模块名称作为分布式锁的键值,以及将所述事件ID与所述键值关联存储于该分布式锁中。
可以理解,通过该事件处理模块名称这一键值可以快速从分布式锁列表中获取该待处理事件的分布式锁并获取该分布式锁中的该事件ID。通过分布式锁的设置可以使得只有一个事件处理模块20能拿到该分布式锁并处理该事件,尤其是分布式部署的场合,可防止出现相同的各事件执行器出现竞争或并发等现象,而对于其他未获得该分布式锁的事件执行器将等待新的事件到来。
其中,事件处理总线10在进行事件消息分发时,将利用该待处理事件的事件类型名称和事件ID组合生成一类型标识关键字,即key,并将所述类型标识关键字key添加发布模式以用于消息分发,例如,可分发到各事件处理模块20对应的事件队列中。
本实施例中,各所述事件处理模块20分别用于接收所述事件消息,并由获取到所述分布式锁的一所述事件处理模块20启动对应的事件执行器,以使所述事件执行器从所述分布式锁中取出所述事件ID并根据所述事件ID从所述数据库中获取所述待处理事件的参数信息并调用对应的事件处理函数进行事件处理。
示范性地,当存在分布式部署时,各事件处理模块20将通过订阅模式订阅到事件处理总线10分发的该事件消息,并当一事件处理模块20在接收到该事件消息且获取到该分布式锁后,该事件处理模块20将启动对应的事件执行器以进行执行该待处理事件。示范性地,该事件处理模块20将启动对应的事件处理器,进而使该事件执行器从该分布式锁中取出该事件ID。于是,该事件执行器将根据该事件ID从数据库中获取该待处理事件的详细参数信息,例如,若为告警事件,该详细参数信息可包括告警信息内容、被告警对象等等。于是,事件执行器将根据这些参数信息来调用预先注册的事件处理函数来进行事件执行,直到事件执行结束。
进一步地,该分布式事件处理装置100中的事件处理总线10还用于事件的预先注册和对数据库的消息订阅处理等。
本实施例中,各事件处理模块20还用于初始化对应的事件执行器,以使所述事件执行器将所述事件处理模块20中的至少一事件类型名称和对应的事件处理模块名称预先注册到事件处理总线10上。
一个事件处理模块20对应一个事件执行器,而一个事件执行器可负责多个事件类型。具体地,事件处理模块20对相应的事件执行器进行初始化处理后,事件执行器将把该事件执行器中的预先定义的至少一事件类型的事件类型名称和事件处理模块名称注册到事件处理总线10上,即EventBus,以用于完成事件的注册。可以理解,一个事件类型对应有一个唯一的事件类型名称和事件处理模块名称。
进一步地,该事件处理总线10还用于对注册的每一所述事件类型名称添加第一预设字段以生成对应的唯一类型标识,并将各唯一类型标识以集合形式存储于所述数据库中。其中,每一唯一类型标识与对应的事件处理模块名称进行关联。
示范性地,事件处理总线10将对预先注册的各事件类型名称进行字段添加预处理以生成一个唯一类型标识。优选地,可在各事件类型名称的名称头部添加第一预设字段以组成一个唯一类型标识。可以理解,所述的名称头部是指该事件类型名称这一字段的字段开头,即通过在名称字段的前面添加一个预设的通用字段生成一个唯一的key。例如,若该第一预设字段采用Event这一通用字段,则生成的唯一key的形式为Event_XXX。可选地,生成的唯一key的字段末尾可添加对应的事件ID等等。可以理解,该第一预设字段是一个通用的字段,从各唯一key的字面上无法区别该事件类型名称对应的事件处理模块20。于是,将生成的唯一key与对应的事件处理模块名称进行关联处理。随后,将各唯一的key以集合形式存储到数据库,即以集合key进行存储。可以理解,通过该数据库中存储的各唯一类型标识key可以查找到唯一的事件类型。同时,通过采用事件类型名称和事件处理模块名称组合进行事件注册,便于在产生相应的事件时能根据事件类型名称快速找开对应的事件分发的对象,即事件处理模块20。
进一步地,该事件处理总线10还用于从所述数据库中取出上述所有的唯一类型标识,并将各唯一类型标识中的所述第一预设字段替换为第二预设字段后添加订阅发布模式以用于接收及分发所订阅的数据库中的消息。可以理解,将替换后生成的新的唯一类型标识添加订阅-发布模式,使得事件处理总线10将作为消息的订阅者和发布者,其中,作为订阅者,事件处理总线10将订阅数据库中发布的与上述注册的事件类型相关的消息,而作为发布者,事件处理总线10将订阅到的消息进行消息分发。本实施例根据每一个事件类型名称生成的唯一key注册到事件处理总线10并由事件处理总线10订阅该key,从而实现事件在不同组件中的对应联系。可以理解,采用事件处理总线这一管理模式,并基于数据库通过订阅发布方式来统一处理各事件类型的注册和分发,步骤简洁,可提高事件处理效率等。
本实施例中,不同的事件类型对应添加的第二预设字段不同,该第二预设字段用于使事件处理总线10能够从该唯一类型标识中直接识别该事件类型对应的事件处理模块20。示范性地,该第二预设字段可采用事件处理模块名称字段。其中,不同的事件处理模块20,其对应的handle name(即事件处理模块名称)字段不同。可以理解,由于上述的第一预设字段为通用字段,故基于通用字段生成的各唯一类型标识将无法从其字段层面识别出哪一事件类型对应于哪一事件处理模块20。通过将取出的待订阅的事件类型的唯一类型标识进行字段替换,可使事件处理总线10能够根据接收到的待处理事件消息对应的事件类型名称直接识别之前已注册的对应事件处理模块20,进而便于事件处理流程跟踪等。
如图3所示,下面对该分布式事件处理装置100的各模块的工作流程进行说明。
步骤S1,各事件处理模块20初始化对应的事件执行器。
步骤S2,各所述事件执行器将各所述事件处理模块20中的至少一事件类型名称和对应的事件处理模块名称注册到事件处理总线10上。
步骤S3,事件处理总线10将每一事件类型名称进行第一预设字段添加以生成对应的唯一类型标识,并将各唯一类型标识以集合形式存储于一数据库中;其中,每一唯一类型标识与对应的事件处理模块名称进行关联。
步骤S4,事件处理总线10从所述数据库中取出所有唯一类型标识,并将各唯一类型标识中的所述第一预设字段替换为第二预设字段后添加订阅发布模式以用于接收及分发所订阅的数据库中的消息。
步骤S5,当产生待处理事件时,事件发布子模块11将所述待处理事件存储于一数据库中并通过所述数据库进行消息发布。其中,所述消息中包含所述待处理事件对应的事件类型名称和根据所述待处理事件的参数生成的事件ID。
步骤S6,当事件处理总线10通过事件监听子模块监听并接收到所述数据库发布的所述消息时,从所述消息中获取所述事件类型名称和所述事件ID,并根据所述事件类型名称和所述事件ID设置对应的分布式锁并进行事件消息分发。
步骤S7,各事件处理模块20分别接收所述事件消息。
步骤S8,由获取到所述分布式锁的一所述事件处理模块20启动对应的事件执行器,以使所述事件执行器从所述分布式锁中取出所述事件ID并根据所述事件ID从所述数据库中获取所述待处理事件的参数信息并调用对应的事件处理函数进行事件处理。
通过以上步骤可以实现事件的注册及分发以及分布式处理这一整个事件处理流程。可以理解,上述的各步骤对应于各模块的功能,故在此不再详述。
本实施例的分布式事件处理装置摒弃现有事件处理的繁琐设计及重复性设计,从事件处理的整个流程入手,采用事件处理总线统一处理事件的注册及分发,并结合分布式锁实现分布式事件的唯一处理等,即针对使用场景中事件注册、事件分发及事件分布式处理方式进行处理,不包含过多冗余功能,简洁明了。其中,基于事件类型名称和事件处理模块名称这一特定格式的事件注册,便于在产生相应事件时能快速找开对应的事件消息分发的对象,提高了实时性,可轻量地实现事件处理的全流程。另外,结合分布式锁的处理方式,可保证每一事件得到唯一处理而不会出现竞争现象,从而使得该方法可应用于实时性更高的场合,以及大量事件需并发处理的场景等。
本发明还提供了一种终端,该终端可以包括计算机、平板电脑等。该终端包括存储器和处理器,存储器可用于存储计算机程序,处理器通过运行所述计算机程序,从而使终端执行上述分布式事件处理装置中的各个模块的功能。
上述的存储器可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明还提供了一种计算机存储介质,用于储存上述终端中使用的所述计算机程序。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (9)
1.一种分布式事件处理装置,其特征在于,包括:事件处理总线和至少一事件处理模块,各所述事件处理模块均与所述事件处理总线连接,所述事件处理总线包含事件发布子模块;
所述事件发布子模块用于产生待处理事件,并将所述待处理事件存储于一数据库中并通过所述数据库进行消息发布;所述消息中包含所述待处理事件对应的事件类型名称和根据所述待处理事件的参数生成的事件ID;
所述事件处理总线用于当接收到所述数据库发布的所述消息时,从所述消息中获取所述事件类型名称和所述事件ID,并根据所述事件类型名称和所述事件ID设置对应的分布式锁并进行事件消息分发;
各所述事件处理模块分别用于接收所述事件消息,并由获取到所述分布式锁的一所述事件处理模块启动对应的事件执行器,以使所述事件执行器从所述分布式锁中取出所述事件ID并根据所述事件ID从所述数据库中获取所述待处理事件的参数信息并调用对应的事件处理函数进行事件处理;
所述事件发布子模块将所述待处理事件存储于数据库中并通过所述数据库进行消息发布,包括:
所述事件发布子模块对所述待处理事件的参数序列化以生成对应的事件ID,并将所述事件ID作为关键字存储于数据库中;
所述事件发布子模块根据所述待处理事件对应的事件类型名称添加第一预设字段以生成对应的唯一类型标识,并将所述对应的唯一类型标识添加发布模式后通过所述数据库进行消息发布。
2.根据权利要求1所述的分布式事件处理装置,其特征在于,所述事件处理总线接收所述数据库发布的所述消息,之前还包括:
各事件处理模块初始化对应的事件执行器,以使所述事件执行器将所述事件处理模块中的至少一事件类型名称和对应的事件处理模块名称预先注册到所述事件处理总线上;
所述事件处理总线对每一所述事件类型名称添加第一预设字段以生成对应的唯一类型标识,并将各唯一类型标识以集合形式存储于所述数据库中;其中,每一所述唯一类型标识与对应的事件处理模块名称进行关联。
3.根据权利要求2所述的分布式事件处理装置,其特征在于,还包括:
所述事件处理总线从所述数据库中取出所有唯一类型标识,并将各唯一类型标识中的所述第一预设字段替换为第二预设字段后添加订阅发布模式以用于接收及分发所订阅的数据库中的消息。
4.根据权利要求1所述的分布式事件处理装置,其特征在于,所述事件处理总线根据所述事件类型名称和所述事件ID设置对应的分布式锁,包括:
所述事件处理总线根据所述事件类型名称确定对应的事件处理模块名称,并将所述事件处理模块名称作为分布式锁的键值,以及将所述事件ID与所述键值关联存储于所述分布式锁中。
5.根据权利要求1所述的分布式事件处理装置,其特征在于,所述事件处理总线根据所述事件类型名称和所述事件ID进行事件消息分发,包括:
所述事件处理总线利用所述事件类型名称和所述事件ID组合生成一类型标识关键字,并将所述类型标识关键字添加发布模式以用于事件消息分发。
6.根据权利要求2所述的分布式事件处理装置,其特征在于,所述事件处理总线对每一所述事件类型名称添加第一预设字段以生成对应的唯一类型标识,包括:
所述事件处理总线在每一所述事件类型名称的名称头部添加第一预设字段以生成所述唯一类型标识。
7.根据权利要求3所述的分布式事件处理装置,其特征在于,所述事件处理总线包含事件监听子模块;
所述事件处理总线在订阅所述数据库中的消息时通过所述事件监听子模块实时监听并接收所述数据库发布的消息。
8.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序以采用权利要求1-7中任一项所述的分布式事件处理装置。
9.一种计算机存储介质,其特征在于,其存储计算机程序,在所述计算机程序被执行时,采用根据权利要求1-7中任一项所述的分布式事件处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910775438.XA CN110471780B (zh) | 2019-08-21 | 2019-08-21 | 分布式事件处理装置、终端和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910775438.XA CN110471780B (zh) | 2019-08-21 | 2019-08-21 | 分布式事件处理装置、终端和计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110471780A CN110471780A (zh) | 2019-11-19 |
CN110471780B true CN110471780B (zh) | 2022-04-26 |
Family
ID=68512693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910775438.XA Active CN110471780B (zh) | 2019-08-21 | 2019-08-21 | 分布式事件处理装置、终端和计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110471780B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124547B (zh) * | 2019-12-26 | 2024-03-19 | 中国平安人寿保险股份有限公司 | 任务处理方法及装置 |
CN112581289A (zh) * | 2020-12-14 | 2021-03-30 | 京东数字科技控股股份有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
CN113938522B (zh) * | 2021-10-12 | 2023-06-13 | 中国联合网络通信集团有限公司 | 事件消息传输方法、系统、设备和计算机存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102340495A (zh) * | 2010-07-26 | 2012-02-01 | 中国移动通信集团广东有限公司 | 一种支撑跨系统业务联动的事件中心及其事件处理方法 |
CN102880475A (zh) * | 2012-10-23 | 2013-01-16 | 上海普元信息技术股份有限公司 | 计算机软件系统中基于云计算的实时事件处理系统及方法 |
CN104579905A (zh) * | 2013-10-15 | 2015-04-29 | 阿里巴巴集团控股有限公司 | 消息传递方法和系统及mom服务器、接收端 |
CN107092533A (zh) * | 2017-03-29 | 2017-08-25 | 弘成科技发展有限公司 | 基于ActiveMQ+Redis的同步消息队列 |
CN107423142A (zh) * | 2017-06-28 | 2017-12-01 | 北京明朝万达科技股份有限公司 | 一种基于发布、订阅模式的数据库消息通知方法及系统 |
CN109582466A (zh) * | 2017-09-29 | 2019-04-05 | 北京金山软件有限公司 | 一种定时任务执行方法、分布式服务器集群及电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521782A (zh) * | 2011-12-26 | 2012-06-27 | 安徽省电力公司 | 一种基于实时数据库的动态数据智能发布方法及系统 |
CN106528574A (zh) * | 2015-09-14 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及设备 |
CN106598751B (zh) * | 2016-10-31 | 2020-02-07 | 武汉斗鱼网络科技有限公司 | 通过事件总线分发事件的方法及系统 |
CN106411919B (zh) * | 2016-10-31 | 2019-12-20 | 用友网络科技股份有限公司 | 一种基于事件总线的web推送方法 |
US11405446B2 (en) * | 2017-05-09 | 2022-08-02 | EMC IP Holding Company LLC | Encoding and transmitting stream data without prior knowledge of data size |
CN110020002B (zh) * | 2018-08-21 | 2024-01-12 | 山西掌柜鼎科技有限公司 | 事件处理方案的查询方法、装置、设备和计算机存储介质 |
-
2019
- 2019-08-21 CN CN201910775438.XA patent/CN110471780B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102340495A (zh) * | 2010-07-26 | 2012-02-01 | 中国移动通信集团广东有限公司 | 一种支撑跨系统业务联动的事件中心及其事件处理方法 |
CN102880475A (zh) * | 2012-10-23 | 2013-01-16 | 上海普元信息技术股份有限公司 | 计算机软件系统中基于云计算的实时事件处理系统及方法 |
CN104579905A (zh) * | 2013-10-15 | 2015-04-29 | 阿里巴巴集团控股有限公司 | 消息传递方法和系统及mom服务器、接收端 |
CN107092533A (zh) * | 2017-03-29 | 2017-08-25 | 弘成科技发展有限公司 | 基于ActiveMQ+Redis的同步消息队列 |
CN107423142A (zh) * | 2017-06-28 | 2017-12-01 | 北京明朝万达科技股份有限公司 | 一种基于发布、订阅模式的数据库消息通知方法及系统 |
CN109582466A (zh) * | 2017-09-29 | 2019-04-05 | 北京金山软件有限公司 | 一种定时任务执行方法、分布式服务器集群及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110471780A (zh) | 2019-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110471780B (zh) | 分布式事件处理装置、终端和计算机存储介质 | |
CN107688500B (zh) | 一种分布式任务处理方法、装置、系统及设备 | |
CN110032880B (zh) | 基于区块链的录屏取证方法、系统和电子设备 | |
US10664385B1 (en) | Debugging in an actor-based system | |
CN107066519B (zh) | 一种任务检测方法及装置 | |
US9986368B2 (en) | Loop avoidance in middle-node-to-middle-node registration in M2M networks | |
CN107423942B (zh) | 一种业务流转的方法及装置 | |
WO2020216077A1 (zh) | 一种区块链事件去重方法、装置、计算机设备及存储介质 | |
CN109582655B (zh) | 系统日志的定位方法及装置、计算机可读存储介质 | |
CN111177081A (zh) | 游戏日志内容查询方法、装置、计算机设备和存储介质 | |
CN108509322B (zh) | 避免过度回访的方法、电子装置及计算机可读存储介质 | |
CN110826799A (zh) | 业务预测方法、装置、服务器及可读存储介质 | |
CN111064776B (zh) | 区块链中区块的生成方法、记账节点及存储介质 | |
US8224933B2 (en) | Method and apparatus for case-based service composition | |
CN113037774B (zh) | 一种安全管理方法、装置、设备及机器可读存储介质 | |
CN108108126B (zh) | 一种数据处理方法、装置及设备 | |
CN110647463B (zh) | 一种恢复测试断点的方法、装置、电子设备 | |
CN109558249B (zh) | 一种并发操作的控制方法及装置 | |
CN114564286B (zh) | 一种规则引擎告警方法及规则引擎告警系统 | |
CN109389271B (zh) | 应用性能管理方法及系统 | |
CN115242872A (zh) | 数据处理方法、装置、计算机设备及可读存储介质 | |
CN114625502A (zh) | 一种投词任务处理方法、装置、存储介质和电子设备 | |
CN113297149A (zh) | 数据处理请求的监测方法及装置 | |
CN107844491B (zh) | 一种在分布式系统中实现强一致性读操作的方法与设备 | |
CN107547238B (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 |