这两天主要完成了企业级物联网平台技术栈的整体学习,对项目中使用的各类中间件和框架有了初步认识。最大的收获不是记住每一个组件,而是理解了每个组件分别负责解决什么问题,以及它们之间如何协同工作。
一、理解了物联网平台的整体技术架构
一个完整的物联网平台并不是只有 Spring Boot,而是由多个组件共同组成。
设备
│
MQTT
│
Spring Boot 后端
│
├── MySQL(业务数据)
├── InfluxDB(时间序列数据)
├── Redis(缓存)
├── MinIO(文件存储)
├── Kafka(消息流转)
├── Neo4j(关系分析)
├── Drools(规则计算)
└── Quartz(定时任务)
今天最大的认识是:每一种技术都有自己最擅长解决的问题,没有任何一个数据库或框架能够包揽所有工作。
二、理解了不同数据库各自的定位
今天接触到了多个数据库,也理解了它们为什么会同时存在于一个项目中。
- MySQL:负责存储业务数据,例如用户、设备、角色、菜单等结构化数据。
- InfluxDB:负责存储传感器产生的大量时间序列数据,特点是写入快、查询快、压缩率高。
- Redis:负责缓存热点数据,提高系统响应速度。
- Neo4j:负责存储人与人、设备与设备等复杂关系数据,适合关系分析。
以前认为数据库就是 MySQL,现在理解到**不同的数据,需要不同类型的数据库进行存储。**尤其是InfluxDB是我从未听过的数据库,InfluxDB是一个专为处理时间序列数据而设计的开源数据库,简单来说,它是一种专门用来高效存储和查询带有时间戳的数据的数据库。
三、理解了物联网设备为什么必须使用 MQTT
今天学习了 MQTT 协议。
MQTT 是一种专门面向物联网设备的轻量级通信协议,采用发布/订阅模式。
相比 HTTP,它具有:
- 长连接
- 流量小
- 支持海量设备
- 高并发
- 设备解耦
对于物联网平台而言,MQTT 相当于设备通信的"高速公路",后端只需要订阅消息即可,不需要主动维护大量 HTTP 长连接。
四、理解了企业项目中的安全认证体系
今天重点理解了 Apache Shiro、JWT、有状态和无状态认证之间的关系。
核心区别如下:
- Shiro:负责整个认证、授权、权限控制流程,是安全框架。
- JWT:是一种 Token 格式,用于无状态身份认证。
- Session:属于有状态认证,服务器保存用户登录状态。
- JWT:属于无状态认证,每次请求都携带身份信息,由服务器重新校验。
项目采用 Session + JWT 双轨认证模式:
- 后台管理系统使用 Session,方便权限管理和登录控制。
- 移动端、小程序等接口使用 JWT,方便横向扩展和高并发访问。
这种设计兼顾了安全性和系统扩展性,是企业项目中较为成熟的方案。
五、理解了企业项目中的基础设施组件
今天还认识了多个企业级常用组件,并理解了它们各自承担的职责。
- Druid:数据库连接池,同时提供 SQL 性能监控、慢 SQL 分析和 SQL 防火墙。
- MinIO:对象存储服务,用于统一管理图片、视频、文件等非结构化数据。
- Quartz:定时任务调度框架,用于自动执行周期性业务。
- Thymeleaf:服务端模板引擎,用于生成动态 HTML 页面,主要应用于传统 MVC 项目。
- GB28181 / JAIN-SIP:视频监控领域通信标准,实现不同厂商摄像头之间的互联互通。
这些组件共同构成了企业级项目稳定运行所依赖的基础设施。
六、理解了消息流、规则计算与关系分析
今天还学习了数据分析模块中的三个重要组件。
- Kafka:负责高吞吐消息传递,实现系统解耦。
- Neo4j:负责复杂关系建模与分析。
- Drools:负责复杂业务规则计算,将业务逻辑从代码中解耦。
其中 Drools 使用 RETE 算法 来高效匹配大量规则,能够在毫秒级完成复杂规则判断。
注:RETE 算法 是一种专门用于**"模式匹配"的高效算法** ,诞生于 1979 年。在 Drools(以及绝大多数规则引擎)中,它就是那个让成千上万条规则能在毫秒内完成匹配的"数学魔法"。
这三个组件分别负责:
- Kafka ------ 数据如何流动。
- Neo4j ------ 数据之间有什么关系。
- Drools ------ 数据应该如何决策。
三者共同组成了项目中的数据分析能力。
七、今天形成的整体认识
今天最大的收获不是掌握了某一个框架,而是理解了一个大型物联网平台的技术架构。
我认识到,企业项目并不是依赖某一种技术,而是通过多个组件协同工作:
- MySQL 负责业务数据;
- InfluxDB 负责时间序列数据;
- MQTT 负责设备通信;
- Redis 提升访问性能;
- Kafka 负责消息传递;
- MinIO 管理文件;
- Quartz 执行定时任务;
- Shiro + JWT 保障系统安全;
- Neo4j 与 Drools 提供数据分析和智能决策能力。
后续学习的重点将从"认识组件"逐步过渡到"理解组件之间如何协同工作",最终能够真正理解整个 平台的整体架构与数据流转过程。
同时开始阅读优秀源码,撰写代码阅读笔记,这些代码体现了物联网平台的核心架构思想,建议未来反复研读,尤其是UserRealm(多端登录认证+RBAC权限加载核心)、GlobalExceptionHander(智能异常处理、自动适配JSON/视图响应)、LoginServiceImpl(六步验证链)