1、新一代云原生架构:阿里云事件驱动架构(EDA)在生产领域的实践阿里云智能:陈涛(肯梦)01 什么是事件驱动?以系统设计者的视角解析实践驱动架构,了解事件驱动架构的核心02 事件驱动架构实现解析事件驱动底层架构实现及模块&原理解析03 事件驱动架构方案与企业生产落地实践事件驱动架构在生产的落地与实践方案01 什么是事件驱动?以系统设计者的视角解析实践驱动架构,了解事件驱动架构的核心架构演进发展史单体架构是最简单的架构方案之一,所有的架构都是从单体演进而来的单体架构(Monolithic Architecture)在分层架构中,其中一个层只知道它正下方的层。分层架构是按照代码单元分离组织单元代码的
2、常见做法。分层架构(Layered Architecture)MVC 架构解决了前端和后端的关注点分离。MVC 架构(Model-View-Controller)EBI 模式将边界视为与外部世界的完整连接,而不仅仅是视图、控制器或接口(语言结构)。EBI 架构(Entity Boundary Interactor)进一步分离职责的演变,提供低耦合和高内聚,从而提供更多的可测试性和可维护性。洋葱架构(Onion Architecture)面向用户的应用程序的可组合,可复用,技术栈独立的架构SOA 架构(Service-Oriented Architecture)EDA 架构(Event-Driv
3、en Architecture)什么是事件驱动?消息与事件 消息Svc.Svc.远程调用异步化Svc.Message BrokerSvc.消息是比事件更通用的抽象(Raw Data)消息常用于微服务调用之间的异步解耦消息的内容往往绑定了较强的业务属性消息的发送方对消息处理逻辑有明确的预期消息与事件 事件 Event Broker事件是具像化的(Schema),代表事情的发生、条件和状态的变化事件源可能来自不同的环境与组织事件源对事件将被如何响应没有任何预期采用事件的应用架构是更彻底的解耦采用事件的应用架构将更加具备可扩展性和灵活性EventSourcesEventConsumers微服务架构与
4、事件驱动架构事件驱动架构事件驱动架构(EDA)用户订单服务新建订单操作:创建订单EventBus事件:订单已创建操作记录写库短信通知More.事件监听A:事件监听B:事件监听C:传统架构传统架构用户订单服务1.新建订单2.操作记录写库3.短信通知操作:创建订单EDA 简单逻辑分层Event BusEvent ProducerEvent ConsumerEvent ProducerEvent ProducerEvent ConsumerEvent Consumer什么是事件?简单来说,事件就是状态的显著变化,当用户采取特定行动时触发。以4S店售卖汽车为例:当客户购买汽车并且其状态从当客户购买汽车
5、并且其状态从 For Sale 变为变为 Sold 是一个事件。是一个事件。成功交易后,从帐户中扣除金额是一个事件。成功交易后,从帐户中扣除金额是一个事件。单击预订试驾后,从将预约信息添加到指定用户就是一个事件。单击预订试驾后,从将预约信息添加到指定用户就是一个事件。每个事件都可能触发一个或多个选项作为响应。02 事件驱动架构实现解析事件驱动底层架构实现及模块&原理解析一个经典的 EDA 架构模型1.发送订单2.订单推送至EB3.EB分发订单4.订单推送至mq5.订单状态事件8.订单确认事件6.订单确认推送6.订单处理7.订单确认9.订单通知10.订单确认短信11.短信推送成功事件12.客户接
6、收短信13.商家配送14.订单配送完成15.完成订单EDA 架构实现Event BusEvent ProducerEvent ConsumerEvent ProducerEvent ProducerEvent ConsumerEvent ConsumerEvent CapturingRoutingEvent ProcessingEDA 架构优势/劣势松耦合 事件驱动架构是高度松耦合且高度分布式的架构模型,事件的创建者(来源)只知道发生的事件,并不知道事件的处理方式,也关心有多少相关方订阅该事件。可扩展性 事件驱动架构可以通过路由&过滤能力快速划分服务,提供更便捷的扩展与路由分发。敏捷性 事件驱