第一课:课程导学与环境概览

各位同学好,我是你们这门课的老朋友。说实话,每次开新课前我都在想:怎么让一个陌生的框架变得亲切?今天咱们就来聊聊 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. 环境搭建(第1-3课):把开发环境跑起来,先看到效果
  2. 核心机制(第4-10课):搞懂数据怎么流、规则怎么跑
  3. 实战改造(第11-20课):改前端、改后端、加插件
  4. 性能调优(第21-25课):压测、优化、上生产
  5. 项目实战(第26-30课):完整做一个智慧园区项目
我的建议: 别急着跳着看。我见过太多人直接跳到「改前端」那章,结果连数据怎么存到数据库的都不清楚,最后 debug 到崩溃。

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 再异步刷到数据库,这样查询最新数据时不用查库,快很多。

避坑指南: 我曾经在生产环境遇到过 Redis 缓存穿透的问题。设备频繁上报同一个 key,结果 Redis 里没有,每次都去查数据库,数据库直接被打挂了。后来加了布隆过滤器才解决。这个后面会详细讲。

1.5 开发环境准备清单

在开始之前,先把这些工具装好:

  • JDK 11(别用 8,有些新特性不支持)
  • Maven 3.6+(Gradle 也行,但官方用 Maven)
  • PostgreSQL 12+ 或 Cassandra 3.11+
  • Redis 5+
  • Node.js 14+(前端编译需要)
  • Git(这个不用我说吧)

嗯,第一课就到这里。下一课咱们开始动手搭建开发环境,我会带着你一步步把 ThingsBoard 跑起来。到时候你会发现,其实没那么难。

注意: 如果你用的是 Windows 系统,建议装个 WSL2。ThingsBoard 在 Windows 原生环境下编译会有各种奇怪的问题,我当年踩过这个坑,浪费了一整天。

公众号:蓝海资料掘金营,微信deep3321