中间件发布与订阅模型

简介: 【6月更文挑战第21天】

image.png
发布与订阅(Publish/Subscribe,简称Pub/Sub)模型是一种消息传递模式,广泛应用于分布式系统、消息队列、事件驱动架构等场景中。在中间件领域,这一模式特别有用,因为它允许系统组件之间进行松耦合的通信,提高了系统的可扩展性和灵活性。下面是对这一模型的基本解释和其在中间件中的应用概述:

基本概念

  • 发布者(Publisher):生产或生成消息的组件。发布者不需要了解谁会接收这些消息,它只负责将消息发送到一个主题(Topic)或者通道(Channel)上。

  • 消息 broker(中间件):作为消息的中转站,负责接收发布者发送的消息,并根据消息的主题将其分发给相应的订阅者。Broker可以实现消息的暂存、路由、过滤等功能。

  • 订阅者(Subscriber):对特定主题感兴趣并希望接收相关消息的组件。订阅者事先向消息broker声明自己关心哪些主题,之后broker会自动将这些主题的新消息推送给订阅者,或者订阅者可以拉取这些消息。

工作流程

  1. 订阅:订阅者向消息broker注册,声明自己感兴趣的 topic。
  2. 发布:发布者生成消息,并指定该消息属于哪个 topic,然后将消息发送给消息broker。
  3. 路由与分发:消息broker根据消息的 topic 将其路由到所有对该 topic 感兴趣的订阅者。
  4. 消费:订阅者接收到消息后进行处理。

中间件实例

  • RabbitMQ:是一个开源的消息队列系统,支持多种消息协议,包括AMQP(Advanced Message Queuing Protocol),可以很好地实现发布/订阅模型。
  • Kafka:是一个分布式流处理平台,特别适合处理高吞吐量的数据流。它也采用了发布/订阅模型,并且支持主题和分区的概念,非常适合大规模数据处理场景。
  • Redis Pub/Sub:Redis不仅仅是一个键值存储数据库,还提供了发布/订阅功能,允许客户端订阅频道并接收发布到该频道的消息。
  • Google Cloud Pub/Sub:是谷歌云平台提供的完全托管的实时消息传递服务,天然支持发布/订阅模型,适用于构建可扩展的、事件驱动的应用程序。

优势

  • 解耦:发布者和订阅者之间无需直接交互,降低了系统的耦合度。
  • 可扩展性:新订阅者可以随时加入,不影响现有系统,易于扩展。
  • 灵活性:可以灵活地添加、修改或删除订阅关系,适应系统变化。
  • 异步处理:消息传递异步进行,提高系统响应速度和处理能力。

发布与订阅模型是现代分布式系统设计中的一个核心模式,通过中间件的支持,使得系统间的通信更加高效、灵活和可维护。

目录
相关文章
|
3月前
|
消息中间件 中间件 Kafka
中间件发布/订阅模型
【7月更文挑战第9天】
31 1
中间件发布/订阅模型
|
3月前
|
消息中间件 存储 负载均衡
中间件消息队列与发布/订阅模型
【7月更文挑战第15天】
86 6
|
3月前
|
存储 消息中间件 NoSQL
中间件键值存储模型Redis
【7月更文挑战第11天】
39 3
|
3月前
|
存储 NoSQL 中间件
中间件键值存储模型Amazon DynamoDB
【7月更文挑战第11天】
23 2
|
3月前
|
存储 缓存 NoSQL
中间件键值存储模型Memcached
【7月更文挑战第11天】
20 1
|
3月前
|
存储 缓存 NoSQL
中间件键值存储模型
【7月更文挑战第9天】
28 1
|
3月前
|
消息中间件 存储 负载均衡
中间件消息队列模型
【7月更文挑战第9天】
34 1
|
3月前
|
消息中间件 NoSQL 中间件
中间件定义数据模型
【7月更文挑战第8天】
40 2
|
3月前
|
消息中间件 存储 负载均衡
中间件注册与订阅
【7月更文挑战第1天】
39 2
|
3月前
|
消息中间件 设计模式 负载均衡
中间件事件模型
【7月更文挑战第1天】
24 1
下一篇
无影云桌面