事件驱动架构
意识到API和服务已从用户驱动的访问模式转变为机器驱动的访问模式的开发组织,应考虑事件驱动的体系结构。 这些体系结构使基于规则的服务与基于事件消费和共享数据的微服务解耦。 它们是一种处理IoT设备,数据流,工作流系统以及其他感知并响应不断变化的条件的服务之间的大量实时,复杂事务的有效方法。
回顾过去二十年来基于Internet的体系结构,您可以更好地理解为什么事件驱动的体系结构在今天如此重要。
大多数开发人员都熟悉两层和三层Web体系结构,这些体系结构旨在管理用户体验,处理业务逻辑以及与后端API和数据源进行交互。 有成熟的模式,例如模型视图控制器(MVC),其具有在许多平台上实现的框架以支持这些类型的应用程序。
开发人员很快了解到,将业务逻辑与表示分离开来对于扩展应用程序开发很重要。 作为开发移动应用程序的一部分,许多组织已经成熟到对API进行工程设计,并且一些组织引入了服务总线来帮助协调这些API的多步骤事务和工作流。
这些是解决当今架构需求的早期步骤,用户不再是API的主要客户。 组织内部和外部的应用程序,数据服务和传感器要多得多,它们是API和服务的主要客户。 当这些服务被设计为可以感知并响应集成服务生态系统中的事件并对其做出React的微服务时,它们具有更强的能力和可重用性,可以满足不断变化的新业务需求。 这就是为什么事件驱动的体系结构在今天很重要的原因。
定义:什么是事件驱动架构?
理解事件驱动的体系结构的一种简单方法是根据输入和输出事件模式定义服务:
- 生成新事件的服务,例如传感器,用户输入和数据流。
- 通过状态更改生成事件的服务。 示例包括基于日期的过渡,例如到期的订阅或唤醒警报。
- 大量处理和使用事件的服务,例如显示和仪表板。
Martin Fowler对事件类型提供了更丰富的描述,以区分服务执行的功能。 例如,在不处理响应的情况下广播事件通知 ,在事件携带状态下广播事件的完整详细信息, 事件源服务记录状态更改。
然后有不同的拓扑 ,具体取决于业务逻辑的分布方式。 例如,如果体系结构需要集中式系统处理原始事件,然后重新分发下游更改事件,则中介器拓扑可能是合适的。
设计事件驱动的体系结构时,需要考虑操作方面的考虑因素,包括可伸缩性因素,等待时间要求,服务水平,性能因素,安全性要求和错误处理要求。
事件的类型,拓扑和操作注意事项都是设计体系结构时要考虑的因素。
事件驱动用例的示例
有许多与事件驱动的架构非常契合的商机。 我与技术公司的几位首席技术官就事件驱动架构进行了交谈,以更好地了解模式和应用程序的类型。
事件驱动平台提供商Vantiq的CTO Paul Butterworth建议,数字企业可以通过将事件与一个可能对其他业务部门有价值的业务部门分离来解决实时业务机会。 他说:“实时数字企业自然被建模为整个企业中发生的事件以及为响应这些事件而采取的行动。 数字企业的关键在于,一个事件可能会在一个业务部门中发生,而许多独立业务部门会独立并异步地响应该事件。”
一个例子是,当多个企业与共同的客户群互动但出售不同的产品和服务时。 与业务部门建立联系的每个客户接触点都会生成订阅业务部门可以消耗的事件。 去耦使业务部门更容易改善销售或客户体验,因为每个部门都可以确定如何使用感兴趣事件中的信息。 一个重要的实现考虑因素是确定谁应该访问哪些事件和使用哪种数据类型的访问权限。
第二个业务需求是管理状态变化的复杂业务流程。 事件服务平台Streamlio的联合创始人Karthik Ramasamy建议:“事件驱动的体系结构对于对事件的响应速度至关重要或处理事件提供了更有效的跟踪和更新状态方式的应用程序非常有价值。 例如,微服务集成通常与事件驱动的架构相关。”
考虑复杂的供应链,其中在不同的位置和由不同的供应商制造多个组件。 使用事件驱动的体系结构:
- 供应商系统广播有关其生产状态的实时信息。
- 管理系统异步捕获事件并广播生产订单。
- 下游供应商系统捕获生产订单并调整其制造产量。
内存网格提供商Hazelcast的CTO Greg Luck说:“事件驱动的体系结构颠覆了积累数据和查询数据的常规做法。 事件是数据并且是动态处理的。 这需要消息传递和流传输基础结构来处理该数据。 它还可以与内存数据网格结合使用,以快速丰富和存储结果。”
这说明了可以基于实时事件开发的全新应用程序集,在这些事件中,数据被流传输到多个使用者。 考虑自动驾驶汽车,它们实时广播和消耗事件,并且驾驶决策无法承受存储和检索信息的延迟。
在企业中创建事件驱动的体系结构
云服务集成商Dell Boomi的CTO Michael J. Morton就大型组织应如何考虑合并事件驱动的体系结构提出建议:“创建事件驱动的体系结构以支持当今的关键项目的组织应退后一步思考关于企业范围内事件的集成,分发和管理。 在企业通常以批处理方式运行业务的地方,这已经不足以成功并完成其数字化转型之旅。”
这意味着在具有批处理或与非事件驱动的企业系统和SaaS平台集成的企业中建立事件驱动的体系结构时,可以在有限的范围内应用事件驱动的体系结构。
像大多数体系结构更改一样,选择合适的平台,从小做起,证明价值并共同重构不断增长的功能,是迭代开发事件驱动的体系结构的好方法。
翻译自: https://www.infoworld.com/article/3386177/why-event-driven-architectures-are-important-today.html
事件驱动架构