MQTT 1——物联网集成项目技术选型与说明
最近做的JAVA项目与物联网设备有集成,记录一下从技术选型到实现,整合:
1.通信协议技术选型,MQTT技术介绍
2.MQTT服务端安装,客户端测试
3.MQTT客户端与Spring MVC整合
1.项目整体架构介绍:
JAVA服务端(以下简称服务端):部署在外网,提供固定IP地址+端口的访问;
物联网设备(以下简称终端):部署在各个不同区域,联网方式也可能是:WIFI,物联网卡中任意一种;
2.通信协议选择
HTTP:作为主流的WEB上使用的协议,简单,直接,上手度快;但是HTTP作为单向的短链接协议,无法解决本次对接碰到到两个问题:
1)本次对接不仅仅是单向终端到服务端的接口,还有大量的需要服务端向终端发布执行指令,而采用HTTP协议,势必终端需要不间断的向服务端去轮询以获取最新的指令,如果会有大量空跑的网络请求,影响网络与服务器性能;
2)HTTP作为WEB端常用的协议,因为本身头中带的信息量就比较大,不太适用网络环境不稳定的情况;
MQTT: 之前没有接触过这样的协议,是由对方硬件工程师提出的。是目前物联网设备间比较主流采用的通信协议。
MQTT特点天生完美解决上面2个问题
3. MQTT的特点
1)是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)
2)每个连入进来的设备既可以作为发布者发布消息,也可以注册成为消息订阅者,从服务器端订阅相关消息。
3)MQTT协议被设计成适合工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。所以对网络的质量要求没有那么高
4.下一篇MQTT2——MQTT服务端安装,客户端测试
更多参考网站
更多MQTT说明 https://www.runoob.com/w3cnote/mqtt-intro.html
作者:admin
原文地址:www.jiansword.com
MQTT 1——物联网集成项目技术选型与说明的更多相关文章
- react 前端项目技术选型、开发工具、周边生态
react 前端项目技术选型.开发工具.周边生态 声明:这不是一篇介绍 React 基础知识的文章,需要熟悉 React 相关知识 主架构:react, react-router, redux, re ...
- (转).net项目技术选型总结
原文作者:mcgrady 原文地址:.net项目技术选型总结 做.net开发已经几年了,也参与开发了很多大大小小的项目,所以现在希望总结出一套开发.net项目的常用技术,也为以后做项目技术选型的时候作 ...
- .net项目技术选型总结
做.net开发已经几年了,也参与开发了很多大大小小的项目,所以现在希望总结出一套开发.net项目的常用技术,也为以后做项目技术选型的时候作为参考. 数据库 小型项目:SQLite(工具) 中大型项目: ...
- 2019年java大型项目技术选型
学习一下 1,公司使用的架构是:SpringCloud + K8S 这一套主流技术,但是还是入门级别的. 还包含apollo ,xxlJob ,SkyWalking,Cat,GrayLog等 2,G ...
- DataPipeline丨构建实时数据集成平台时,在技术选型上的考量点
文 | 陈肃 DataPipeline CTO 随着企业应用复杂性的上升和微服务架构的流行,数据正变得越来越以应用为中心. 服务之间仅在必要时以接口或者消息队列方式进行数据交互,从而避免了构建单一数 ...
- 【SSM之旅】Spring+SpringMVC+MyBatis+Bootstrap整合基础篇(一)项目简介及技术选型相关介绍
试水 一直想去搭建个自己的个人博客,苦于自己的技术有限,然后也个人也比较懒散.想动而不能动,想动而懒得动,就这么一直拖到了现在.总觉得应该把这几年来的所学总结一番,这样才能有所成长. 不知在何时,那就 ...
- 从零开始搭建django前后端分离项目 系列一(技术选型)
前言 最近公司要求基于公司的hadoop平台做一个关于电信移动网络的数据分析平台,整个项目需求大体分为四大功能模块:数据挖掘分析.报表数据查询.GIS地理化展示.任务监控管理.由于页面功能较复杂,所以 ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍
作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载. 萌芽阶段 很久之前就开始打算整理一下自己的技术博客了,由于各种原因(借口 ...
- 剑指Kubernetes 揭秘腾讯云的PaaS技术选型策略
1.前言 Kubernetes 很火,一大批互联网公司早已领先一步,搭建起专有的 PaaS平台,传统企业们看到的 Kubernetes的趋势,亦不甘落后,在试水的道上一路狂奔-- 虽然,Kuberne ...
随机推荐
- mybatis在动态 SQL 中使用了参数作为变量,必须要用 @Param 注解
如果在动态 SQL 中使用了参数作为变量,那么就要用 @Param 注解,即使你只有一个参数.如果我们在动态 SQL 中用到了 参数作为判断条件,那么也是一定要加 @Param 注解的,例如如下方法: ...
- Handler_read_*的总结
在分析一个SQL的性能好坏时,除了执行计划,另外一个常看的指标是"Handler_read_*"相关变量. Handler_read_key Handler_read_first ...
- Python批量重命名 工具贴(一)
说明 由于在处理图片数据和其他数据时,经常需要对数据进行批量重命名操作,每次使用时都需要重写,非常不便,因此记录下重命名代码方便后续使用. 文件结构说明 参数说明: path为输入路径 image_t ...
- 使用 Docker 部署 Node 应用 - 镜像文件尺寸的优化
前面 使用 Docker 部署 Node 应用 一文中完成了镜像的创建和运行,不过生成的镜像还有些粗糙,需要进一步优化. 镜像的优化 通过 docker images 看到简单的一个 node 服务端 ...
- 【曹工杂谈】Mysql客户端上,时间为啥和本地差了整整13个小时,就离谱
瞎扯一点非技术 本来今天上午就打算写的,结果中途被别的事吸引了注意力,公司和某保险公司合作推了一个医疗保险,让我们给父母买,然后我研究了半天条款:又想起来之前买的支付宝那个好医保,也买了两年多了,但是 ...
- 【Linux进阶】使用grep、find、sed以及awk进行文本操作
目录 一.元字符 二.grep命令 1. 过滤出包含某字符串的行 2. 过滤出以某字符串开头(结尾)的行 3. 过滤出包含某字符串及其相邻的行 4. 过滤出不包含某关键字的行 5. 过滤出包含多个字符 ...
- daily plan
想了想自己留的坑有点多了,写个计划提醒自己 一些没做出来的题 csp-s模拟测试54 z csp-s模拟测试b层加餐 string 平衡树+并查集 因为某杰的**安排,没时间改了csp-s模拟测试47 ...
- Java-Lambda相关使用介绍
频繁使用的语句 Lambda又涉及到comparator和comparable区别(Comparable是实现comparable接口,实现后可以使用Collections.sort或Arrays ...
- 『心善渊』Selenium3.0基础 — 9、使用Seleniun中的By类定位元素
目录 1.使用By定位的前提 2.By定位的方法 3.By定位的使用 4.复数形式的示例 我们还可以通过Seleniun测试框架中的By类,来实现页面中的元素定位. 1.使用By定位的前提 需要导入B ...
- CloudCanal
CloudCanal 是一款数据迁移同步工具,帮助企业快速构建高质量数据流通通道,产品包含 SaaS 模式和私有输出专享模式.开发团队核心成员来自大厂,具备数据库内核.大规模分布式系统.云产品构建背景 ...