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 验证部署

登录后,你可以做几个简单操作来验证:

  1. 创建一个设备(Device)
  2. 用 MQTT 客户端发送一条数据
  3. 在仪表板中查看数据是否显示

我曾经用 Mosquitto 客户端测试过:

mosquitto_pub -d -h localhost -p 1883 -t "v1/devices/me/telemetry" -u "设备令牌" -m '{"temperature": 25.5}'

如果仪表板能实时显示温度数据,说明部署成功了。

2.4 小结

这一章我们聊了 ThingsBoard 的核心功能、架构组件,以及 Docker 部署方法。你想想看,从零到能跑起来,其实也就十几分钟的事。但真正用好它,还需要理解规则引擎、设备配置、数据模型这些更深的东西。

下一章,我会带你深入规则引擎,看看怎么用节点编排实现复杂的业务逻辑。到时候我会分享一些我在项目中踩过的坑,保证让你少走弯路。