实习日志day1-day2——熟悉项目整体+了解新技术

这两天主要完成了企业级物联网平台技术栈的整体学习,对项目中使用的各类中间件和框架有了初步认识。最大的收获不是记住每一个组件,而是理解了每个组件分别负责解决什么问题,以及它们之间如何协同工作。

一、理解了物联网平台的整体技术架构

一个完整的物联网平台并不是只有 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(六步验证链)