异步通信方式的两种消息传输模型

一、点对点模型

1.1 什么是点对点模型

点对点模型(也叫队列模型)

在这里插入图片描述

1.2 点对点模型的特点

点对点模型具有如下特点:

  • 消费匿名:消息上下游沟通的唯一的身份就是队列,下游消费者从队列获取消息无法申明独立身份。
  • 一对一通信:基于消费匿名特点,下游消费者即使有多个,但都没有自己独立的身份,因此共享队列中的消息,每一条消息都只会被唯一一个消费者处理。因此点对点模型只能实现一对一通信。

二、发布订阅模型

2.1 什么是发布订阅模型

发布-订阅模型(Publish-Subscribe Pattern)是一种软件设计模式,用于实现消息的发布和订阅机制。在这种模式中,消息的发布者(发布者)将消息发布到一个中心(通常称为主题或频道),而消息的订阅者(订阅者)可以订阅感兴趣的主题或频道,以接收相关的消息通知。

主要组成部分包括:

  1. 发布者(Publisher):负责发布消息到指定的主题或频道。一旦发布者发布了消息,所有订阅了该主题或频道的订阅者都会收到相应的消息通知。
  2. 订阅者(Subscriber):订阅感兴趣的主题或频道,并在有相关消息发布时接收通知。订阅者可以是一个或多个,它们通过注册订阅来表明对特定主题或频道感兴趣。
  3. 主题或频道(Topic/Channel):消息发布者发布消息的地方,订阅者订阅的对象。一个主题或频道可以有多个发布者和多个订阅者。
    在这里插入图片描述

发布订阅模型的更多实现细节查看 RocketMQ 的发布订阅模型实现

2.2 发布订阅模式的日常案例

发布订阅思想比较常见,举个例子:在学术界电子论文的订阅方式中,会议方或出版社负责发布学术论文到论文网站。学生或老师可以在论文网站上订阅自己感兴趣的论文类别,比如分布式系统或人工智能等。一旦会议方或出版社发布了新的论文到论文网站上,论文网站将根据订阅信息,将相应的论文推送给订阅者,通常通过电子邮件等方式进行通知。

引用 分布式通信技术之发布订阅模式 - 知乎 (zhihu.com) 中的图片:

在这里插入图片描述

这里的会议方或出版社充当生产者角色,负责发布论文,而学生或老师则是消费者,订阅并接收感兴趣的论文。论文网站则充当消息中心,负责将论文推送给订阅者。

2.3 发布订阅模型的特点

发布订阅模型的特点包括:

  • 消费独立:相比队列模型的匿名消费方式,发布订阅模型中消费方都会具备的身份,一般叫做订阅组(订阅关系),不同订阅组之间相互独立不会相互影响。

  • 一对多通信:基于独立身份的设计,同一个主题内的消息可以被多个订阅组处理,每个订阅组都可以拿到全量消息。因此发布订阅模型可以实现一对多通信。

  • 多对多通信:多个发布者可以发布消息到同一个主题或频道,多个订阅者也可以订阅同一个主题或频道,实现了多对多的通信模式。

因此,发布订阅模型具备以下优点:

  • 松耦合:发布者和订阅者之间没有直接的依赖关系,它们之间通过消息中心进行通信,使得系统更加灵活和可扩展。
  • 可靠性:即使某个订阅者当前不可用,也不会影响其他订阅者的消息接收。

三、总结

点对点模型和发布订阅模型各有优势:

  • 点对点模型更为简单
  • 发布订阅模型的扩展性更高

参考资料

领域模型概述 | RocketMQ (apache.org)

分布式通信技术之发布订阅模式 - 知乎 (zhihu.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值