物联网设备数据是如何流转的:基于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
目录
相关文章
|
27天前
|
边缘计算 物联网 5G
边缘计算在物联网中的实践与挑战
边缘计算在物联网中的实践与挑战
|
1月前
|
Web App开发 网络协议 安全
基于Web攻击的方式发现并攻击物联网设备介绍
基于Web攻击的方式发现并攻击物联网设备介绍
39 4
|
1月前
|
传感器 安全 算法
物联网发布者在数据传输过程中如何防止数据被篡改
在物联网数据传输中,为防止数据被篡改,可采用加密技术、数字签名、数据完整性校验等方法,确保数据的完整性和安全性。
|
1月前
|
存储 安全 算法
物联网发布者在发送数据时如何保证数据的安全性和完整性
数据加密、密钥管理和数据完整性验证是物联网安全的重要组成部分。对称加密(如AES)和非对称加密(如RSA)分别适用于大量数据和高安全需求的场景。密钥需安全存储并定期更新。数据完整性通过MAC(如HMAC-SHA256)和数字签名(如RSA签名)验证。通信协议如MQTT over TLS/SSL和CoAP over DTLS增强传输安全,确保数据在传输过程中的机密性和完整性。
|
1月前
|
供应链 物联网 区块链
未来已来:探索区块链、物联网与虚拟现实技术的融合趋势与实践应用
【10月更文挑战第34天】随着科技的迅猛发展,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正逐步渗透到我们的生活中,不仅改变着我们的生活方式,还在重塑全球的经济结构。本文将深入探讨这些技术的发展现状、相互之间的融合趋势以及在实际应用中的创新场景。我们将通过具体案例分析,揭示这些技术如何共同作用,推动社会向更加智能、互联的方向发展。
42 3
|
1月前
|
传感器 安全 算法
在物联网项目中使用 MicroPython 时如何确保数据安全
在物联网项目中使用MicroPython时,确保数据安全至关重要。可通过加密通信、安全固件更新、认证机制和定期审计等方法提升安全性,防止数据泄露和设备被恶意操控。
|
1月前
|
传感器 物联网 芯片
如何在物联网项目中使用 MicroPython
本指南介绍如何在物联网项目中使用MicroPython,涵盖设备选择、环境搭建、基础编程及网络通信等内容,助你快速上手MicroPython开发。
|
1月前
|
安全 物联网 物联网安全
智能物联网安全:物联网设备的防护策略与最佳实践
【10月更文挑战第26天】随着物联网(IoT)技术的快速发展,智能设备已广泛应用于智能家居、工业控制和智慧城市等领域。然而,设备数量的激增也带来了严重的安全问题,如黑客攻击、数据泄露和恶意控制,对个人隐私、企业运营和国家安全构成威胁。因此,加强物联网设备的安全防护至关重要。
82 7
|
24天前
|
传感器 Rust 物联网
通义灵码在物联网项目中的实战应用
通义灵码在物联网项目中的实战应用
30 0
|
1月前
|
安全 物联网 物联网安全
智能物联网安全:物联网设备的防护策略与最佳实践
【10月更文挑战第27天】随着物联网技术的快速发展,智能设备已广泛应用于生活和工业领域。然而,物联网设备的安全问题日益凸显,主要威胁包括中间人攻击、DDoS攻击和恶意软件植入。本文探讨了物联网设备的安全防护策略和最佳实践,包括设备认证和加密、定期更新、网络隔离以及安全标准的制定与实施,旨在确保设备安全和数据保护。
59 0

热门文章

最新文章

相关产品

  • 物联网平台