【IT168 评论】 复杂事件是一种事件,通常多个更简单事件异步发生时预示着这种事件。举一个非软件概念的例子:一个人投球,一个人挥棒击球,另一个人跑垒,每个都是彼此孤立的事件,正是这些事件在一起组成了棒球比赛这个复杂事件。在软件中,复杂事件处理(CEP)是识别复杂事件的一种能力,在一个软件系统中,个体业务事件的异步发生预示着这个复杂事件。服务间的消息交换经常暗示这个软件系统,并相应地应答。这些应答包括生成一个新事件,删除重复逻辑,和其他行为。
独立咨询师Larry Fulton最近给出了一则关于CEP和SOA的网络广播,讨论这两者如何在一起工作。Fulton解释说,CEP用业务流程帮助调整系统处理,通过翻译传入的业务事件并将它们简化成可以在SOA中的其他地方消费的新消息,从而减少了前阶段需要处理的工作量。反过来,适当地让SOA从组织的一个跨多个业务域,并且更容易实现的区域的CEP 实现中获益。
下面三个观点是来自Fulton的网络广播,利用SOA来影响CEP:
CEP和SOA应当从两个角度来看。首先,应该把CEP看作SOA内的一种实现选择。CEP可以用来实现新的业务能力——例如流程精简和关联——作为服务。其次,可以把CEP看作服务源。如果在适当的位置使用CEP系统,它们可能包含SOA中其他的用新方式来包装的服务。
如果你不确定是否需要CEP,从理解你的业务事件开始来决定CEP是否合适。Fulton推荐同业务人员对话来发现在流程中,什么时候,发生哪些事件,以及哪些事件对于业务目标来说最重要的。他还推荐分析靠近业务的底层事件,因为经常这么做会对业务整体产生新洞察。
CEP将从消息的单一库中获益,而不是从可能存在很多重复标题或消息的很多更小的库中。Fulton建议,通常来说,任何时候一个组织对消息共享的期望超过了基本的点对点交换,例如在SOA之中多个系统和服务之间拷贝或重编路由消息,应该考虑到为信息创建一个定义的桶容器。实现CEP可能需要透明化,但CEP与合适的库一起操作起来将更好。