简单聊一聊MQTT

929 阅读3分钟

3 月 30 日,小米在其新品发布会上公布了他们要造车的消息,那场发布会我看完了,其实这个消息在意料之中,如今的手机市场已经趋向饱和,手机厂商竞争加剧,疯狂内卷,手机业务再进行大的扩张也非易事。

就在这两天,极狐阿尔法 S 也面世了,这辆车上搭载的是华为最新的无人驾驶系统,由此可见,围绕着汽车形成的车联网在未来也会逐渐普及。而我也就是一个写代码的,对于企业的战略布局我不关心,这一篇文章也只是想来聊聊新领域背后的一项老技术——MQTT。

何为 MQTT

MQTT 即 Message Queuing Telemetry Transport,中文名为消息队列遥测传输协议,是一种基于发布/订阅模式的"轻量级"通讯协议。其本质上也是构建于 TCP/IP 协议上的一种通信协议,其地位在 OSI 七层网络协议中和 HTTP 协议并列,同属应用层的网络通信协议。

HTTP 协议全称**「超文本传输协议」**,这里的超文本包括 HTML 文件、图片等。因此在设计之初,HTTP 就已经包含了复杂的报文,但我们知道并不是所有的环境都有较好的网络环境,MQTT 的出现正是为了解决这种问题。

MQTT 协议的最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。也正是因为 MQTT 协议是一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

探究 MQTT 的原理

发布/订阅

MQTT 协议是基于客户端-服务器的消息发布/订阅传输协议,在整个通信过程中,有三个重要的角色,分别是发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务端消息发布者可以同时是订阅者

代理(Broker)

MQTT 中的 Broker 类似于一个中转站,位于消息发布者和订阅者之间。在 Broker 中,可以接受客户发布的应用信息,处理来自客户端的订阅和退订请求以及向订阅的客户转发应用程序消息。Broker 通常由一个应用程序或一台设备充当。

消息组成

在 MQTT 中,传输的消息分为:主题(topic)和负载(payload)两部分:

  1. Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容。
  2. Payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

最后

本篇文章篇幅较短,主要是为了向大家介绍一下 MQTT 这一协议的基本信息,下一节将会介绍如何搭建一个可用的 MQTT 环境并用实际代码演示如何使用 MQTT 协议。