为什么通信协议要选MQTT而不是HTTP?
在物联网的世界里,有好多设备,像传感器、手机啥的。这些设备能收集到各种信号或者信息。有些设备没办法直接连上互联网或者内部网络,比如说一些老式的传感器。那这些设备收集到信息后,先把信息发给一个叫工业网关的东西,然后工业网关再把信息传给服务器。还有一些设备,像咱们用的手机,它自己就能连上网,那它收集到信息后,就可以直接把信息发给服务器。

为什么要选MQTT而不是HTTP
有时候,为了让服务器不那么累,我们会选一些比较轻便的通信协议来传信息,就像选轻的包裹能让人搬起来更轻松一样。这里有两个通信协议,一个叫MQTT,一个叫HTTP。我们为啥更愿意选MQTT,而不是HTTP呢?

这HTTP协议啊,它有个首部,就像信封上的地址啥的,这个首部比较大。而且每次用HTTP传数据的时候,都得先发个数据包去连接一下网络,传完数据后,又得发个数据包把网络连接断开。这就好比你每次跟人说话,都得先敲敲门,说完话又得把门关上,多麻烦呀。要是传的数据多了,这样反复连接、断开,数据总通信量就会变得很大,就像你反复开关门,会浪费很多力气一样。
而MQTT就不一样,它的首部比较小,就像一个很小的信封,能装的东西虽然可能少点,但很轻便。而且它能在维持着网络连接(也就是TCP连接)的同时,进行下一次数据的收发。这就好比你跟朋友打电话,不用每次说完一句话就挂电话,然后再打过去说下一句,而是可以一直通着电话,想说什么就说什么,这样是不是就方便多了,也能节省很多“力气”(也就是数据通信量)。所以比起HTTP,MQTT更能抑制数据总通信量。
使用MQTT要注意啥
不过呢,用MQTT的时候也有个要注意的地方。就是要一边维持着MQTT的TCP连接,一边进行数据的发送和接收。因为MQTT就是靠维持这个TCP连接来减少通信量的。要是每次传数据的时候都把这个TCP连接断开,那MQTT就跟HTTP一样啦,每次发送数据都得执行连接和断开处理,这样反而会增加通信量,就达不到我们想要的效果啦。

























