2、ThingsBoard平台介绍:核心功能、架构组件、安装部署(Docker方式)
好,咱们正式开始聊 ThingsBoard。这一章我打算把它的核心功能、架构组件,还有怎么用 Docker 快速搭起来,一次性讲清楚。
你想想看,一个物联网平台要处理海量设备的数据,还要保证稳定、可扩展,这本身就不是件容易的事。ThingsBoard 在这方面做得相当成熟。我个人习惯把它看作一个「物联网中间件」——它不生产数据,但负责把数据管好、用好。
2.1 ThingsBoard 核心功能
先说说它能干什么。说白了,ThingsBoard 解决的是物联网项目中最常见的几个痛点:设备接入、数据存储、可视化展示、规则处理、远程控制。
- 设备接入:支持 MQTT、HTTP、CoAP、LwM2M 等主流协议。我在项目中遇到过客户要求同时支持 MQTT 和 HTTP 的场景,ThingsBoard 原生就支持,省了不少事。
- 数据存储:时序数据存到 Cassandra 或 TimescaleDB,最新状态存到 PostgreSQL。这种混合存储策略,既保证了写入性能,又方便做复杂查询。
- 可视化仪表板:拖拽式操作,支持图表、地图、控件。嗯,这里要注意,仪表板虽然好用,但别把所有数据都往上堆,否则加载会变慢。
- 规则引擎:这是 ThingsBoard 的灵魂。你可以用节点编排的方式,实现数据过滤、转换、告警、推送等逻辑。
- 远程控制:支持 RPC 调用,可以实时下发指令给设备。
核心要点:ThingsBoard 不是简单的数据展示平台,它更是一个「数据处理器」。规则引擎才是它的核心竞争力。
2.2 架构组件
ThingsBoard 的架构设计,我总结为「微服务 + 消息队列 + 分布式存储」。它由几个核心组件组成:
| 组件名称 | 作用 | 我的经验 |
|---|---|---|
| Transport Layer | 负责设备接入,处理 MQTT/HTTP/CoAP 请求 | 高并发场景下,建议单独部署 Transport 服务 |
| Core Service | 处理设备管理、用户管理、租户管理等核心逻辑 | 这是最繁忙的服务,资源要给足 |
| Rule Engine | 执行规则链,处理数据流 | 规则链设计得好,能省下大量后端开发工作 |
| Web UI | 前端界面,提供仪表板、设备管理等功能 | 基于 Angular,二次开发门槛不高 |
| Queue | 消息队列(Kafka / RabbitMQ / AWS SQS) | 生产环境我推荐 Kafka,吞吐量高 |
| Database | PostgreSQL + Cassandra / TimescaleDB | 小项目用 PostgreSQL 就够了,别过度设计 |
为什么会这样设计?因为物联网场景下,设备数量可能从几百增长到几十万。微服务架构让每个组件可以独立扩展。我记得有一次客户现场,设备量突然翻了三倍,我们只增加了 Transport 和 Rule Engine 的实例数,系统就扛住了。
避坑指南:我曾经在项目中把 Rule Engine 和 Core Service 部署在同一台机器上,结果规则链一复杂,Core Service 响应就变慢。后来分开部署,问题就解决了。所以,组件隔离很重要。
2.3 安装部署(Docker 方式)
好,理论讲完了,咱们动手。Docker 部署 ThingsBoard 是最快的方式,没有之一。我建议你直接使用官方提供的 docker-compose 文件。
2.3.1 环境准备
你需要先装好 Docker 和 Docker Compose。版本要求:
- Docker Engine 20.10+
- Docker Compose 1.29+
检查命令:
docker --version
docker-compose --version
2.3.2 下载并启动
官方提供了多种部署方案。我个人习惯用「单机 + PostgreSQL + Kafka」的组合,适合开发和测试。
# 克隆官方仓库
git clone https://github.com/thingsboard/thingsboard-docker-compose.git
cd thingsboard-docker-compose
# 选择单机版
cd single-postgres-kafka
# 启动所有服务
docker-compose up -d
启动后,你可以用 docker-compose ps 查看各服务状态。正常情况下,你会看到:
- thingsboard
- postgres
- kafka
- zookeeper
- redis(可选)
2.3.3 访问平台
服务启动后,打开浏览器访问 http://localhost:8080。默认管理员账号:
- 用户名:
sysadmin@thingsboard.org - 密码:
sysadmin
第一次登录后,系统会提示你修改密码。嗯,这里要注意,生产环境一定要改掉默认密码,否则就是裸奔。
重要提醒:Docker 部署默认使用内存存储,重启后数据会丢失。生产环境必须挂载持久化卷,或者配置外部数据库。
2.3.4 验证部署
登录后,你可以做几个简单操作来验证:
- 创建一个设备(Device)
- 用 MQTT 客户端发送一条数据
- 在仪表板中查看数据是否显示
我曾经用 Mosquitto 客户端测试过:
mosquitto_pub -d -h localhost -p 1883 -t "v1/devices/me/telemetry" -u "设备令牌" -m '{"temperature": 25.5}'
如果仪表板能实时显示温度数据,说明部署成功了。
2.4 小结
这一章我们聊了 ThingsBoard 的核心功能、架构组件,以及 Docker 部署方法。你想想看,从零到能跑起来,其实也就十几分钟的事。但真正用好它,还需要理解规则引擎、设备配置、数据模型这些更深的东西。
下一章,我会带你深入规则引擎,看看怎么用节点编排实现复杂的业务逻辑。到时候我会分享一些我在项目中踩过的坑,保证让你少走弯路。