深入事件驱动模式

简介: 深入事件驱动模式

介绍

事件驱动架构模式是一种著名的分布式异步架构模式,用于构建高度可扩展的应用程序。该体系结构将事件应用于解耦服务之间的触发和交互,在用微服务开发的现代应用程序中很流行。在电子商务网站的购物车中可以看到事件驱动的架构。如在购物车中添加商品、产品价格变化、结账、付款、运输、交货通知等。这种体系结构有助于应用程序在高并发期间对来自各种源的变化做出反应,而不会影响应用程序或过度消耗资源。


8.png


事件驱动架构有多种好处。它有助于跨多个服务的事件的实现,并提供最终的一致性。另一个好处是它还允许应用程序维护物化视图。


事件驱动架构的拓扑结构

了解事件驱动架构的拓扑结构对于深入研究事件驱动架构的各种子模式非常重要。该架构模式基于两个主要拓扑:


  • Mediator
  • Broker

Mediator

Mediator在Mediator拓扑中起着重要作用。当需要通过中央调解器与事件协调各种步骤时,通常使用它。这对于具有多个事件并且需要一定程度的编排来处理事件的事件很有帮助。


9.png


示例: 在车辆中设计GPS程序


对于车辆的整体安全、导航和成本估算计划,GPS数据被认为是为车辆设计合适的GPS起点。它们旨在提供适当的业务和安全目标。它涉及以下几个步骤:


  • 越野车追踪:越野车是指任何类型的车辆,能够熟练地在铺好的路面或砾石路面上行驶。GPS数据可以提供该车辆的数据,相应的通道将触发分析进一步的细节。
  • 旅行时间估计→GPS提供从一个地点到另一个地点的旅行时间估计,这些数据可以进一步用于分析与时间有关的业务影响。
  • 导航到目的地→这对物流公司非常有帮助。物流公司采用远程信息系统来提高司机的生产率和安全性。这一概念可用于支持路线优化、燃油效率、驾驶员安全性和一致性

所有这些步骤都需要某种程度的协调,以确定适合度目标步骤,并且可以连续和并行地完成这些步骤。

中介拓扑中包含四个组件:


  • 调解人
  • 队列
  • 通道
  • 处理器

调解人

中介组件充当每个初始步骤的协调器。它标识事件类型或数据类型,并将其发送到特定通道。


10.png


有几种工具可以处理中介拓扑。例如:jBPM, Mule ESB, Apache Camel, Spring Integration等等。


队列

有几种工具可以处理中介拓扑。例如:jBPM、Mule ESB、Apache Camel、Spring Integration等等。目前有几种工具可以处理中介拓扑。例如:jBPM, Mule ESB, Apache Camel, Spring Integration等等。


11.png


通道

事件中介利用事件通道将与主事件中的每个步骤相关的特定事件传递给事件处理程序。它可以是消息主题,也可以是消息队列。


12.png


处理器

它是一个组件或服务应用程序,包含在接收事件时执行业务需求的业务逻辑。现在这些都是基于微服务的组件。它也可以是通道队列消费者。


代理拓扑

在Broker拓扑中,消息流在接收事件时分布在事件处理器之间。它不同于调解人,因为它不是中心。它在链式加工中很有用。


例如:设计在线订餐系统,在线订餐是在网站或应用程序上订餐的过程。当用户从应用程序或网站上在线订餐时,它会生成一个事件和消息流到不同的事件,以完成订餐过程。它是一种不同流程的链条:


  • 用户选择餐厅并订购食物。
  • 支付订购的食物。
  • 餐厅收到通知
  • 交付合作伙伴收到通知
  • 餐厅将食物移交给送货合作伙伴
  • 交付合作伙伴向用户交付食物


13.png

在上述架构设计中,链接可用于满足业务功能。还引入了排队机制,使其更具可扩展性和准确性。这种拓扑在应用程序不断发展或提供未来功能和扩展时很常见。


结论

事件驱动架构因其高可扩展性和分布式异步行为而非常流行。它非常适合微服务架构且提供高度解耦的系统。


相关文章
|
7月前
|
消息中间件 存储 Cloud Native
揭秘发布订阅模式:让消息传递更高效
揭秘发布订阅模式:让消息传递更高效
揭秘发布订阅模式:让消息传递更高效
|
C语言
实现一个简单的事件驱动处理框架
实现一个简单的事件驱动处理框架
147 0
|
2月前
|
传感器 物联网 数据挖掘
事件驱动模型
【10月更文挑战第30天】
35 5
|
2月前
|
存储 设计模式 监控
事件驱动架构的实现方式?
【10月更文挑战第7天】事件驱动架构的实现方式?
59 7
|
7月前
|
监控 数据处理
事件驱动架构的优势
事件驱动架构的优势
|
6月前
|
监控 网络协议 安全
事件驱动的反应堆模式
【6月更文挑战第22天】这是一个关于面向对象封装的事件驱动端口监控服务的文章摘要。文中还以一个分布式日志系统为例,展示了如何通过客户端/服务器架构处理并发I/O。后续部分比较了不同的多路I/O解决方案,并预告了反应堆的详细设计和实现。
86 5
事件驱动的反应堆模式
|
6月前
|
消息中间件 传感器 Cloud Native
事件驱动作为分布式异步服务架构
【6月更文挑战第25天】本文介绍事件驱动架构(EDA)是异步分布式设计的关键模式,适用于高扩展性需求。EDA提升服务韧性,支持CQRS、数据通知、开放式接口和事件流处理。然而,其脆弱性包括组件控制、数据交换、逻辑关系复杂性、潜在死循环和高并发挑战。EDA在云原生环境,如Serverless,中尤其适用。
216 2
事件驱动作为分布式异步服务架构
|
6月前
|
存储 数据处理 数据库
理解在服务架构中的事件驱动
【6月更文挑战第14天】网络架构和软件设计常基于ISO七层模型和三层应用架构,强调数据处理的重要性。事件驱动架构(EDA)以事件为中心,改变传统设计方式,解决系统问题。事件是触发通知或状态变化的操作,如用户下单。EDA适用于微服务通信、工作流程自动化、SaaS集成和基础设施自动化等场景,提高系统敏捷性和可扩展性。然而,EDA并非万能,需根据需求选择合适的设计方案。
189 1
理解在服务架构中的事件驱动
|
5月前
|
消息中间件 设计模式 监控
中间件发布订阅事件驱动架构
【7月更文挑战第2天】
92 1
|
6月前
|
设计模式 监控 中间件
中间件事件驱动
【6月更文挑战第18天】
65 3