复合事件架构是由史丹佛大学的David Luckham与Brian Fraseca所提出,使用模式比对、事件的相互关系、事件间的聚合关系,目的从事件云(event cloud)中找出有意义的事件,使得IT架构可以更能弹性使用事件驱动架构,并且能使企业更能快速的开发出更复杂的逻辑架构。
在事件驱动架构下,结合简单事件、事件串流处理(Event streaming processing)以及复合事件(Complex event)。相较于简单事件,复杂事件处理不仅处理单一的事件,也处理由多个事件所组成的复合事件。复杂事件处理监测分析事件流(Event streaming),当特定事件发生时去触发某些动作。
近年来,安全设备中产生的日志数据大幅增加,这些数据形成了一个个“安全防御孤岛”,无法产生协同效应,因此如何处理这些数据成为一个急需解决的问题。从这里引用复杂事件处理的概念,能够实时地从源源不断的海量数据中提取出感兴趣及更高层次的信息,出现了复杂事件处理系统,用户预先在系统中定义需要检测的复杂事件模式。具体的一种案例模式来说就是对日志数据进行以源IP、目的IP、类型等维度进行复杂的关联分析处理、包含去重、合并等对原始日志数据进行筛选、统计、关联分析出具有威胁的日志数据。
在日常生活中,一个“事件”表示事情的发生,在复杂事件处理(CEP)中,“事件”是一个指向计算机处理的对象,它标志或者记录某个发生的活动。
简言之,事件是系统中某一活动记录的对象。事件标志着活动,一个事件可能和其他事件间存在关联。一个事件包含了三个方面。一个形式可以是简单的一个字符串或者更经常是一个多种数据组成的逻辑元组。一个事件的数据组成可以包含对该事件意义和关系的描述,比如活动的时间、地点、执行人员等。一个事件标志着一项活动,把这个活动称之为事件的意义。一个事件的形式中,经常包含描述该事件所标志的活动的数据。一个活动可以通过时间、因果关系和集合与其他事件关联。事件和其他事件之间和他们所指的活动一样,也存在着联系,一个事件和其他事件之间的关系合起来称为事件的相对性。一个事件的形式中经常包含事件关系的编码,也就是包含了可以被调用的函数,用以重构该事件与其他事件的关系集合。
事件之间有事件、因果和聚合三个最普遍最基础最重要的关系。
时间是事件之间的顺序关系。例如事件A发生在事件B之前。事件之间的关系依赖于时钟。一般来说,当一个事件的活动发生时,这个事件就会产生并且从时钟读取信息作为该事件的时间戳。如果A事件所指向的活动发生之后B事件发生,那么A导致了B。这里定义的因果关系是系统中活动的依赖关系。如果一个活动发生仅以别的其它活动发生为条件,该活动便依赖于这些活动。在这个意义上,我们说如果活动B依赖活动A,那么A导致了B,相反,如果A和B互不影响,那么A和B是独立的。如果事件A指向的活动包含了一系列事件B1,B2,B3,...的活动,那么A就是所有事件Bi的一个聚合,相反地,事件Bi是事件A的成员。聚合是一种抽象的关系。一般来说,当事件集合{Bi}发生的时候,事件A产生。事件A是一个高级别的事件,它对应着一个复杂的活动,这个活动包含了系统中聚合事件所指向的所有活动,称A为复杂事件,它的成员{Bi}导致了事件A的发生,A事件是一个和Bi事件都不相同的事件。