初识MQTT协议(1)

最近在使用mqtt做一写数据的处理,查阅一些资料后写下一些个人的认识


MQTT:Message queuing telemetry transport(消息队列遥测传输),是IBM开发的一个一个即时通讯协议,被应用于物联网中。几乎可以把所有物联网设备与外物连接起来。被用来当作传感器与制动器的通信协议。是一款针对机对机(M2M)通信的,非常轻量级的的消息订阅、发布协议。它适用于一些系统资源和网络带宽非常有限的情况下的远程连接。 


通俗的讲:利用mqtt协议,服务器就可以不断向你推送消息,这样实时性比较好


MQTT的设计思想是开源、可靠、轻巧、简单,MQTT的传输格式非常精小,最小的数据包只有2个比特,且无应用消息头。MQTT可以保证消息的可 靠性,它包括三种不同的服务质量(最多只传一次、最少被传一次、一次且只传一次),如果客户端意外掉线,可以使用“遗愿”发布一条消息,同时支持持久订 阅。MQTT在物联网应用中的优势有:

1、可靠传输。MQTT可以保证消息可靠安全的传输,并可以与企业应用简易集成。
2、消息推送。支持消息实时通知、丰富的推送内容、灵活的Pub-Sub以及消息存储和过滤。
3、低带宽、低耗能、低成本。占用移动应用程序带宽小,并且带宽利用率高,耗电量较少

初识MQTT协议(1)

上图说明:绿色为订阅  红色为 发布的方向



特性一:
发布/订阅模式(发布/订阅)是传统客户端 - 服务器模型的替代方案,其中客户端直接与端点进行通信。
使用发布/订阅(pub/sub)模式:Pub / Sub会将正在接收消息(称为订阅者)的另一个客户端(或多个客户端)发送特定消息(称为发布者)的客户端解耦。这意味着 发布者、订阅者不知道彼此的存在。pub / sub中的主要方面是发布者和接收者之间的解耦


可以从多个方面进行分析:
空间解耦:发布者和订阅者不需要相互了解;(例如不需要对方的ip地址和端口)
时间解耦:发布者和订阅者不需要同时运行;
同步解耦:在发布和订阅期间,两个组件的操作都不会暂停;
代理(broker):基于三种方式进行消息过滤;
·1、基于主题的消息过滤
2、基于内容的消息过滤
3、基于类型的消息过滤出
MQTT与消息队列无关;那么mqtt 与消息队列有什么不同:
1、消息队列存储消息,直到被消耗
使用消息队列时,每个传入消息都将存储在该队列中,直到被任何客户端(通常称为使用者)提取。否则,消息就会被卡在队列中,等待消耗。
2、一条消息只能被一个客户端使用
在传统的队列中,消息只被一个消费者处理。这样负载可以分配给特定队列的所有消费者。在MQTT中恰恰相反,如果订阅了主题,每个订阅者都会收到消息。
3、队列被命名,且必须显示创建
队列比主题更不灵活。在使用队列之前,必须使用单独的命令来显式创建队列。只有在这之后才有可能发布或使用消息。在MQTT中,主题非常灵活,可以随时创建。