前言:实验室由于项目需要,需要将原本的单体环境扩展为分布式的,刚好趁这个机会稍微了解了一下关于MQTT、负载均衡等知识
MQTT协议
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种订阅/发布模式的消息传输协议,使用TCP/IP提供网络连接。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
MQTT中存在三种角色:发布者(publisher)、消息代理(Broker)、订阅者(Subscriber)。其中发布者和订阅者是客户端,消息代理即服务器,消息发布者可以同时是消息订阅者。
MQTT提供了三种QoS等级:
- 至多一次:消息发布完全依赖底层TCP/IP网络,会发生消息丢失或重复。比如温度环境传感器,数据丢失几次无所谓,反正会有新的数据过来。还有就是一些普通app的消息推送,例如当天的一些新闻弹窗呀如果没有推送成功,设备再次上线也无法收到了。
- 至少一次:确保消息送达,但可能会重复。
- 有且只有一次:确保消息只到达一次,服务质量最高但开销也最大。比如一些即时通信app中,消息只能到达一次。
MQTT只是一个网络协议,需要一个消息中间件,目前比较有名的有Mosquitto