事件驱动架构详解(定义特点及实现原理)

事件驱动架构详解(定义特点及实现原理)-mikechen

事件驱动架构定义

事件驱动架构,英文名Event Driven Architecture,是一种基于发布/订阅模式的消息异步通信的架构,你可以把它理解为架构层面的观察者模式。

如下图所示:

事件驱动架构详解(定义特点及实现原理)-mikechen

 

事件驱动架构特点

1.解耦

事件驱动架构详解(定义特点及实现原理)-mikechen
生产者和消费者彼此不用知道对方是谁,这就会使得服务非常松耦合,非常易于修改,测试和部署。

2.基于推送通知的消息传输机制

事件驱动架构详解(定义特点及实现原理)-mikechen

事件驱动的体系结构中,客户端无需轮询就可以接收更新,事件在到达事件存储后就会通知给客户端,客户端可以随时接收更新,这对于动态数据转换、分析和数据科学处理非常有用。

3.可追溯与审计

事件驱动架构详解(定义特点及实现原理)-mikechen

事件流是事实的不变流,其中每个事实由流中的事件表示,每当实体状态发生变化时,都会发出一个新事件。

事件驱动的体系结构可以通过实现事件追溯Event Sourcing等模式,来提供不可变事件的日志,这是审计的关键。

4.加速机器学习与数据科学的模型选择

事件驱动架构详解(定义特点及实现原理)-mikechen

事件驱动架构,为加速机器学习模型从开发到生产提供了一种有效的方法,模型可以使用业务事件,实时地将结果广播给另一个服务,该服务可以根据一些关于速度、预测精度等的业务标准选择服务哪个模型。

因为模型可以不断地测试和改进,所以该体系结构允许更快的、迭代的开发,可以快速地部署到生产环境中。

 

事件驱动架构实现原理

1.事件驱动架构组件

通常事件驱动架构主要包含4种组件,如下图所示:

事件驱动架构详解(定义特点及实现原理)-mikechen

1)事件队列(event queue)

负责:接收事件的入口。

2)分发器(event mediator)

负责:将不同的事件分发到不同的业务逻辑单元。

是一个事件中枢处理单元,知道事件的处理流程,但不执行具体的事件业务处理逻辑,根据事件的特征对初始事件进行拆分编排为处理事件并进行分发。

3)事件通道(event channel)

负责:分发器与处理器之间的联系渠道。

是一组各自独立的组件,彼此之间没有依赖,自包含,不依赖于其他 Processor 的处理结果。

4)事件处理器(event processor)

负责:实现业务逻辑,处理完成后会发出事件,触发下一步操作。

 

2.事件驱动架构流程

第一步:客户端发送一个事件到事件队列event queues中,它用来将事件传送给event mediator;

第二步:Event mediator收到初始的事件后,会发送额外的一些异步事件给event channels来执行处理的每个步骤;

第三步:Event channels 既可以是消息队列,也可以是消息topic,大部分是消息topic,这样可以由多个消息处理器(event processor)处理同一个消息。

第四步:Event processors监听event channels,接收事件并处理一些业务逻辑。

 

事件驱动架构应用

典型的场景:比如在交易系统中,每个请求流程必须经过特定的步骤,如验证、订单、配送,以及通知买家等。

 

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法