事件驱动架构

事件驱动架构(Event Driven Architecture,EDA)本质上是一种应用、组件间的集成架构模式,事件和传统的消息不同,事件具有Schema,所以可以校验事件的有效性,同时EDA具备QoS保障机制,也能够对事件处理失败进行响应。事件驱动架构不仅用于服务解耦,还可应用于下面的场景中:

  • 增强服务韧性:由于服务间是异步集成的,也就是下游的任何处理失败甚至宕机都不会被上游感知,自然也就不会对上游带来影响;
  • CQRS(Command Query Responsibility Segregation):把对服务状态有影响的命令用事件来发起,而对服务状态没有影响的查询才使用同步调用的API接口;结合事件驱动架构中的事件溯源(Event Sourcing)可以用于维护 数据变更的一致性,当需要重新构建服务状态时,把事件驱动架构中的事件重新“播放”一遍即可;
  • 数据变化通知:在服务架构下,往往一个服务中的数据发生变化,另外的服务会感兴趣,比如用户订单 完成后,积分服务、信用服务等都需要得到事件通知并更新用户积分和信用等级;
  • 构建开放式接口:在事件驱动架构下,事件的提供者并不用关心有哪些订阅者,不像服务调用的场景——数据的产生者需要知道数据的消费者在哪里并调用它,因此保持了接口的开放性;
  • 事件流处理:应用于大量事件流(而非离散事件)的数据分析场景,典型应用是基于Kafka的日志处理;
  • 基于事件触发的响应:在IoT时代大量传感器产生的数据,不会像人机交互一样需要等待处理结果的返回,天然适合用事件驱动架构来构建数据处理应用。
Kudos to Star
总字数: 591 字  最后更新: 4/9/2024, 10:22:59 PM