• 微信:WANCOME
  • 扫码加微信,提供专业咨询
  • 服务热线
  • 0769-23063100
    13027920428

  • 微信扫码访问本页

图解:消息传输的架构模式

旺道.商弈 -> 正文

从概念上讲,一条消息是一个发送方与一个或多个接收方之间的一次信息交换。自从大型机问世以来,消息交换一直是计算机编程和架构设计的重要组成部分。


多年来,消息传输的实践已经发展成多种消息传输模式。在本文中,我将分享一些较为常用的方法。我将这些模式分为两部分。第一部分的标题为“消息交换架构”,描述了在发送方和接收方之间移动消息的结构。第二部分是“路由”,涵盖了用于在发送方和接收方之间传递消息的逻辑。

消息交换架构

本节描述与在发送方和接收方之间传输消息的机制相关的消息传输模式。

发布-订阅

发布-订阅(Pub-Sub)模式指的是发布者将消息发送到消息代理(broker)上的主题(topic)。你可以将主题视为一个收件箱。这个收件箱的概念根据实现技术而有不同的名称。例如,RabbitMQ 将收件箱称为 Exchange,而 Kafka 将收件箱称为 Topic。订户绑定到主题,并以异步方式从主题接收消息。



发布-订阅模式非常适合向感兴趣的各方提供事件信息


发布-订阅模式的好处是它相对简单:消息输入,消息输出,完事儿。另外如上所述,发布-订阅模式是异步的。因此,在发送方和接收方之间没有阻止锁。发送方将消息发送给代理,然后移至其他任务。接收方在方便时接收消息。发布-订阅模式中的消息往往是离散的,包含进程对提供的数据进行操作所需的所有信息。

扇出

扇出(Fanout)与发布-订阅模式类似:感兴趣的人可以绑定到一个主题,也就是收件箱。扇出模式与典型的 Pub-Sub 区别在于,许多感兴趣的参与者都将绑定(也称为订阅)到一个给定的主题。然后,当一条消息发送到该主题时,所有订阅者都将收到发送到该主题的消息的副本。该消息被“分发出去”。(请参见下面的图 2)



扇出模式将向所有感兴趣的订阅者发送消息的副本


Twitter 是扇出模式的一个很好的例子。某人发送一条推文后,推文会发送给所有粉丝。

单向流

单向流(Unidirectional streaming)模式指的是发送方连续向接收方发送数据的模式。发送方可能是具有关于接收方直接知识的服务,例如连接到互联网上的网站并不断发送自身位置 GPS 信息的手机,如下图 3 所示。



在单向流模式中,发送方连续向接收方发送数据


或者,发送方可能连接到某种代理技术,代理又通过某种主题/收件箱机制转发流,如下图 4 所示。绑定到代理“收件箱”上的接收方这样就能接收连续的消息流。



使用消息代理管理单向流


Apache Kafka 是实现单向流的消息代理技术的一个示例。

双向流

双向流(Bidirectional streaming)是指在发送方和接收方之间,以及接收方和发送方之间连续发送消息流的情况,如下图 5 所示。



双向流模式在服务器和接收方之间在两个方向上连续不断地流转数据


双向流传输的一个示例是 gRPC。gRPC 在 HTTP/2 下运行,它允许发送方建立与接收方的恒定连接。连接后,数据可以连续在发送方和接收方之间来回流动。

路由

本节列出的消息传输模式描述了在发送方和接收方之间路由消息的各种方法。发布-订阅、扇出和流模式专注于数据传输的架构,而单播、广播、多播和任播模式则专注于路由。

单播

在单播(Unicast)模式中,消息从发送方路由到指定的接收方。单播模式的一个众所周知的示例是 HTTP 请求/响应交换。



在单播模式中,发送方向单个接收方发送一条消息


发送方(在这里是 Web 浏览器)将请求消息发送到网络上特定位置的 Web 服务器。互联网的路由机制知道如何找到这个 Web 服务器并相应地传递请求(又称消息)。然后,该 Web 服务器使用相同的路由机制将响应消息发送回调用方。

广播

广播(Broadcast)模式是一种发送方向网络上的所有接收方发送消息的模式。网络路由器负责发现网络上的设备并相应地转发消息。



在广播模式中,发送方向网络上的所有接收方发送一条消息


广播模式的一个示例是地址解析协议(ARP)。在 ARP 下,路由器知道网络上存在的物理设备,然后将设备标识符 MAC 地址与逻辑 IP 地址相关联,进而据此转发消息。

多播

多播(Multicast)模式将消息从发送方转发到特定的接收方组(请参见下面的图 8)。比如说,可以通过设备类型或网段在网络上指定组。



多播模式将消息从发送方转发到网络上的一组接收方


互联网协议电视(IPTV)是多播模式的一个典型实现。例如,IPTV 数据会流式传输到连接到特定“频道”的设备,例如 Facebook 下的直播或特定的视频会议会话。

任播

在任播(Anycast)模式中,路由器将消息发送到满足一组确定因素中规定条件的接收方。任播模式的逻辑是“将此消息发送给满足以下条件的任何接收方”。通常来说,任播模式用于根据地理位置的接近程度将消息从发送方路由到接收方,如下图 9 所示。



