中间件发布与订阅模型

简介: 【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:是谷歌云平台提供的完全托管的实时消息传递服务,天然支持发布/订阅模型,适用于构建可扩展的、事件驱动的应用程序。

优势

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

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

目录
相关文章
|
存储 Java 中间件
【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南
【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南
810 1
【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南
|
3天前
|
消息中间件 设计模式 中间件
中间件事件总线发布与订阅
【6月更文挑战第20天】
10 4
|
16天前
|
存储 负载均衡 安全
中间件消息发布-订阅模式
【6月更文挑战第9天】
15 5
|
15天前
|
消息中间件 监控 负载均衡
中间件消息订阅者(Subscriber)
【6月更文挑战第10天】
11 1
|
消息中间件 Java 中间件
【Alibaba中间件技术系列】「RocketMQ技术专题」带你一起去探索RocketMQ服务架构的线程模型分析
【Alibaba中间件技术系列】「RocketMQ技术专题」带你一起去探索RocketMQ服务架构的线程模型分析
252 0
【Alibaba中间件技术系列】「RocketMQ技术专题」带你一起去探索RocketMQ服务架构的线程模型分析
|
消息中间件 存储 Cloud Native
云原生中间件RocketMQ源码包结构和集群架构模型
云原生中间件RocketMQ源码包结构和集群架构模型
188 24
|
中间件
SAP CRM 中间件里的发布-订阅者模式
从事务码SMW01里能观察到一个BDOC可能被发送往不止一个目的site去,比如下图所示的5个site都会收到该site,而高亮显示的SMOF_ERPSITE代表ERP系统QI3的client 504会接收到这个BDOC。
117 1
SAP CRM 中间件里的发布-订阅者模式
|
中间件
CRM中间件里的发布-订阅者模式
从事务码SMW01里能观察到一个BDOC可能被发送往不止一个目的site去,比如下图所示的5个site都会收到该site,而高亮显示的SMOF_ERPSITE代表ERP系统QI3的client 504会接收到这个BDOC。
|
25天前
|
消息中间件 存储 NoSQL
阿里开源中间件一览
阿里开源中间件一览
27 2
|
1月前
|
算法 NoSQL Java
2023年阿里高频Java面试题:分布式+中间件+高并发+算法+数据库
又到了一年一度的金九银十,互联网行业竞争是一年比一年严峻,作为工程师的我们唯有不停地学习,不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水,进入心仪的企业(阿里、字节、美团、腾讯.....)