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

最新文章

  1. CSS3中flexbox如何实现水平垂直居中和三列等高布局
  2. FPGA与simulink联合实时环路系列——实验一 测试
  3. xamarin.forms 版本自动更新(针对android)
  4. tas5721 驱动
  5. leptus和cowboy之间某些库的转换
  6. zookeeper监控告警
  7. 巧妙使用checkbox制作纯css动态导航栏
  8. Delphi 停靠技术的应用
  9. pm grant 命令
  10. java中类与对象
  11. 通过四个例子理解JavaScript拓展运算符
  12. 一个 rsync同步文件脚本
  13. Android 运行时权限及APP适配
  14. Python零散函数
  15. qt delete
  16. SQL Server 常用SQL
  17. 笔记-JS高级程序设计-BOM篇
  18. QPushButton按钮
  19. Saiku的下载与安装(一)
  20. Leetcode刷题记录:计算复数乘法

热门文章

  1. c语言学习目标
  2. Swagger Liunx环境搭建(亲测百分百可用)
  3. ffmpeg基础使用
  4. CentOS7.5下搭建的SVN实现删除权限控制和必须进行注释的提示操作
  5. nginx和tomcat配置负载均衡和session同步
  6. Linux——配置maven
  7. 《团队作业第三、四周》五阿哥小组Scrum 冲刺阶段---Day3
  8. 《团队作业第三、四周》五阿哥小组Scrum 冲刺阶段---Day2
  9. Jenkins拉取github库代码执行构建
  10. BZOJ 2200: [Usaco2011 Jan]道路和航线