内容交付网络通常使用任播模式


内容交付网络(CDN)是一种使用任播模式的技术。接收方可以使用 CDN 从互联网上距离它最近的服务器接收数据。

总结

如果你是在应用程序开发活动中一直在使用消息传输的架构师或开发人员,则很可能已经很熟悉上面介绍的模式了。这些模式中有的名字你可能之前没见过,但实际的实现一看就能认出来。


用通用名称封装消息传输模式的好处在于,它允许架构师和开发人员以相同的方式讨论同一件事。对消息传输模式使用常规名称可以节省时间。在设计会议中,说“使用发布-订阅模式是满足这项业务需求的好方法”要比花时间做出详尽的解释容易得多。当然,隐含的假设是会议中的每个人都了解所引用的模式背后的细节。希望本文所提供的内容和插图可以帮助人们对当今企业架构中使用的较流行的消息传输模式达成共识。

短视频矩阵推广 企业运营方案

一、企业为什么要做短视频矩阵?单账号风险大企业要做短视频矩阵,主要是为了避免单一账号存在的风险。一旦账号出现限流、降权或封号等情况,企业将失去该

适合美术机构、书法培训机构管理软件有哪些功能特点

美术、书法培训机构,是除了音乐、舞蹈、机器人编程等教育培训机构以外,提升孩子美学和文化艺术素养的素质教育机构。一家中小型的美术、书法机构,可能已

深圳大卖重金招ChatGPT人才,开出35k!

在众多行业中,跨境电商已成为ChatGPT的最强应用领域之一,从注册、使用到发现弊端,跨境人迅速完成初体验并将其用于工作。

程序员三大基础思维简谈:协议、接口和分层

不管是硬件设备、软件概念或者是网络通讯中,协议、接口无处不在,软件系统离不开分层模型。协议和分层,各种课程都有涉及,但可惜的是,很多计算机类专业

与人交往“最精明”的方式,不是请客吃饭,而是给他们3样东西

现实里,结交一个人的最好方法,是什么?其实现实里,成年人都需要了解一点这种知识。否则,光靠自己的技能,恐怕路不好走。

轻松掌握 RAID 配置:各大品牌服务器攻略(保姆级教程)

RAID 0 级别:比如服务器设备上有 4 块 4T 硬盘,配置 RAID 0 后,这4块硬盘就变成了一个整体,也就是4块硬盘 * 4T = 1... ...

系统思维——拥有看穿本质的能力

系统思考帮助我们打破原有的思维定式,纵观全局,看清事物背后的结构和逻辑,才能解决现实世界中的复杂问题——《系统思考》丹尼斯·舍伍德你一定遇到过这... ...

2024流量共生,公域做规模,私域要复利

公域和私域是共生关系,在单独探讨一方时候总不自觉地思考与另一方的关系和联动。有很多企业两者之间会有所侧重,比如重公域销售,跑通投产比就持续放大,... ...

打造个人商业IP,理清赚钱逻辑

做个人商业IP是一门稳赚不赔的生意,它是把你现有资源、业务、知识、流量、能力、经验等,加了一个超级杠杆,做了一次乘法。... ...

生意有术(NO.12):生意千万条,务实第一条

个人经验是这样的,在合作之前,我会做大量的背调,从公司、老板、产品等搜集到足够多的信息。我不会用百度去搜新闻,看官网,这些信息没多大参考价值,有... ...

分布式架构和微服务架构的区别

1、含义不同微服务架构是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中。分布式系统是若干独立计算机的集合,这些计算机... ...

系统运维日常巡检都做什么-8大步骤

系统运维日常巡检是确保服务器和网络正常运行的重要任务。正常情况下系统运维日常巡检的步骤和程序:步骤一:检查硬件服务器状态:确认服务器是否在线,运... ...

SaaS ERP和传统ERP的区别在哪里?

SAAS是什么SaaS,Software-as-a-Service,软件即服务。说白了就是指用户不用再购买软件,而改用向软件提供商租用基于Web... ...

36w字!腾讯高工甩出MySQL速成手册,基础架构调优三飞

想要精通MySQL你就必须知道如何设计一个高可用可扩展的企业级MySQL数据库集群以及高性能高可用MySQL调优方法。但大多数人对于MySQL的... ...

华为发布了跨平台开发的ArkUI-X,我不允许你学不会!

就在8月7日开源鸿蒙 OpenHarmony 4.0 Beta2 发布,多平台开发框架 ArkUI-X 首发。首先介绍下啥是 ArkUI:Ark... ...

桌面应用开发常用技术栈

开发电脑桌面应用可以使用多种技术栈,具体选择取决于开发者的需求和偏好。以下是一些常见的技术栈:前端开发技术栈:通常使用桌面应用开发框架,如Ele... ...

Ideogram:一款秒杀Midjourney,免费无限生成的AI绘画神器

导读:Ideogram AI是一个文本生成图片的平台,它最大的优点就是好用、免费又没有生成限制,因此可以秒杀MJ和SD。AI绘画是人工智能领域的... ...