第一课:课程导学与环境概览
各位同学好,我是你们这门课的老朋友。说实话,每次开新课前我都在想:怎么让一个陌生的框架变得亲切?今天咱们就来聊聊 ThingsBoard——这个让我又爱又恨的物联网平台。
1.1 ThingsBoard 到底是什么?
简单说,ThingsBoard 是一个开源的物联网平台。它帮你搞定设备接入、数据收集、可视化展示这些脏活累活。我最早接触它是在 2018 年,当时公司要做一个智慧工厂项目,选型选到头秃。后来发现 ThingsBoard,嗯,就是它了。
它的核心能力其实就三块:
- 设备管理:注册、认证、固件升级,一条龙服务
- 数据管道:从 MQTT 到 Kafka,从 SQL 到 NoSQL,全给你打通
- 规则引擎:设备数据来了,怎么处理、怎么报警,你说了算
你可能会问:市面上那么多物联网平台,为什么偏偏选它做二次开发?
1.2 为什么选择 ThingsBoard 做二次开发?
我个人的经验是:选开源平台,最怕选到「半成品」。ThingsBoard 在这方面做得不错——
| 对比维度 | ThingsBoard | 其他平台 |
|---|---|---|
| 代码质量 | 模块清晰,注释到位 | 经常是屎山代码 |
| 扩展性 | 插件机制,热插拔 | 改核心代码才能加功能 |
| 社区活跃度 | GitHub 8k+ star,响应快 | 提个 issue 等半年 |
| 文档完善度 | 有中文社区翻译 | 全英文,还过时 |
说白了,ThingsBoard 的架构设计就是为二次开发准备的。它的核心模块和扩展模块分得很开,你改业务逻辑的时候,不用担心把底层搞崩。我在项目中遇到过好几次,客户要求加一个自定义的告警规则,用 ThingsBoard 的规则引擎,半小时就搞定了。
1.3 课程目标与学习路径
这门课的目标很明确:让你能独立完成 ThingsBoard 的二次开发。不是那种「照着文档敲一遍」的教程,而是真正理解它为什么这么设计,遇到坑怎么填。
学习路径我建议这样走:
- 环境搭建(第1-3课):把开发环境跑起来,先看到效果
- 核心机制(第4-10课):搞懂数据怎么流、规则怎么跑
- 实战改造(第11-20课):改前端、改后端、加插件
- 性能调优(第21-25课):压测、优化、上生产
- 项目实战(第26-30课):完整做一个智慧园区项目
1.4 整体技术栈介绍
ThingsBoard 的技术栈,说白了就是 Java 生态的集大成者。咱们来逐个看看:
Java & Spring Boot
这是整个平台的地基。ThingsBoard 用 Spring Boot 2.x 版本,我建议你也用这个版本,别一上来就升级到 3.x——兼容性问题会让你怀疑人生。Spring Boot 负责了依赖注入、配置管理、REST API 这些基础能力。
Netty
设备接入层全靠它。为什么不用 Tomcat?因为物联网场景下,设备连接是长连接,成千上万个设备同时在线,Netty 的 NIO 模型比 Tomcat 的 BIO 模型强太多了。我记得第一次压测时,用 Netty 扛了 10 万连接,CPU 才用了 30%。
PostgreSQL / Cassandra
这里有个选择问题:
- PostgreSQL:适合存元数据、设备信息、用户数据。关系型数据库,查询灵活
- Cassandra:适合存时序数据,比如温度、湿度这种每秒都在变的数据。写性能极强
我个人的习惯是:小项目用 PostgreSQL 就够了,大项目才上 Cassandra。别一上来就搞分布式,运维成本很高的。
Redis
缓存层,主要用来存设备的最新状态、会话信息。ThingsBoard 里 Redis 用得挺巧妙的——设备上报数据后,先写 Redis 再异步刷到数据库,这样查询最新数据时不用查库,快很多。
1.5 开发环境准备清单
在开始之前,先把这些工具装好:
- JDK 11(别用 8,有些新特性不支持)
- Maven 3.6+(Gradle 也行,但官方用 Maven)
- PostgreSQL 12+ 或 Cassandra 3.11+
- Redis 5+
- Node.js 14+(前端编译需要)
- Git(这个不用我说吧)
嗯,第一课就到这里。下一课咱们开始动手搭建开发环境,我会带着你一步步把 ThingsBoard 跑起来。到时候你会发现,其实没那么难。
公众号:蓝海资料掘金营,微信deep3321