事件驱动架构定义
事件驱动架构,英文名Event Driven Architecture,是一种基于发布/订阅模式的消息异步通信的架构,你可以把它理解为架构层面的观察者模式。
如下图所示:
事件驱动架构特点
1.解耦
2.基于推送通知的消息传输机制
事件驱动的体系结构中,客户端无需轮询就可以接收更新,事件在到达事件存储后就会通知给客户端,客户端可以随时接收更新,这对于动态数据转换、分析和数据科学处理非常有用。
3.可追溯与审计
事件流是事实的不变流,其中每个事实由流中的事件表示,每当实体状态发生变化时,都会发出一个新事件。
事件驱动的体系结构可以通过实现事件追溯Event Sourcing等模式,来提供不可变事件的日志,这是审计的关键。
4.加速机器学习与数据科学的模型选择
事件驱动架构,为加速机器学习模型从开发到生产提供了一种有效的方法,模型可以使用业务事件,实时地将结果广播给另一个服务,该服务可以根据一些关于速度、预测精度等的业务标准选择服务哪个模型。
因为模型可以不断地测试和改进,所以该体系结构允许更快的、迭代的开发,可以快速地部署到生产环境中。
事件驱动架构实现原理
1.事件驱动架构组件
通常事件驱动架构主要包含4种组件,如下图所示:
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年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》