物联网设备数据是如何流转的:基于EMQX与TDengine的前后端分离项目实践

简介: 物联网设备数据是如何流转的:基于EMQX与TDengine的前后端分离项目实践

背景


在我写TDengine极简实战:从采集到入库,从前端到后端,体验物联网设备数据流转这篇文章后,不少读者朋友评论、私信说可不可以提供代码参考学习下,那必须是可以的。那篇文章主要介绍了数据采集、数据传输、数据转发、数据解析、数据存储、数据查询、数据呈现、数据导出、消息推送的物联网设备数据流程过程,作为体验 TDengine 的极简实战项目,没引入过多的业务设计(复杂功能)以及异步解耦设计(消息中间件),甚至没有用到微服务架构。

image.png

在整理代码的过程中,我发现虽然整个项目并不复杂,但是涉及到的技术点较多,有必要对关键的组件进行说明;当前代码已经整理完毕,并升级 EMQX (4.2.4-->4.4.2)与 TDengine (2.2.0.0-->2.4.0.16)这两个核心服务组件为最新版。不过实践出真知,我还是建议大家能够自己动手实践下,因此我决定将实现的过程拆分为不同的模块,逐篇介绍下从数据采集、转发、存储、查询、推送、展现、导出的全过程,相当于这个极简实战项目相对详细的 README.md 文档。


人至践则无敌。


写作计划


将实现过程进行分解,拆分为几个关键步骤,在安排各篇文章时,尽量拆分为小的模块,小步快跑,初步暂定以下内容。


  1. 物联网设备数据流转之搭建环境:开源云原生分布式物联网MQTT消息服务器EMQX
  2. 物联网设备数据流转之搭建环境:开源高性能分布式支持SQL的时序数据库TDengine
  3. 物联网设备数据流转之实时数据从哪里来、如何转发:Node.js, MQTT, EMQX的Webhook
  4. 物联网设备数据流转之搭建后端服务框架:SpringBoot统一响应封装,全局异常拦截
  5. 物联网设备数据流转之数据如何存储:TDengine集成SpringBoot, MyBatisPlus实现ORM与CRUD
  6. 物联网设备数据流转之数据如何查询:TDengine条件查询, 聚合查询, 分页查询, TopN查询, 降采样
  7. 物联网设备数据流转之搭建前端服务框架:Vue3.0, ElementPlus, Axios, Echarts
  8. 物联网设备数据流转之前后端数据交互与展示:Layout, Cascader, Card, Dialog, Table, Pagination
  9. 物联网设备数据流转之数据如何进行可视化:Echarts图表
  10. 物联网设备数据流转之数据如何导出:Excel文件
  11. 物联网设备数据流转之数据何时存储:Spring事件及监听机制, 数据入库
  12. 物联网设备数据流转之数据如何实时推送至前端:WebSocket服务端推送
  13. 物联网设备数据流转之数据如何实时推送至前端:WebSocket前端接收
  14. 物联网设备数据流转之告警信息推送:TDengine-alert
  15. 物联网设备数据流转之历史数据从哪里来:TDengine批量写入数据


技术选型


image.png

  • 物联网终端技术:
  • MQTT
  • EMQX
  • Node.js
  • 后端技术:
  • SpringBoot
  • TDengine
  • TDengine-alert
  • MyBatisPlus
  • WebSocket
  • Lambda
  • HuTool
  • 前端技术:
  • Vue
  • vue-router
  • ElementPlus
  • Layout 响应式布局
  • Cascader 级联选择器
  • Card 卡片
  • Dialog 对话框
  • Table 表格
  • Pagination 分页
  • DateTimePicker 日期时间选择器
  • Message 消息提示
  • Echarts



适合谁看


从整个架构来看, TDengine 在整个系统中扮演的角色无非就是个数据库,所以其实也没多复杂,我们可以简单将其理解为类似 MySQL , PostgreSQL , MongoDB , ElasticSearch , HBase , ClickHouse 抑或 Redis 这种存储层,只是这对应的每一种存储方案有其独特之处,需要进行针对性的学习,关于 TDengine 各项功能的具体细节,我们这里不做展开,可参考前面写的 TDengine 入门系列共15篇文章。


希望熟悉物联网设备数据流转过程的后端工程师、前端工程师以及运维工程师。


如果你是一名后端工程师,我假设你的机器上当前已具备Java环境(JDK,Maven) 如果你是一名前端工程师,我假设你的工作环境肯定已经安装了Node.js 如果你是一名运维工程师,我假设你对Linux的基本操作必然已烂熟于心

可是,如果你是一个小白,那也没关系,经过这个系列,在熟悉物联网设备流转过程的同时你会顺便了解下如今主流的前后端分离技术栈是如何串联起来的。


你要学前端、后端还是运维?作为成年人,我三个都要学。


在实际工作中,我一直都建议团队里的同学要一专多能,前端的同学可以接触下后端或运维的知识,后端的同学也可以适当了解下前端的内容。接触并不代表一定要做,了解整体可以培养你的全局观,这是作为系统架构师的必备技能。假设作为前端工程师的你遇到了一个难题,你只会在前端的范围内钻研,可能这个问题在后端处理只是一行代码的事情,然而,你并不知道呀,所以会浪费不少时间。下图是一张来自于 GitHub 的2019年的后端工程师成长路线图,即一专多能的专:

image.png


有哪些收获


