深入事件驱动模式

Posted 程序员石磊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入事件驱动模式相关的知识,希望对你有一定的参考价值。

介绍

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

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

事件驱动架构的拓扑结构

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

  • Mediator
  • Broker

Mediator

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

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

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

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

所有这些步骤都需要某种程度的协调,以确定适合度目标步骤,并且可以连续和并行地完成这些步骤。
中介拓扑中包含四个组件:

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

调解人

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

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

队列

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

通道

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

处理器

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

代理拓扑

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

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

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

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

结论

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

以上是关于深入事件驱动模式的主要内容,如果未能解决你的问题,请参考以下文章

[Design Pattern] Mediator Pattern 简单案例

深入浅出Event Sourcing和CQRS(转)

深入浅出Event Sourcing和CQRS

WSO2工具(eclipse)错误未处理的事件循环异常:带有groovy脚本的脚本调解器

深入理解JavaScript系列(34):设计模式之命令模式

python IO模式(多路复用和异步IO深入理解)