一.MQTT 物联网数据存储展示方案
1.整体方案
Mqtt Server broke 测试环境选的Mosquitto ,重点是免费,Emqx 开源版有些功能做了限制,不方便测试,然后时序数据库选TDengine,他是一个物联网数据平台做了很多接口,很方便的接入其他软件。
2.TDengine 的技术架构
3. mosquitto 技术架构
3.1开源 MQTT Broker 对比
截止 2020,物联网行业里可选的MQTT Broker有很多,除了经典的Mosquitto和AWS、Azure,百度云、阿里云、IBM等几个提供物联网MQTT接入服务的产品外,可用于商业生产的MQTT Broker还有多款。
本文选取了几个热门开源的 MQTT Broker,其中部分项目提供商业支持,做简单选型对比。
3.2 EMQ X+TDengine 搭建 MQTT 物联网可视化平台
物联网数据采集涉及到大量设备接入、海量的时序数据传输,EMQ X MQTT 服务器 与 TDengine 大数据平台的组合技术栈完全能够胜任场景中的海量时间序列监测数据的传输、存储和计算。
数据入库后,往往需要其他方式如数据可视化系统将数据按照规则统计、展现出来,实现数据的监控、指标统计等业务需求,以便充分发挥数据的价值,TDengine 搭配开源软件 Grafana 可以快速搭建物联网数据可视化平台。
上述整套方案无需代码开发,涉及的产品均能提供开源软件、企业服务、云端 SaaS 服务不同层次的交付模式,能够根据项目需求实现免费版或企业版私有化落地以及云端部署。
二、安装软件包准备
1. Mosquitto server broker for windows x64 服务端
2.TDengine server for linux x64服务端
3. 王总编译的mock.js Mqtt clinet 模拟设备端
4.王总编译的c# Td1_clinet 客户端接口程序
5.Mosquitto 出品的Mqtt 客户端检测使用
6.TDengine 配套的clinet for windows x64 客户端
三、安装重点
1.Mosquitto 安装
windows环境下mosquitto环境搭建与mqtt测试
首先在DownLoad界面,下载服务器源码,一种是根据源码下载,然后在本地通过Cygwin编译Source,另一种是直接下载官网提供的编译好的Binary Installation。
2.TDengine 安装
TDengine文档
Dengine 开源版本提供 deb、rpm、tar.gz 三种安装包,用户可以根据自己的运行环境选择合适的安装包。其中 deb 支持 ubuntu 系统,rpm 支持 centos 系统,tar.gz 包两种系统都支持。
3.运行王总编译的mock.js 环境
要运行mock.js node.js环境是必须的,安装nodejs是基础,我在这把我自己安装步骤教给大家,有的请略过。
安装好后记得给node.js 设置全局变量,然后cd 到mock.js 文件目录,命令行下使用“node mock.js ”即可运行。
ps :一些基本命令
cd d: 切换到 D盘
dir 命令 显示当前目录文件
node mock.js 用nodejs 运行mock.js文件
4. 运行编译好的Td1_clinet
注意配置appconfig 文件,这里仅做测试。
5. Mqtt clinet 客户端 的使用
本案例中有多个 clinet 工具可以配合使用 :
第一、使用MQTT.fx安装配置教程
MQTT.fx支持windows/linux/mac,请选择对应的版本进行安装,本例以Windows10为例,版本为1.7.1 。
下载地址: http://www.jensd.de/apps/mqttfx/
第二、使用力马平台集成的Mqtt功能
6.TDengine 配套的clinet for windows x64 客户端
TDengine连接器 ,也是连接客户端
Windows x64/x86
6.1. 从涛思官网(https://www.taosdata.com/cn/all-downloads/)下载 :
X64硬件环境:TDengine-client-2.X.X.X-Windows-x64.exe
X86硬件环境:TDengine-client-2.X.X.X-Windows-x86.exe
6.2. 执行安装程序,按提示选择默认值,完成安装
6.3. 安装路径
默认安装路径为:C:\TDengine,其中包括以下文件(目录):
taos.exe:taos shell命令行程序
cfg : 配置文件目录 driver: 应用驱动动态链接库 examples: 示例程序 bash/C/C#/go/JDBC/Python/Node.js include: 头文件 log : 日志文件 unins000.exe: 卸载程序
6.4. 配置taos.cfg
编辑taos.cfg文件(默认路径C:\TDengine\cfg\taos.cfg),将firstEP修改为TDengine服务器的End Point,例如:h1.taos.com:6030
6.5 提示:
A 如利用FQDN连接服务器,必须确认本机网络环境DNS已配置好,或在hosts文件中添加FQDN寻址记录,如编辑C:\Windows\system32\drivers\etc\hosts,添加如下的记录: 192.168.1.99 h1.taos.com
B.卸载:运行unins000.exe可卸载TDengine应用驱动。
四、测试状态
如图所示开启分别开启mosquitto 服务端、mock.js 、Td_clinet 三个程序启动。
在装有TDengine clinet 的计算机上启动 taos; 命令为 taos -h td1;另外该命令生效前提首先是设置全局变量,第二设置FQDN(TDengin 因为是分布式数据库,支持域名方式访问)
五、测试的一些小技巧
1. restful API 接口(conneter)测试软件
1.1因为接口存在,我们需要用第三方API 测试软件来测试TDengine conneter API 是否配置正常,常用软件有Postman , 有开源版本下载,详见安装配置教程。
1.2 另外推荐一款更加方便的Api 测试工具 Talent API Tester , 界面与Postman 类似,但是功能更强大,基于chrome 插件无需安装,无需注册,在chrome store 下载后直接使用。
2.TDengine 查询读取SQL 压力测试
2.1 网友提供的一些压力测试思路
2.2 现实采用的思路
参考相关网络测试案例,上述的mock.js 即是模拟1-1000个设备每5秒发送一个主题消息;而Td_clinet.exe 则是模拟接收写入,同时可以开启多个Td_clinet 程序,多次写入,重复写入,测试整个方案的写入压力测试。
查询压力测试则是通过 TDengine clinet 提供shell 命令,把多个taos sql 的命令保存成.bat 文件,自动运行 shell 下的taos sql 命令,可以比较清楚看到查询执行状态和结果,提高测试效率
六、本测试方案一些难点
1. 服务端、客户端软件对硬件要求
比如TDengine 暂时不支持window系统服务器;比如TDengine server for linux 各个分支不同版本,比如centos ,或者unbunt ,甚至处理是X86(32位) 还是x64;是 x86系列CPU 还是ARM 系列CPU ,又或者提供编译好的rpm 包,deb 包 ,还是 tar.gz(二进制包)。
Linux下软件包的分类及deb、rpm、tar.gz的区别
2. 解决win7不能识别cURL中的单引号问题
我们在windows系统上用cURL操作ElasticSearch时,会出现单引号不被识别的情况。即使用转义字符也不好使。
解决办法:在此处 https://cygwin.com/install.html 下载cygwin,然后安装到你的windows系统上,用它来代替windows自带的控制台就可以了。