SSE,RocketMQ,MQTT不同之处

这三种传输信息的方式,看起来都通过一个"中间人",传输信息的方式大差不差。但其实本质上是完全不同的。

SSE:

本质上还是HTTP请求,只不过是一种长连接的HTTP,而且是单向的,只能服务器到客户端。假设现在有两个客户端,一个服务器。客户端a先和服务器建立了连接,这个连接不会马上就关闭,假设a要给b发消息,a通过post请求把消息发到服务器上了,服务器先存库。但是这个时候b还没有和服务器建立连接,所以消息暂时是发不出去的,不过a感觉不到,因为a的消息本来也不用发给自己。等b和服务器建立连接之后,此时a再给b发消息,那么消息就会顺利的发送到b这边(但是那条没发出来的消息得靠b自己拉一次历史消息才能看到)。这样就能产生一种实时推送的感觉。a发消息了,消息就顺着这根长连接的水管从服务器这边自动流向b,同样的,b发消息了,消息也会顺着这根长连接的水管发给a。

有点像这样子的感觉(服务器的"海拔"要高于a和b):

客户端a 客户端b

│ │

管子A│ │管子B

│ │

└──────▶ 服务器 ◀────┘

RocketMQ:

这是一个中间件了,由NameServer和Broker组成,其中NameServer是带代码查找的东西在哪里的,Broker是存放的地方。整体流程是:producer这边发送了一个消息给broker服务器,broker会把消息接收并存磁盘,与此同时comsumer这边会不断的询问broker服务器有没有我的新消息。等到broker说有以后,comsumer就会自动拉取消息。

MQTT:

这个和HTTP一个级别,是一种通信协议了,一般作用于无人机和物联网这边。假设现在有一个无人机的记载端,一个后端服务器。机载端开机之后,先连上broker,告诉broker,我要订阅这个topic的消息,那么之后只要有发送到这个topic的消息,broker会自动发给机载端。后端服务器想发送消息给机载端的话,它不会直接和机载端通信,它是先把消息发给broker服务器,broker根据这条消息要发送到的topic,查找订阅了这个topic的"人",然后自动把这个消息发给这个"人"。在这个过程中,后端服务器是不知道有多少机载端订阅了这个topic的。信息被发给机载端这边之后,如果机载端想回复,那么整体流程是一样的,但是发消息和接消息的topic不是同一个,同样的,后端服务器发消息和接消息的topic也不是同一个。所以机载端这边发消息也会先把消息发给broker服务器, broker根据要发到的topic,自动发给订阅了这个topic的后端服务器。(broker全程只有一个端口,怎么区分发送消息的地址就靠topic区分的)

相关推荐
starsky762381 小时前
Agent学习——AI Agent总体概览
学习
東隅已逝,桑榆非晚1 小时前
c++模板进阶
开发语言·c++·笔记·学习
JWASX1 小时前
Java 转 go 学习 - map
学习·golang
杨逢昌工厂6S管理1 小时前
107-杨逢昌钣金车间换型管控:从物料切换杂乱到有序换型的四步技术方案
经验分享·笔记·职场和发展·学习方法
扶风ff10 小时前
新品知识更新太快?用练题簿在线刷题,安排企业培训的小测与复盘
前端·学习·小程序
FakeOccupational12 小时前
【电路笔记 信号】DBPSK 波形查找表+脉冲成形(升余弦+根升余弦滤波)
开发语言·笔记
传奇开心果编程12 小时前
【SwiftUI提高练中学】第13课 实时活动与灵动岛:ActivityKit 实战
学习·ui·ios·swiftui·swift
欣欣之王来了12 小时前
Python入门:什么是Python以及为什么选择它
学习·架构·面向对象·项目·python教程
dadaobusi13 小时前
pcie原子操作和nvme原子操作
学习