事件的并行处理方法及装置的制造方法
【专利说明】
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种事件的并行处理方法及装置。
【【背景技术】】
[0002]目前,事件驱动架构(Event Driven Architecture, EDA)能够通过应用程序、适配器以及无入侵性的代理操作来创建服务。EDA还能够用于实现企业应用系统,在这些应用系统中,事件触发的消息可以在独立的、非耦合的组件之间传递。其中,复杂事件处理(Complex Event Processing, CEP)引擎用于协调这些独立应用程序。CEP可以快速地检测出事件并判断出事件的类型,从而帮助组织机构快速、恰当地处理这些事件。CEP技术作为实现EDA的主流技术得到了迅速地发展。
[0003]现有技术中,基于CEP技术的事件处理方法是一种有序的并行处理方法,该方法包括:事件分发器接收输入的事件流,事件流中的事件具有一定的顺序;然后事件分发器将事件流中的事件按照轮询方式发送给多个事件处理器;多个事件处理器并行地处理收到的事件,然后将事件随机地发送给事件输出器,为了保证输出的事件流中事件的顺序与输入的事件流中事件的顺序一致,事件输出器需要对事件处理器发来的事件进行排序处理,然后输出排序结果。
[0004]然而,上述处理方法中,为了保证事件的有序性,事件输出器需要占用较长的时间对事件进行排序处理,增加了事件处理的时间开销,使得事件处理效率较低。
【
【发明内容】
】
[0005]有鉴于此,本发明实施例提供了一种事件的并行处理方法及装置,用以实现在保证事件有序性的同时提高事件处理效率。
[0006]第一方面,本发明实施例提供了一种事件的并行处理装置,所述装置为事件处理器,包括:
[0007]接收单元,用于接收事件分发器发送的Μ个事件,Μ为大于或者等于1的整数;
[0008]第一处理单元,用于对所述Μ个事件进行处理,以获得Ν个事件;Ν为小于或者等于Μ且大于或者等于0的整数;所述Ν个事件的顺序与所述Μ个事件的顺序中所述Ν个事件的顺序一致;
[0009]第二处理单元,用于获得第一标识;
[0010]发送单元,用于向事件输出器发送所述Ν个事件和所述第一标识,以便于所述事件输出器向其他器件发送所述Ν个事件,以及在向其他器件发送完所述Ν个事件之后,依据所述第一标识,向所述其他器件发送从下一个事件处理器获得的Ν个事件。
[0011]在第一方面的第一种可能的实现方式中,所述第一标识为所述下一个事件处理器的标识,所述接收单元,还用于:接收所述事件分发器发送的所述下一个事件处理器的标识,所述下一个事件处理器的标识为所述事件分发器依据每个所述事件处理器的标识和预设的所述至少两个事件处理器的顺序获得的;或者,
[0012]所述第一标识用于指示每个所述事件处理器向所述事件输出器发送所述N个事件完毕,所述第二处理单元具体用于:生成所述第一标识。
[0013]结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述事件输出器包括控制器和至少两个事件缓存器,所述至少两个事件缓存器与所述至少两个事件处理器一一对应,所述发送单元具体用于:
[0014]向对应的所述事件缓存器依次发送所述Ν个事件,以便于对应的所述事件缓存器存储从对应的所述事件处理器获得的Ν个事件,以便于所述控制器向所述其他器件发送所述事件缓存器存储的所述Ν个事件;
[0015]向对应的所述事件缓存器发送完所述Ν个事件后,向对应的所述事件缓存器发送所述第一标识,以便于所述控制器依据所述第一标识,向所述其他器件依次发送从所述下一个事件处理器对应的事件缓存器获得的Ν个事件。
[0016]第二方面,本发明实施例提供了一种事件的并行处理装置,所述装置为事件输出器,包括控制器和至少两个事件缓存器,所述至少两个事件缓存器与至少两个事件处理器--对应:
[0017]每个所述事件缓存器,用于接收并存储对应的事件处理器发送的Ν个事件和所述第一标识;所述Ν个事件为所述事件处理器接收到事件分发器发送的Μ个事件后,对所述Μ个事件进行处理后获得的,Μ为大于或者等于1的整数,Ν为小于或者等于Μ且大于或者等于0的整数;所述Ν个事件的顺序与所述Μ个事件的顺序中所述Ν个事件的顺序一致;
[0018]所述控制器,用于向其他器件发送每个所述事件缓存器存储的所述Ν个事件,以及在向其他器件发送完所述Ν个事件之后,依据每个所述事件缓存器存储的所述第一标识,向所述其他器件发送下一个事件缓存器存储的所述Ν个事件。
[0019]在第二方面的第一种可能的实现方式中,所述第一标识用于指示每个所述事件处理器向对应的所述事件缓存器发送所述Ν个事件完毕,所述控制器具体用于:
[0020]依据所述第一标识和预设的所述至少两个事件处理器的顺序,确定所述下一个事件处理器;
[0021]依据事件处理器与事件缓存器的对应关系,确定所述下一个事件处理器对应的事件缓存器;
[0022]向所述其他器件发送所述下一个事件处理器对应的事件缓存器存储的所述Ν个事件。
[0023]在第二方面的第二种可能的实现方式中,所述第一标识为所述下一个事件处理器的标识,所述控制器具体用于:
[0024]依据所述下一个事件处理器的标识,确定所述下一个事件处理器;
[0025]依据事件处理器与事件缓存器的对应关系,确定所述下一个事件处理器对应的事件缓存器;
[0026]向所述其他器件发送所述下一个事件处理器对应的事件缓存器存储的所述Ν个事件。
[0027]第三方面,本发明实施例提供了一种事件的并行处理方法,应用于包括事件分发器、至少两个事件处理器和事件输出器的系统,包括:
[0028]每个所述事件处理器接收所述事件分发器发送的Μ个事件,Μ为大于或者等于1的整数;
[0029]每个所述事件处理器对所述Μ个事件进行处理,以获得Ν个事件;Ν为小于或者等于Μ且大于或者等于0的整数;所述Ν个事件的顺序与所述Μ个事件的顺序中所述Ν个事件的顺序一致;
[0030]每个所述事件处理器获得第一标识;
[0031]每个所述事件处理器向事件输出器发送所述Ν个事件和所述第一标识,以便于所述事件输出器向其他器件发送所述Ν个事件,以及在向其他器件发送完所述Ν个事件之后,依据所述第一标识,向所述其他器件发送从下一个事件处理器获得的Ν个事件。
[0032]在第三方面的第一种可能的实现方式中,所述第一标识为所述下一个事件处理器的标识,所述每个所述事件处理器获得第一标识,包括:每个所述事件处理器接收所述事件分发器发送的所述下一个事件处理器的标识,所述下一个事件处理器的标识为所述事件分发器依据每个所述事件处理器的标识和预设的所述至少两个事件处理器的顺序获得的;或者,
[0033]所述第一标识用于指示每个所述事件处理器向所述事件输出器发送所述Ν个事件完毕,所述每个所述事件处理器获得第一标识,包括:所述每个所述事件处理器生成所述第一标识。
[0034]结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述事件输出器包括控制器和至少两个事件缓存器,所述至少两个事件缓存器与所述至少两个事件处理器一一对应,所述每个所述事件处理器向事件输出器发送所述Ν个事件和所述第一标识,包括:
[0035]每个所述事件处理器向对应的所述事件缓存器依次发送所述Ν个事件,以便于对应的所述事件缓存器存储从对应的所述事件处理器获得的Ν个事件,以便于所述控制器向所述其他器件发送所述事件缓存器存储的所述Ν个事件;
[0036]每个所述事件处理器向对应的所述事件缓存器发送完所述Ν个事件后,向对应的所述事件缓存器发送所述第一标识,以便于所述控制器依据所述第一标识,向所述其他器件依次发送从所述下一个事件处理器对应的事件缓存器获得的Ν个事件。
[0037]第四方面,本发明实施例还提供了一种事件的并行处理方法,应用于包括事件分发器、至少两个事件处理器和事件输出器的系统,包括:
[0038]所述事件输出器接收并存储对应的事件处理器发送的Ν个事件和所述第一标识;所述Ν个事件为所述事件处理器接收到事件分发器发送的Μ个事件后,对所述Μ个事件进行处理后获得的,Μ为大于或者等于1的整数,Ν为小于或者等于Μ且大于或者等于0的整数;所述Ν个事件的顺序与所述Μ个事件的顺序中所述Ν个事件的顺序一致;
[0039]所述事件输出器向其他器件发送每个所述事件缓存器存储的所述Ν个事件,以及在向其他器件发送完所述Ν个事件之后,依据每个所述事件缓存器存储的所述第一标识,向所述其他器件发送下一个事件缓存器存储的所述Ν个事件。
[0040]在第四方面的第一种可能的实现方式中,所述第一标识用于指示每个所述事件处理器向所述事件输出器发送所述Ν个事件完毕,所述依据每个所述事件缓存器存储的所述第一标