通过这个 TDengine 极简实践系列,你可以学到什么?


  1. 物联网设备数据流转过程
  2. Node.js模拟MQTT客户端
  3. EMQX WebHook消息路由
  4. TDengine亿级数据存储与查询
  5. TDengine-alert告警信息推送
  6. SpringBoot+MyBatisPlus服务端数据ORM、分页
  7. 统一响应封装、全局异常拦截
  8. Spring事件与监听机制
  9. Hutool与poi完成Excel文件导出
  10. WebSocket实时消息推送
  11. Vue3.0的基本使用
  12. ElementPlus主要组件应用
  13. ECharts数据可视化图表

image.png


扩展实践


这个项目本身是个 Demo 级的练手项目,仅提供一个想法与思路,当然如果你有心扩展,以下是一些不错的方向。 01.  该项目可以作为本科毕业设计的项目原型,加以完善、升级后可以作为毕业设计 02.  该项目可以作为初级前、后端工程师的练手项目,用以熟悉前后端的交互操作 03.  该项目还可以作为对物联网感兴趣的同学们一个入门实例进行扩展,深入体验物联网设备数据流转 04.  。。。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
9天前
|
物联网
DC/AC电源模块:为物联网设备提供可靠的电力支持
DC/AC电源模块:为物联网设备提供可靠的电力支持
DC/AC电源模块:为物联网设备提供可靠的电力支持
|
9天前
|
安全 物联网
BOSHIDA DC/AC电源模块:为物联网设备提供可靠的电力支持
BOSHIDA DC/AC电源模块:为物联网设备提供可靠的电力支持
BOSHIDA DC/AC电源模块:为物联网设备提供可靠的电力支持
|
3天前
|
安全 物联网 网络安全
智能家居安全:物联网设备的风险与防护
【6月更文挑战第18天】随着科技的飞速发展,智能家居设备已经深入人们的日常生活。然而,这些便捷的智能设备背后隐藏着不容忽视的安全风险。本文将探讨智能家居中常见的安全威胁,并提供有效的预防措施,帮助用户构建一个更加安全的智能家居环境。
|
18天前
|
传感器 物联网 Linux
物联网设备的操作系统之争:Linux vs RTOS
【6月更文挑战第4天】在遥远的数码星球,物联网城中的Linux先生与RTOS小姐展开激烈角逐,分别在操作系统领域各显神通。Linux先生以其开源、兼容性强、功能丰富占据服务器、桌面及嵌入式设备市场,适合处理复杂任务和需要强大计算能力的设备。而RTOS小姐以实时性、高效响应和低资源占用见长,适用于资源有限、强调实时性的物联网设备。设备制造商在两者间抉择,引发物联网设备操作系统的选择大战。通过Python与FreeRTOS示例,展现了两者在智能家居和生产线控制等场景的应用。在物联网世界,Linux与RTOS共同推动设备智能化,为生活带来更多便捷。
64 3
|
20天前
|
物联网 传感器 安全
物联网设备的能效管理与优化
【6月更文挑战第2天】在物联网时代,能效管理成为关键议题。有效管理能避免设备过度消耗能源,减少浪费并保护环境。通过动态调整能源供应、选用低能耗硬件、智能算法优化及高效数据处理,可实现能效优化。示例代码展示了软件控制节能模式。能效管理应用于农业和城市,实现精准操作和节能。这是科技与环保的融合,助力可持续未来,让物联网世界更美好。
25 2
|
3天前
|
边缘计算 监控 物联网
边缘计算在物联网设备中的应用与优化
边缘计算在物联网设备中的应用与优化
12 0
|
16天前
|
机器学习/深度学习 传感器 算法
物联网(IoT)数据与机器学习的结合
【6月更文挑战第6天】物联网和机器学习加速融合,驱动数据收集与智能分析。通过机器学习算法处理 IoT 数据,实现智能家居、工业生产的智能化。示例代码展示如何用线性回归预测温度。结合带来的优势包括实时监测、预警、资源优化,但也面临数据质量、隐私安全、算法选择等挑战。未来需强化技术创新,应对挑战,推动社会智能化发展。
59 0
|
22天前
|
存储 安全 物联网
物联网设备的安全挑战与解决方案
【5月更文挑战第31天】随着物联网技术的发展,大量设备联网带来严重安全挑战。设备计算能力有限,易受黑客攻击;多样性和复杂性增加管理难度;环境暴露及用户安全意识薄弱也是问题。解决方法包括:增强设备身份认证、定期更新软件、实施网络隔离和访问控制、加密数据以及建立安全监测机制。Python 示例展示了数据加密方法。提升用户安全意识同样关键。综合施策,强化安全研究,保障物联网设备安全,促进行业健康发展。重视物联网安全,打造安全可靠的数字环境。
28 0
|
4天前
|
传感器 数据采集 存储
物联网技术在智能环境监测中的部署与优化
物联网技术在智能环境监测中的部署与优化
|
1天前
|
供应链 监控 物联网
未来技术的潮流:区块链、物联网与虚拟现实的融合与创新
【6月更文挑战第20天】在技术不断进步的时代,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正在逐渐改变我们的生活和工作方式。本文将深入探讨这些技术的发展趋势和应用场景,以及它们如何相互融合,创造出新的商业模式和用户体验。我们将看到,随着这些技术的成熟和应用,未来的世界将变得更加智能、互联和沉浸。

相关产品

  • 物联网平台