开发者学堂课程【嵌入式之 RFID 开发与应用2020版:MQTT 通信过程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/665/detail/11174
MQTT 通信过程
内容简介:
一、服务端的含义及用途
二、客户端的分类及用途
三、QoS 0,Qos1,QoS2 消息服务质量的通讯过程
四、客户端接收消息是否需要已订阅客户端在线
一、服务端的含义及用途
根据之前讲的协议,数据包的格式来分析通信的具体过程。讲解有效的数据载荷根据连接标志,可以参考数据手册。通信过程回顾三个角色的作用或者是三个角色的任务。首先对于服务端来说,服务端可以是一个程序或设备,通常情况下应该是一个服务器的程序,作为发送消息的客户端和请求订阅的客户端之间的中介。所以把它叫做 Broker。服务端还能接受来自客户端的网络连接,接受客户端发布的应用消息,处理客户端的订阅和取消订阅请求,并且转发应用消息给符合条件的已订阅客户端。这是服务端的用途。
二、客户端的分类及用途
客户端分为两种:一种是消息发送客户端一种是订阅客户端。客户端通常是终端设备,客户端总是通过网络连接到服务端。服务端一直是运行的,服务器如果是断掉的话,客户端是连接不上的,客户端发的消息也不会被保存。这属于时间上的解耦 ,但前提是服务器不能断开, 所以服务器一直处于运行状态。那么它可以发布应用消息给其它客户端,它也可以请求接收相关的其它发的消息以主题为中心,还可以取消订阅从而来移除对某些消息的接收请求,并且还可以从服务器断开。
三、QoS 0,Qos1,QoS2 消息服务质量的通讯过程
1、QoS 0 消息服务质量的通讯过程
其次主要是学习这三种消息服务质量的通讯过程,分别是 QoS 0,Qos1,QoS2。它们不一样的地方,很好理解。对于我们第一种服务质量,就是发送数据,客户端直接通过 PUBLISH 把主题加内容发给了服务器,但是这里面有一个问题就是服务器在不在,服务器能不能收到,服务器能不能把数据给到客户端。这些都是未知的。所以说这个导致的结果就是服务器最多收到一次,不能说服务器,应该说是其它客户端,对于发布的这个消息最多可能收到一次。
2、Qos1 消息服务质量的通讯过程
第二个就是把消息发出去了,也就是主题加内容,那么必须发完了等待服务器的一个应答 就是说服务器必须给一个应答 。如果没有等到这个应答的话,可能还会再发送一次。到底之间接收到多少次应答,根据网络环境是不确定的,但是只有接收到应答之后才可以结束,所以导致的结果就是这个服务器有可能会多次转换,也就是导致这个客户端收到至少一次这个消息,记住是至少一次。那么这其实对于开关量,比如说把某个阀门打开,这个操作也就可以用这种至少一次,就是一次没打开那再开一次也无所谓,所以说这种就属于 QoS 1。
3、QoS2 消息服务质量的通讯过程最后一种,就是叫做仅有一次。那么也就是说这个过程的话是首先把主题和消息发给这个服务器,服务器说 Record 就是应答的记录,其实就是指的是把发的消息已经记录下来。客户端已经记录下来了,那它还会回一个把消息释放的信号,服务器就接收了。在服务器收到之后服务器就回一个,消息发布完成,那么 MQTT Client 的任务结束。
四、客户端接收消息是否需要已订阅客户端在线
Qos2 里面的机制没有研究过,其实这个过程完成了之后,客户端是否收到能够接受消息,如果没有上线,那么这四个来回是不是能正常完成,还是必须上线,这个问题其实毋庸置疑,既然讲到 MQTT 通讯的三大解耦,其中一个就是讲不必在线,也就意味着订阅主题的客户端,它可以不在线,而这四次通信过程完全是发布方跟服务器之间完成。也就是认为 POBCOMP 这个动作已经完成了。但是这个客户端根本没有订阅到这个消息。如果说客户端起来之后,其实服务器跟客户端之间还要经过类似的多次交互,也是差不多四次这样的过程,把数据给到订阅端。所以这个四次不只发生在发布者和服务器,同时也发生在订阅者和服务器之间,所以不能认为 Qos2 过程复杂,最后直接订阅,那订阅之后没有收到,所以说它是同样的遵循这样一个过程。
五、MQTT 协议给生活带来的便利
最后总结一下整个过程,设备端可以是独立的设备,当然是带上网能力的设备,直接通过自己的 MQTT 客户端协议就可以连接到服务器,如果终端不具备上网能力,比如一些低功耗设备 ,需要把这些传达网络数据收集起来,通过一个网关,网关具有上网的能力,而且网关建了一个上网,那它就可以运行 MQTT 的客户端的程序,就会把数据再次交给服务器,服务器拿到数据之后,就可以去做各种应用。但是这个应用完全取决于传单网络数据类型,即传单网络具体的应用场景,到底是汽车里面还是智慧城市还是属于工业还是智能家居包括医疗,就可以对这些数据做很多的处理,比如说曲线图,柱状图,笔状图,还有热烈图,包括对数据的历史分析、特征抓取,甚至是数据挖掘。这就是应用层可以去做的工作。这是 MQTT 协议带来的便利。
那么有关协议的数据传输过程就结束。