代码改变世界

EMQ 与 mqtt 与 IOT设备

2019-09-08 19:58  清风软件测试开发  阅读(1449)  评论(0编辑  收藏  举报

1.IOT设备的特性

IOT(物联网things of internet)设备和传统的智能设备有什么区别,笔者总结下的IOT设备有如下特点:

硬件能力差(存储能力基本只有几MB,CPU频率低连使用HTTP请求都很奢侈)
系统千差万别(Brillo,mbedOS,RIOT等)
如使用电池供电,电量消耗敏感
如果是小设备设备基数大需要维持大量在线链接
网络情况不稳定,移动网络网络资费贵,需要尽量减少开销和稳定


在以上这样苛刻的场景下很多技术上常用在智能设备方案都望而却步,总结一下我们主要面对下面三个问题:

socket.io,websocket? 不同的系统可能无法使用HTTP,设备资源可能使用HTTP都奢侈
TCP/IP自定协议? 虽然不用在意系统,自定义报文怎么解决网络开销问题?
自主研发成本高,使用第三方IOT平台容易被技术或硬件绑定

2. MQTT为什么适合IOT场景

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,使用方式比较类似于队列软件比如RabbitMQ,使用发布/订阅的方式提供互相之间的通讯,MQTT是为在计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:

该协议支持所有平台,几乎可以把所有联网物品和外部连接起来


有三种消息发布服务质量

 “至多一次”,消息的分发依赖于底层网络的能力。接收者不会发送响应,发送者也不会重试。消息可能送达一次也可能根本没送达。这个服务质量常用在鸡肋的消息传递中,即消息丢了也没有关系
 “至少一次”,确保消息到达,但消息重复可能会发生。
 “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。


小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量
使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;


除了MQTT的协议特性外还有一些客观原因:

对语言友好主流语言的客户端都有
大部分硬件方案天生支持
数十个MQTT服务器端程序可供选择
社区成熟解决方案被广泛运用遇到问题方便寻求帮助

 


原文链接:https://blog.csdn.net/u011142688/article/details/79852267