CN114840219B - 分布式事件处理系统 - Google Patents
分布式事件处理系统 Download PDFInfo
- Publication number
- CN114840219B CN114840219B CN202210785285.9A CN202210785285A CN114840219B CN 114840219 B CN114840219 B CN 114840219B CN 202210785285 A CN202210785285 A CN 202210785285A CN 114840219 B CN114840219 B CN 114840219B
- Authority
- CN
- China
- Prior art keywords
- trigger
- event
- script
- event processing
- trigger script
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Abstract
本申请涉及一种分布式事件处理系统,系统采用Omnibus软件的配置。所述系统包括:事件接收集群和事件处理模块;事件接收集群接收外部系统发送的事件;事件接收集群中包括多个事件处理节点,事件处理节点并行处理事件接收集群中存储的事件;事件处理节点通过触发器脚本处理事件,触发器脚本是通过Omnibus软件提供的脚本语言编写;在处理事件时,解析触发器脚本,将触发器脚本转化为Java字节码,在Java虚拟机上执行事件处理。采用本系统能够在不改变原有Omnibus软件,提高系统的事件处理能力。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种分布式事件处理系统。
背景技术
目前国内的银行、保险、证券等行业在运维管理过程中用来对日志、Snmptrap等事件进行分析、存储和管理时,大多使用的是IBM Omnibus软件。
现有的事件处理平台IBM Omnibus,由于产生的时间已经很长,并且后期进行的优化提升很少,所以存在诸多缺陷,分别如下:
技术架构陈旧:所有组件都是使用的单节点模式、单线程串行处理,既无法使用垂直扩充机器资源,也无法使用横向扩充服务实例数实现平台性能提升;
性能和容量低:只能存储和计算固定量的实时报警数据,既无法适应常规的日益增长的报警数量,常规数据规模下的处理延迟只能达到分钟级,更无法抵抗任何大小的风暴冲击;
处理能力低下:老平台已经不能处理逻辑越来越复杂的业务场景,例如复杂的报警抑制、报警自动化升级、报警根源性分析、报警相关性分析、高并发高频率处理等等;
扩展性差:封闭的技术体系,无法进行任何的改造和联接外部系统。
发明内容
基于此,有必要针对上述技术问题,提供一种分布式事件处理系统。
一种分布式事件处理系统,所述系统采用Omnibus软件的配置,包括:
事件接收集群和事件处理模块;
所述事件接收集群接收外部系统发送的事件;
所述事件处理模块为所述事件接收集群中的事件处理节点,所述事件处理节点并行处理所述事件接收集群中存储的事件;
所述事件处理节点通过触发器(Trigger)脚本处理事件,所述触发器脚本是通过Omnibus软件提供的脚本语言编写;
在处理事件时,解析所述触发器脚本,将所述触发器脚本转化为Java字节码,在Java虚拟机上执行事件处理。
在其中一个实施例中,触发器脚本的字段信息包括:名称信息、组别信息、活动状态信息、优先级信息、事件对象信息、执行条件信息、变量声明信息以及执行信息。
在其中一个实施例中,所述事件对象信息包含执行时间对象的时间逻辑;所述时间逻辑包括:插入事件前执行、更新事件前执行、删除事件前执行、重新插入事件前执行、插入事件后执行、更新事件后执行、删除事件后执行以及重新插入事件后执行;
在处理事件时,判断事件中的关键词是否存在数据库中;
若是,则判断触发器脚本中的事件对象信息是否包含更新事件前执行,若是,则按照优先级信息执行触发器脚本;若否,则依据关键词更新数据库中的记录;在依据关键词更新数据库中的记录之后,判断触发器脚本中的事件对象信息是否包含更新事件后执行,若是,则按照优先级信息执行触发器脚本,若否,则停止执行;
若否,则判断触发器脚本中的事件对象信息是否包含插入事件前执行,若是,则按照优先级信息执行触发器脚本;若否,则将关键词插入数据库中;在将关键词插入数据库中之后,判断触发器脚本中的事件对象信息是否包含插入事件后执行,若是,则按照优先级信息执行触发器脚本,若否,则停止执行。
在其中一个实施例中,所述执行信息包括:赋值语句、逻辑语句、过程程序以及函数调用;
其中,赋值语句和逻辑语句预先存储在分布式事件处理系统中;
过程程序为用户编写的执行逻辑;
所述函数调用为分布式事件处理系统预先存储的执行逻辑。
在其中一个实施例中,事件处理节点接收到触发器脚本维护请求,事件处理节点根据所述触发器脚本维护请求对所述触发器脚本进行维护,并将维护结果广播至所述事件接收集群中其他事件处理节点以进行同步更新。
在其中一个实施例中,所述触发器脚本维护请求包括:新增触发器脚本请求、删除触发器脚本请求以及修改触发器脚本请求;
当接收到新增触发器脚本,查询待新增的触发器脚本是否存在,若是则停止;若否,则将待新增的触发器脚本添加至数据库,并将待新增的触发器脚本转化为Java类,动态编译并实例化为Java实例,判断待新增的触发器是流式触发器或定时触发器,当待新增的触发器脚本为流式触发器时,将Java实例添加至到所有事件处理节点的流式触发器列表,当待新增的触发器脚本为定时触发器时,将Java实例添加至到所有事件处理节点的定时触发器列表,并触发定时触发调度器进行调度;
当接收到修改触发器脚本时,查询待更新的触发器脚本是否存在,若否则停止;若是,则将待新增的触发器脚本更新至数据库,并将待更新的触发器脚本转化为Java类,动态编译并实例化为Java实例,判断待更新的触发器是流式触发器或定时触发器,当待更新的触发器脚本为流式触发器时,将Java实例添加至到所有事件处理节点的流式触发器列表,当待更新的触发器脚本为定时触发器时,将Java实例添加至到所有事件处理节点的定时触发器列表,并通知对应事件处理节点重新运行更新后的触发器脚本;
当接收到删除触发器脚本时,查询待删除的触发器脚本是否存在,若否则停止;若是,从数据库中删除待删除的触发器脚本;当待删除的触发器脚本为流式触发器时,将Java实例从所有事件处理节点的流式触发器列表中删除,当待删除的触发器脚本为定时触发器时,将Java实例从所有事件处理节点的定时触发器列表中删除,并触发定时触发调度器进行调度;其中流式触发器表示触发器脚本在接收到事件时处理事件,定时触发器表示触发器脚本定时处理事件。
在其中一个实施例中,事件处理节点接收到过程程序维护请求,事件处理节点根据所述过程程序维护请求对所述过程程序进行维护,并将维护结果广播至所述事件接收集群中其他事件处理节点以进行同步更新。
在其中一个实施例中,所述过程程序维护请求包括:新增程序(Procedure)请求、修改程序请求以及删除程序请求;
当接收到新增程序请求时,将待新增过程程序转化为Java类,动态编译并实例化为Java实例,将Java实例添加至所有事件处理节点的过程程序列表中,并将待新增过程程序保存至数据库中;
当接收到修改程序请求时,将待修改过程程序添加至队列,将从队列中取出的待修改过程程序对应的触发器脚本进行重解析、编译、加载以及更新,将调用了待修改过程程序的过程程序添加到队列直至队列中没有过程程序;
当接收到删除程序请求时,判断待删除过程程序是否被其他触发器脚本或其他过程程序调用,若是,则反馈无法删除信息;若否,则将待删除过程程序从数据库中删除。
在其中一个实施例中,所述组别信息用于确定触发器脚本所关联的组别;所述活动状态信息包括冻结和活动;
当设置触发器脚本的活动状态信息时,通过设置触发器脚本所关联组别的活动状态信息或者设置触发器脚本的活动信息。
在其中一个实施例中,事件处理节点接收到新增触发器脚本组别请求时,将待新增的触发器脚本组别保存至数据库中;
事件处理节点接收到修改触发器脚本组别请求时,在所有事件处理节点中查询与待修改的触发器脚本组别关联的流式触发器脚本,将流式触发器脚本的活动状态信息状态修改为冻结或活动,在所有事件处理节点中查询与待修改的触发器脚本组别关联的定时触发器脚本,将定时触发器脚本的活动状态信息状态修改为冻结或活动;
事件处理节点接收到删除触发器脚本组别请求时,当待删除触发器脚本组别与其他触发器脚本关联时,则反馈无法删除信息,若否则将待删除触发器脚本组别从数据库删除。
上述分布式事件处理系统,在Omnibus软件不能满足需求的情况下,首先,为了提高事件的处理能力,设置了事件接收集群,并通过其中的事件处理节点并行处理所述事件接收集群中存储的事件,从而提高系统的事件处理能力以及并发能力。事件处理节点是通过触发器脚本处理事件,而触发器脚本是通过Omnibus软件提供的脚本语言编写,在进行事件处理时,是解析触发器脚本,将触发器脚本转化为Java字节码,在Java虚拟机上执行事件处理,因此,可以直接实现Omnibus软件中事件迁移处理,以及外部事件的处理,从而无缝的对接现有的Omnibus软件,另外一方面,将触发器脚本转化为Java字节码,在Java虚拟机上执行事件处理可以大幅度提高事件处理能力。
附图说明
图1为一个实施例中分布式事件处理系统的框架图;
图2为一个实施例中事件处理的流程示意图;
图3为一个实施例中触发器脚本维护的流程示意图;
图4为另一个实施例中过程程序维护的流程示意图;
图5为一个实施例中触发器脚本组合的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,提供了一种分布式事件处理系统,系统采用Omnibus软件的配置,包括:
事件接收集群和事件处理模块;事件接收集群接收外部系统发送的事件;事件接收集群中包括多个事件处理节点,事件处理节点并行处理事件接收集群中存储的事件;事件处理节点通过触发器脚本处理事件,触发器脚本是通过Omnibus软件提供的脚本语言编写;在处理事件时,解析触发器脚本,将触发器脚本转化为Java字节码,在Java虚拟机上执行事件处理。
上述分布式事件处理系统,在Omnibus软件不能满足需求的情况下,首先,为了提高事件的处理能力,设置了事件接收集群,并通过其中的事件处理节点并行处理所述事件接收集群中存储的事件,从而提高系统的事件处理能力以及并发能力。事件处理节点是通过触发器脚本处理事件,而触发器脚本是通过Omnibus软件提供的脚本语言编写,在进行事件处理时,是解析触发器脚本,将触发器脚本转化为Java字节码,在Java虚拟机上执行事件处理,因此,可以直接实现Omnibus软件中事件迁移处理,以及外部事件的处理,从而无缝的对接现有的Omnibus软件,另外一方面,将触发器脚本转化为Java字节码,在Java虚拟机上执行事件处理可以大幅度提高事件处理能力。
在其中一个实施例中,如图1所示,提供一种系统框架图,在图1中,包括:外部事件、事件处理节点以及事件存储三个模块。
其中,S1为外部事件,外部事件通过外部系统发送到本系统的事件处理集群,外部事件类型包括系统日志(Syslog)、管理站告警事件(Snmptrap)、套接字(Socket)等,事件接入范围从底层的基础设施、物理服务器、网络设备、存储设备、操作系统、云平台等,到中间件组件、数据库、网页服务器(WebServer)和大数据组件等等,再到上层的业务和应用,如交易、应用等。
S2为本系统的事件处理集群。现在银行、证券等金融企业的业务都非常复杂,包括的组件很多,产生的事件也很多,尤其是设备有异常情况出现时,设备产生大量的事件,有时会达到每秒几万条,而形成事件风暴,当事件接入范围很广时,事件风暴可能随时发生,事件管理中心必须自身必须能应对这种情况,对事件进行有效处理,所以本系统在兼容Omnibus功能的同时,改进了Omnibus单节点串行处理的架构,构建了多节点并发处理的集群。
本系统的事件处理集群对外部系统提供2种协议的接口,Dubbo协议和Restful协议,外部系统可根据实际需要,采用相应的协议向事件处理集群发送数据。集群的每一个节点都并行处理事件,当未来事件规模扩大时,集群的节点可以水平扩充,当集群的处理能力有冗余时,宕掉一个或多个节点不影响事件处理。
在其中一个实施例中,事件处理的核心是触发器脚本执行。触发器脚本是由Omnibus提供的脚本语言编写的,每一个触发器脚本相当于一个逻辑功能部件,用来处理某一类业务,比如事件压缩、事件恢复、事件丰富、事件升降级,等等。触发器脚本分为2类,一类是流式触发器,即每一新事件来了,流式触发器对事件进行处理,形成新的结果,然后插入或更新到数据库;另一类是定时触发器,这类触发器定时运行,对数据库中的老数据进行处理。Omnibus的触发器执行采取的是解释执行的方式,即直接解释脚本文本,性能比较慢。
在其中一个实施例中,触发器脚本的字段信息包括:名称信息、组别信息、活动状态信息、优先级信息、事件对象信息、执行条件信息、变量声明信息以及执行信息。具体的如下
名称信息(Trigger_name):表示是用户定义的触发器名字;
组别信息(trigger_group):表示这个触发器所在的组;
活动状态信息(enabled):如果为true,表示这个触发器的状态是活动的,如果其它条件满足就会备执行;为false,表示这个触发器的状态时冻结的,一定不会执行;
优先级信息(trigger_priority):表示这个触发器的优先级,用数字表示,数值越小,表示优先级越高,则越先执行;
事件对象信息(table_name):表示这个事件作用于数据库的哪个表格,before|after insert|update|delete|reinsert表示执行这个触发器的时机,组合起来有8种组合,before insert表示在插入事件之前执行,before update表示更新事件之前执行,before delete表示删除事件之前执行,before reinsert表示重新插入事件之前执行,所谓重新插入事件是指这次接收到的事件已经在数据库中存在,after insert表示在插入事件之后执行,after update表示更新事件之后执行,after delete表示删除事件之后执行,after reinsert表示重新插入事件之后执行。
执行条件信息(condition_expression):为一个布尔表达式,由事件的字段和其它计算组成,表示当事件满足这个表达式时,才执行这个触发器。
变量声明信息(declare):表示变量声明,可以声明多个变量,由分号分割,每一个变量由变量名和类型组成,类型为整形int,长整形long,字符串数组char[n]等。
执行信息(exec_body):表示执行体,由赋值语句、if语句、for循环语句、sql语句、过程调用、函数调用组成,过程程序为用户编写的执行逻辑,函数为解析引擎内置的执行逻辑,用户可以直接使用;赋值语句有2类特殊的语句,old.aaa=bbb表示对数据库中的老事件的aaa字段进行更新,new.aaa=bbb表示对新来的事件的aaa字段进行赋值。
具体的,事件对象信息包含执行时间对象的时间逻辑;时间逻辑包括:插入事件前执行、更新事件前执行、删除事件前执行、重新插入事件前执行、插入事件后执行、更新事件后执行、删除事件后执行以及重新插入事件后执行。
在处理事件时,如图2所示,判断事件中的关键词是否存在数据库中;若是,则判断触发器脚本中的事件对象信息是否包含更新事件前执行,若是,则按照优先级信息执行触发器脚本;若否,则依据关键词更新数据库中的记录;在依据关键词更新数据库中的记录之后,判断触发器脚本中的事件对象信息是否包含更新事件后执行,若是,则按照优先级信息执行触发器脚本,若否,则停止执行;若否,则判断触发器脚本中的事件对象信息是否包含插入事件前执行,若是,则按照优先级信息执行触发器脚本;若否,则将关键词插入数据库中;在将关键词插入数据库中之后,判断触发器脚本中的事件对象信息是否包含插入事件后执行,若是,则按照优先级信息执行触发器脚本,若否,则停止执行。
在其中一个实施例中,执行信息包括:赋值语句、逻辑语句、过程程序以及函数调用;其中,赋值语句和逻辑语句预先存储在分布式事件处理系统中;过程程序为用户编写的执行逻辑;函数调用为分布式事件处理系统预先存储的执行逻辑。
在其中一个实施例中,事件处理节点接收到触发器脚本维护请求,事件处理节点根据触发器脚本维护请求对所述触发器脚本进行维护,并将维护结果广播至事件接收集群中其他事件处理节点以进行同步更新。
具体的,本系统完全兼容Omnibus的触发器处理,实现了触发器解析引擎,对触发器脚本翻译为Java字节码,直接运行在Java虚拟机上,同时,也提供了完整的维护功能,包括触发器的增、删、改、查功能,程序的增、删、改、查功能,触发器组的增、删、改、查功能。所以,所有运行在Omnibus上的功能,都可以无缝迁移到本系统来。
触发器维护包括触发器的增、删、改,接收到触发器维护请求的主机是处理集群中的某一个节点,它处理完这个触发器的维护请求后,需要将结果广播到其它节点,以保证整个集群触发器配置的一致性。对于流式触发器,每一个节点接收到事件时,都要查看有哪些流式触发器满足这个事件,满足则执行,也就是说,流式触发器是触发器被动执行的,没有事件过来时,它只是一个静态的Java实例。对于定时触发器,它主动定时执行,并且每一个定时触发器实例只运行在集群的某个节点上,也就是说,一个定时触发器只有一个实例在运行,具体运行在哪个节点上,由的调度程序统一分配,所以对于定时触发器的增加和删除,触发器数目发生了变化,需要触发器调度程序重新调度,对于定时触发器的更新,则只需要查看这个触发器运行在哪个节点上,停止这个老触发器的运行,重新启动新触发器运行就可以了,不需要调度程序重新调度。
在其中一个实施例中,触发器脚本维护请求包括:新增触发器脚本请求、删除触发器脚本请求以及修改触发器脚本请求。
如图3所示,当接收到新增触发器脚本,查询待新增的触发器脚本是否存在,若是则停止;若否,则将待新增的触发器脚本添加至数据库,并将待新增的触发器脚本转化为Java类,动态编译并实例化为Java实例,判断待新增的触发器是流式触发器或定时触发器,当待新增的触发器脚本为流式触发器时,将Java实例添加至到所有事件处理节点的流式触发器列表,当待新增的触发器脚本为定时触发器时,将Java实例添加至到所有事件处理节点的定时触发器列表,并触发定时触发调度器进行调度。
当接收到修改触发器脚本时,查询待更新的触发器脚本是否存在,若否则停止;若是,则将待新增的触发器脚本更新至数据库,并将待更新的触发器脚本转化为Java类,动态编译并实例化为Java实例,判断待更新的触发器是流式触发器或定时触发器,当待更新的触发器脚本为流式触发器时,将Java实例添加至到所有事件处理节点的流式触发器列表,当待更新的触发器脚本为定时触发器时,将Java实例添加至到所有事件处理节点的定时触发器列表,并通知对应事件处理节点重新运行更新后的触发器脚本。
当接收到删除触发器脚本时,查询待删除的触发器脚本是否存在,若否则停止;若是,从数据库中删除待删除的触发器脚本;当待删除的触发器脚本为流式触发器时,将Java实例从所有事件处理节点的流式触发器列表中删除,当待删除的触发器脚本为定时触发器时,将Java实例从所有事件处理节点的定时触发器列表中删除,并触发定时触发调度器进行调度;其中流式触发器表示触发器脚本在接收到事件时处理事件,定时触发器表示触发器脚本定时处理事件。
在其中一个实施例中,事件处理节点接收到过程程序维护请求,事件处理节点根据过程程序维护请求对所述过程程序进行维护,并将维护结果广播至事件接收集群中其他事件处理节点以进行同步更新。
程序的维护包括程序的增、删、改、查。由于程序是给触发器或程序调用的,所以一个程序被修改了,调用它的所有触发器都需要修改,同时,调用它的程序以及相关的触发器都需要修改,这是一个递归过程。
具体的,过程程序维护请求包括:新增程序请求、修改程序请求以及删除程序请求;如图4所示,当接收到新增程序请求时,将待新增过程程序转化为Java类,动态编译并实例化为Java实例,将Java实例添加至所有事件处理节点的过程程序列表中,并将待新增过程程序保存至数据库中。
当接收到修改程序请求时,将待修改过程程序添加至队列,将从队列中取出的待修改过程程序对应的触发器脚本进行重解析、编译、加载以及更新,将调用了待修改过程程序的过程程序添加到队列直至队列中没有过程程序。
当接收到删除程序请求时,判断待删除过程程序是否被其他触发器脚本或其他过程程序调用,若是,则反馈无法删除信息;若否,则将待删除过程程序从数据库中删除。
值得说明的是,触发器的语法中可以定义程序,程序是一个过程,是触发器执行逻辑的一部分,用来给触发器调用,它的目的是将重复执行的脚本抽出来,形成一段独立的逻辑,供多个触发器调用或一个触发器多次调用,这样就可以减少重复代码。
在其中一个实施例中,组别信息用于确定触发器脚本所关联的组别;活动状态信息包括冻结和活动;当设置触发器脚本的活动状态信息时,通过设置触发器脚本所关联组别的活动状态信息或者设置触发器脚本的活动信息。
具体的,每一个触发器还关联了一个组,可以将某一批相关的触发器关联到一个组中,如果需要将这一类触发器的状态统一改变时,只需要将这个组的改变就可以了;也就是说,一个触发器的状态是活动还是冻结,先看它所在的组的状态,如果是活动的,再看它本身的状态,如果所在组的状态时冻结的,则这个触发器的状态就是冻结的,即使它本身的状态是活动的。
在其中一个实施例中,如图5所示,对于触发器 group的增加,只需要在数据库中添加相应的信息就可以了,对于触发器 group的更新,则需要查找与它关联的所有触发器,将它们的活动状态修改过来,停止或运行它们,如果还关联了定时触发器,则还需要通知定时触发器调度器重新调度。
具体的,事件处理节点接收到新增触发器脚本组别请求时,将待新增的触发器脚本组别保存至数据库中。
事件处理节点接收到修改触发器脚本组别请求时,在所有事件处理节点中查询与待修改的触发器脚本组别关联的流式触发器脚本,将流式触发器脚本的活动状态信息状态修改为冻结或活动,在所有事件处理节点中查询与待修改的触发器脚本组别关联的定时触发器脚本,将定时触发器脚本的活动状态信息状态修改为冻结或活动。
事件处理节点接收到删除触发器脚本组别请求时,当待删除触发器脚本组别与其他触发器脚本关联时,则反馈无法删除信息,若否则将待删除触发器脚本组别从数据库删除。
另外,图1中的S3表示事件存储集群,Omnibus采用的是单节点的内存数据库,本系统基于分布式内存数据库Ignite搭建,与Omnibus相比,能存储更多的数据、有更大的数据访问并行度。
综上,本申请存在如下技术效果:
1:兼容性:在IBM Omnibus上实现的所有功能可以无缝迁移到本系统上来;
2:扩充性:无论是事件处理和事件存储,都可以水平扩展,以满足更高的性能需求;
3:高并发分布式处理:事件处理入库达到10000条/s;
4:分布式存储:活动事件库存储量达到100万级;历史事件库存储量达到亿级 ;
5:应对事件风暴:在分钟级内出现的百万级事件都可以轻松处理。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种分布式事件处理系统,其特征在于,所述系统采用Omnibus软件的配置,包括:
事件接收集群和事件处理模块;
所述事件接收集群接收外部系统发送的事件;
所述事件接收集群中包括多个事件处理节点,所述事件处理节点并行处理所述事件接收集群中存储的事件;
所述事件处理节点通过触发器脚本处理事件,所述触发器脚本是通过Omnibus软件提供的脚本语言编写;
在处理事件时,解析所述触发器脚本,将所述触发器脚本转化为Java字节码,在Java虚拟机上执行事件处理;
触发器脚本的字段信息包括:名称信息、组别信息、活动状态信息、优先级信息、事件对象信息、执行条件信息、变量声明信息以及执行信息;
所述执行信息包括:赋值语句、逻辑语句、过程程序以及函数调用;
其中,赋值语句和逻辑语句预先存储在分布式事件处理系统中;
过程程序为用户编写的执行逻辑;
所述函数调用为分布式事件处理系统预先存储的执行逻辑;
事件处理节点接收到触发器脚本维护请求,事件处理节点根据所述触发器脚本维护请求对所述触发器脚本进行维护,并将维护结果广播至所述事件接收集群中其他事件处理节点以进行同步更新;
所述触发器脚本维护请求包括:新增触发器脚本请求、删除触发器脚本请求以及修改触发器脚本请求;
当接收到新增触发器脚本,查询待新增的触发器脚本是否存在,若是则停止;若否,则将待新增的触发器脚本添加至数据库,并将待新增的触发器脚本转化为Java类,动态编译并实例化为Java实例,判断待新增的触发器是流式触发器或定时触发器,当待新增的触发器脚本为流式触发器时,将Java实例添加至到所有事件处理节点的流式触发器列表,当待新增的触发器脚本为定时触发器时,将Java实例添加至到所有事件处理节点的定时触发器列表,并触发定时触发调度器进行调度;
当接收到修改触发器脚本时,查询待更新的触发器脚本是否存在,若否则停止;若是,则将待新增的触发器脚本更新至数据库,并将待更新的触发器脚本转化为Java类,动态编译并实例化为Java实例,判断待更新的触发器是流式触发器或定时触发器,当待更新的触发器脚本为流式触发器时,将Java实例添加至到所有事件处理节点的流式触发器列表,当待更新的触发器脚本为定时触发器时,将Java实例添加至到所有事件处理节点的定时触发器列表,并通知对应事件处理节点重新运行更新后的触发器脚本;
当接收到删除触发器脚本时,查询待删除的触发器脚本是否存在,若否则停止;若是,从数据库中删除待删除的触发器脚本;当待删除的触发器脚本为流式触发器时,将Java实例从所有事件处理节点的流式触发器列表中删除,当待删除的触发器脚本为定时触发器时,将Java实例从所有事件处理节点的定时触发器列表中删除,并触发定时触发调度器进行调度;其中流式触发器表示触发器脚本在接收到事件时处理事件,定时触发器表示触发器脚本定时处理事件。
2.根据权利要求1所述的系统,其特征在于,所述事件对象信息包含执行时间对象的时间逻辑;所述时间逻辑包括:插入事件前执行、更新事件前执行、删除事件前执行、重新插入事件前执行、插入事件后执行、更新事件后执行、删除事件后执行以及重新插入事件后执行;
在处理事件时,判断事件中的关键词是否存在数据库中;
若是,则判断触发器脚本中的事件对象信息是否包含更新事件前执行,若是,则按照优先级信息执行触发器脚本;若否,则依据关键词更新数据库中的记录;在依据关键词更新数据库中的记录之后,判断触发器脚本中的事件对象信息是否包含更新事件后执行,若是,则按照优先级信息执行触发器脚本,若否,则停止执行;
若否,则判断触发器脚本中的事件对象信息是否包含插入事件前执行,若是,则按照优先级信息执行触发器脚本;若否,则将关键词插入数据库中;在将关键词插入数据库中之后,判断触发器脚本中的事件对象信息是否包含插入事件后执行,若是,则按照优先级信息执行触发器脚本,若否,则停止执行。
3.根据权利要求1所述的系统,其特征在于,事件处理节点接收到过程程序维护请求,事件处理节点根据所述过程程序维护请求对所述过程程序进行维护,并将维护结果广播至所述事件接收集群中其他事件处理节点以进行同步更新。
4.根据权利要求3所述的系统,其特征在于,所述过程程序维护请求包括:新增程序请求、修改程序请求以及删除程序请求;
当接收到新增程序请求时,将待新增过程程序转化为Java类,动态编译并实例化为Java实例,将Java实例添加至所有事件处理节点的过程程序列表中,并将待新增过程程序保存至数据库中;
当接收到修改程序请求时,将待修改过程程序添加至队列,将从队列中取出的待修改过程程序对应的触发器脚本进行重解析、编译、加载以及更新,将调用了待修改过程程序的过程程序添加到队列直至队列中没有过程程序;
当接收到删除程序请求时,判断待删除过程程序是否被其他触发器脚本或其他过程程序调用,若是,则反馈无法删除信息;若否,则将待删除过程程序从数据库中删除。
5.根据权利要求2至4任一项所述的系统,其特征在于,所述组别信息用于确定触发器脚本所关联的组别;所述活动状态信息包括冻结和活动;
当设置触发器脚本的活动状态信息时,通过设置触发器脚本所关联组别的活动状态信息或者设置触发器脚本的活动信息。
6.根据权利要求5所述的系统,其特征在于,事件处理节点接收到新增触发器脚本组别请求时,将待新增的触发器脚本组别保存至数据库中;
事件处理节点接收到修改触发器脚本组别请求时,在所有事件处理节点中查询与待修改的触发器脚本组别关联的流式触发器脚本,将流式触发器脚本的活动状态信息状态修改为冻结或活动,在所有事件处理节点中查询与待修改的触发器脚本组别关联的定时触发器脚本,将定时触发器脚本的活动状态信息状态修改为冻结或活动;
事件处理节点接收到删除触发器脚本组别请求时,当待删除触发器脚本组别与其他触发器脚本关联时,则反馈无法删除信息,若否则将待删除触发器脚本组别从数据库删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210785285.9A CN114840219B (zh) | 2022-07-06 | 2022-07-06 | 分布式事件处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210785285.9A CN114840219B (zh) | 2022-07-06 | 2022-07-06 | 分布式事件处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114840219A CN114840219A (zh) | 2022-08-02 |
CN114840219B true CN114840219B (zh) | 2023-05-05 |
Family
ID=82575316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210785285.9A Active CN114840219B (zh) | 2022-07-06 | 2022-07-06 | 分布式事件处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114840219B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102667718A (zh) * | 2009-10-30 | 2012-09-12 | 国际商业机器公司 | 处理网络事件的方法和系统 |
CN104281488A (zh) * | 2013-07-08 | 2015-01-14 | 博雅网络游戏开发(深圳)有限公司 | 服务器引擎的实现方法和系统 |
CN113821412A (zh) * | 2021-09-26 | 2021-12-21 | 中国建设银行股份有限公司 | 一种设备运维管理方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694362B1 (en) * | 2000-01-03 | 2004-02-17 | Micromuse Inc. | Method and system for network event impact analysis and correlation with network administrators, management policies and procedures |
CN104243236B (zh) * | 2014-09-17 | 2017-10-03 | 深圳供电局有限公司 | 一种监控系统运维告警数据分析的方法、系统及服务器 |
US10241853B2 (en) * | 2015-12-11 | 2019-03-26 | International Business Machines Corporation | Associating a sequence of fault events with a maintenance activity based on a reduction in seasonality |
US20210117860A1 (en) * | 2019-10-17 | 2021-04-22 | Ambeent Wireless | Method and system for distribution of computational and storage capacity using a plurality of moving nodes in different localities: a new decentralized edge architecture |
CN114020572A (zh) * | 2021-11-05 | 2022-02-08 | 光大科技有限公司 | 分布式告警方法及装置 |
-
2022
- 2022-07-06 CN CN202210785285.9A patent/CN114840219B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102667718A (zh) * | 2009-10-30 | 2012-09-12 | 国际商业机器公司 | 处理网络事件的方法和系统 |
CN104281488A (zh) * | 2013-07-08 | 2015-01-14 | 博雅网络游戏开发(深圳)有限公司 | 服务器引擎的实现方法和系统 |
CN113821412A (zh) * | 2021-09-26 | 2021-12-21 | 中国建设银行股份有限公司 | 一种设备运维管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114840219A (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11256666B2 (en) | Method and apparatus for handling digital objects in a communication network | |
CN111309785B (zh) | 基于Spring框架的数据库访问方法、装置、计算机设备和介质 | |
US20220046036A1 (en) | Mirage Instance of a Database Server | |
CN113407421A (zh) | 微服务网关的动态日志记录管理方法及系统 | |
US20200117433A1 (en) | Code optimization conversations for connected managed runtime environments | |
CN110457059A (zh) | 一种基于redis的序列号生成方法及装置 | |
CN115587118A (zh) | 任务数据的维表关联处理方法及装置、电子设备 | |
CN115269631A (zh) | 数据查询方法、数据查询系统、设备及存储介质 | |
CN114385760A (zh) | 增量数据实时同步的方法、装置、计算机设备及存储介质 | |
CN110737710A (zh) | 分布式数据自动结构化入库方法及系统 | |
CN114840219B (zh) | 分布式事件处理系统 | |
CN113111036A (zh) | 一种基于hdfs的小文件处理方法、装置、介质及电子设备 | |
CN111090782A (zh) | 一种图数据存储方法、装置、设备及存储介质 | |
CN112860235B (zh) | 处理文本的方法、装置、设备和存储介质 | |
US20210365406A1 (en) | Method and apparatus for processing snapshot, device, medium and product | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
US11698911B2 (en) | System and methods for performing updated query requests in a system of multiple database engine | |
CN110716814B (zh) | 一种进程间大数据量通讯的性能优化方法和装置 | |
CN112699129A (zh) | 一种数据处理系统、方法及装置 | |
CN112100186A (zh) | 基于分布式系统的数据处理方法、装置、计算机设备 | |
CN114116790A (zh) | 数据处理的方法及装置 | |
CN102902825B (zh) | 一种数据库优化方法及装置 | |
CN116578247B (zh) | 一种基于元数据的数据存取方法及系统 | |
CN116069464B (zh) | 一种基于分布式存储调用数据执行的优化方法及装置 | |
CN111538491B (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 |