中间件发布订阅事件驱动架构

简介: 【7月更文挑战第2天】

image.png
中间件发布订阅(Publish/Subscribe)事件驱动架构是一种设计模式,广泛应用于分布式系统中,以实现解耦、可扩展性和灵活性。这种架构的核心思想是基于事件的生产者(发布者)和消费者(订阅者)之间的异步通信,它们之间不直接交互,而是通过一个中介——即消息中间件来传递消息或事件。

基本概念

  • 发布者(Publisher):产生事件或消息的组件。它不知道也不关心谁会接收这些事件,只负责将事件发送到中间件。

  • 订阅者(Subscriber):对特定类型事件感兴趣的组件。它们向中间件注册自己感兴趣的事件类型,并提供处理这些事件的回调函数。当相关事件发生时,中间件会自动将事件转发给所有订阅了该事件类型的订阅者。

  • 中间件(Broker):作为事件传递的中介,负责接收发布者发出的事件,并根据事件类型将其分发给相应的订阅者。它管理着发布者和订阅者的关系,确保事件能够准确、高效地送达。

工作流程

  1. 订阅: 订阅者向中间件订阅自己感兴趣的一类或多类事件。
  2. 发布: 当某个事件发生时,发布者将该事件发送给中间件,无需了解订阅者的具体信息。
  3. 路由与分发: 中间件接收到事件后,根据事件类型查找并通知所有订阅了该类型事件的订阅者。
  4. 处理: 订阅者收到事件后,执行预先定义好的逻辑来处理该事件。

优点

  • 解耦: 发布者和订阅者之间没有直接依赖,修改一方不会影响另一方,提高了系统的可维护性和可扩展性。
  • 灵活性: 新的订阅者可以随时加入,不需要修改现有代码,易于添加新功能或集成新服务。
  • 可扩展性: 系统可以通过增加更多的订阅者来处理更大的负载,或者通过部署多个中间件实例来提高可用性和性能。
  • 异步处理: 事件的生产和消费是异步的,可以优化资源使用,提高系统响应速度。

应用场景

发布订阅模式广泛应用于消息队列、实时数据处理、微服务架构中的服务间通信、物联网(IoT)、实时监控系统、以及许多需要高并发、低延迟处理的场景中。

常见的实现技术包括但不限于RabbitMQ、Kafka、Redis Pub/Sub、Apache Pulsar、NATS等消息中间件。

目录
相关文章
|
17小时前
|
消息中间件 运维 监控
|
7天前
|
消息中间件 Java Kafka
探索Java中的事件驱动架构(EDA)
探索Java中的事件驱动架构(EDA)
|
4天前
|
消息中间件 Java Kafka
基于事件驱动的微服务架构设计与实现
基于事件驱动的微服务架构设计与实现
|
1天前
|
消息中间件 监控 Cloud Native
阿里云云原生生态强调事件驱动架构(EDA),借助EventBridge和EventMesh实现微服务间的高效协作。
【7月更文挑战第3天】阿里云云原生生态强调事件驱动架构(EDA),借助EventBridge和EventMesh实现微服务间的高效协作。EDA提升系统弹性和可维护性,促进业务敏捷性。实施路径包括事件模型设计、集成阿里云服务、开发事件处理器和监控优化。通过阿里云服务,开发者能轻松构建响应式、可扩展的云原生应用,加速创新并驱动数字化转型。
12 0
|
2天前
|
SQL 中间件 关系型数据库
MyCAT数据库中间件的架构与使用方法
MyCAT数据库中间件的架构与使用方法
|
2天前
|
消息中间件 监控 Java
如何在Java中实现事件驱动的微服务架构
如何在Java中实现事件驱动的微服务架构
|
2天前
|
消息中间件 Java 开发者
Java中实现事件驱动架构的异步通信技术
Java中实现事件驱动架构的异步通信技术
|
29天前
|
消息中间件 存储 NoSQL
阿里开源中间件一览
阿里开源中间件一览
35 2
|
2月前
|
算法 NoSQL Java
2023年阿里高频Java面试题:分布式+中间件+高并发+算法+数据库
又到了一年一度的金九银十,互联网行业竞争是一年比一年严峻,作为工程师的我们唯有不停地学习,不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水,进入心仪的企业(阿里、字节、美团、腾讯.....)
|
11月前
|
NoSQL Java Redis
阿里Java高级岗中间件二面:GC+IO+JVM+多线程+Redis+数据库+源码
虽然“钱多、事少、离家近”的工作可能离技术人比较远,但是找到一份合适的工作,其实并不像想象中那么难。但是,有些技术人确实是认真努力工作,但在面试时表现出的能力水平却不足以通过面试,或拿到高薪,其实不外乎以下 2 个原因: