事件驱动

Event Driven Architecture Pattern

事件代表过去发生的事件,事件既是技术架构概念,也是业务概念,以事件为驱动的编程模型称为事件驱动架构 EDA。EDA 架构的三个特性:异步、实时、彻底解耦。EDA 架构的核心是基于消息的发布订阅模式,通过发布订阅模式实现事件的一对多灵活分发。消息消费方对发送方而言完全透明,消息发送方只管把消息发送到消息中间件,其它事情全部不用关心,由于消息中间件中的 MQ 等技术,即使发送消息时候,消息接收方不可用,但仍然可以正常发送,这才叫彻底解耦。其次一对多的发布订阅模式也是一个核心重点,对于消息的订阅方和订阅机制,可以在消息中间件灵活的进行配置和管理,而对于消息发送方和发送逻辑基本没有任何影响。

EDA 要求我们的是通过业务流程,首先要识别出有价值的业务事件,这些事件符合异步、实时和发布订阅等基本的事件特征;其次是对事件进行详细的分析和定义,对事件对应的消息格式进行定义,对事件的发布订阅机制进行定义等,最后才是基于消息事件模式的开发和测试等工作。

EDA 成熟度模型

我们通过 Gartner 报告总结的 EDA 成熟度模型,展望以下 EDA 架构的未来:

  • Incidental:偶发性地使用事件通知机制来进行一些状态的捕获,没有明确的事件处理策略;
  • Brokered:提供托管的事件代理服务,组织中部分应用开始采用基于消息或者事件的异步化架构;
  • Centralized:以战略的形式提出中心化的 EDA 解决方案,有专门的组织团队提供 EDA 实现,EDA 架构开始广泛被采用;
  • Advanced:EDA 架构开始触达更多的业务领域,比如流计算,数据分析,AI,以及 API 市场等,跨组织的事件生态开始形成并进行扩张;
  • Pervasive:事件变得无处不在,庞大的事件生态形成,组织间的隔离被事件彻底打通,企业的关键业务都将采取 EDA 架构;事件驱动与请求驱动两个生态完成融合。

EDA 成熟度模型

Links