1. 课程导论:ThingsBoard 平台概述、单机与集群架构对比、课程目标与前置知识
1.1 ThingsBoard 平台概述
ThingsBoard 是一个开源的企业级物联网平台,用于设备管理、数据采集、处理、可视化以及规则引擎编排。它采用微服务架构(部分组件可拆分),支持 MQTT、CoAP、HTTP 等主流协议,并提供可扩展的插件机制。平台核心组件包括:
- Transport Layer(传输层):处理 MQTT、CoAP、HTTP 设备连接,支持 SSL/TLS 加密。
- Core Service(核心服务):负责设备注册、属性管理、RPC 调用、用户与租户管理。
- Rule Engine(规则引擎):基于节点链的流式处理引擎,支持数据过滤、转换、持久化、告警生成。
- Web UI(用户界面):基于 Angular 的仪表板、设备管理、客户门户。
- Database Layer(数据库层):支持 PostgreSQL / Cassandra + Redis + Kafka 的组合存储。
版本说明: 本课程基于 ThingsBoard 3.6.x 及以上版本,社区版(CE)与专业版(PE)在集群部署上核心差异在于消息队列和数据库选型,CE 默认使用本地队列 + PostgreSQL,PE 推荐 Kafka + Cassandra。
1.2 单机架构 vs 集群架构对比
单机部署适合开发测试、小规模生产(< 1000 设备);集群部署面向高可用、高吞吐、大规模设备接入(> 10 万设备)。以下从关键维度进行对比:
| 对比维度 | 单机架构 | 集群架构 |
|---|---|---|
| 组件部署 | 所有服务运行在同一 JVM 或同一主机 | 传输层、核心服务、规则引擎、UI 分别部署在多节点 |
| 高可用 | 无,单点故障即服务中断 | 多副本 + 负载均衡,单节点故障不影响整体 |
| 扩展性 | 垂直扩展(增加 CPU/内存),上限明显 | 水平扩展(增加节点),可支撑百万级设备 |
| 消息队列 | 内置本地队列(内存/H2) | Kafka / RabbitMQ 作为分布式消息总线 |
| 数据库 | PostgreSQL 单实例 | Cassandra 集群 + PostgreSQL 主从 / Patroni |
| 运维复杂度 | 低,单机 Docker 或包安装 | 高,需编排工具(K8s / Docker Swarm) |
| 适用场景 | 开发、POC、小规模私有部署 | 生产环境、运营商级、边缘-云协同 |
架构选择黄金法则: 设备数 < 5000 且允许短时停机 → 单机;设备数 > 20000 或要求 99.9% 可用性 → 集群。中间范围可先单机后平滑迁移。
1.3 课程目标
通过本课程,学员将掌握从单机到集群的完整部署技能,具体目标如下:
- 单机部署:使用 Docker Compose 在单台服务器上快速搭建 ThingsBoard CE/PE 环境,完成设备接入与基础配置。
- 集群架构设计:理解 ThingsBoard 各组件在集群中的角色、通信方式、数据流与故障转移机制。
- 数据库与消息队列:部署 Cassandra 集群、PostgreSQL 主从、Kafka 集群,并配置 ThingsBoard 连接。
- Kubernetes 编排:使用 Helm Chart 在 K8s 上部署 ThingsBoard 集群,配置 Ingress、PVC、HPA。
- 监控与运维:集成 Prometheus + Grafana 监控集群状态,配置日志聚合与告警。
- 性能调优:根据设备量级调整 JVM 参数、连接池、Kafka 分区、Cassandra 一致性级别。
重要提示: 本课程不涉及 ThingsBoard 功能开发或二次开发,专注部署运维。学员需具备 Linux 基础、Docker 基础、网络基础(TCP/IP、DNS、负载均衡概念)。
1.4 前置知识要求
为顺利学习本课程,建议学员提前掌握以下技能:
| 知识领域 | 具体要求 | 推荐学习资源 |
|---|---|---|
| Linux 系统管理 | 文件操作、进程管理、systemd、网络配置、防火墙 | 《鸟哥的 Linux 私房菜》基础篇 |
| Docker / Docker Compose | 镜像拉取、容器运行、docker-compose.yml 编写 | Docker 官方文档 Get Started |
| Kubernetes 基础 | Pod、Service、Deployment、ConfigMap、Helm 概念 | Kubernetes 官方教程 |
| 数据库基础 | PostgreSQL 基本操作、Cassandra 数据模型、SQL 与 CQL | PostgreSQL 官方文档、Cassandra 入门 |
| 消息队列 | Kafka 主题、分区、消费者组概念 | Kafka 官方文档 Quickstart |
| 网络与安全 | TCP/UDP 端口、SSL/TLS 证书、负载均衡(Nginx/HAProxy) | 《HTTP 权威指南》相关章节 |
1.5 课程环境与工具链
本课程所有实验均在以下环境中验证,建议学员准备相同或兼容的环境:
- 操作系统:Ubuntu 22.04 LTS / CentOS 7.9+(生产推荐 Rocky Linux 9)
- 容器运行时:Docker 24.0+ + Docker Compose v2
- 编排平台:Kubernetes 1.28+(Minikube 或云厂商托管集群)
- 数据库:PostgreSQL 15+、Cassandra 4.1+
- 消息队列:Kafka 3.5+(KRaft 模式或 Zookeeper 模式)
- 监控:Prometheus 2.45+、Grafana 10+
- 负载均衡:Nginx 1.24+ 或 HAProxy 2.8+
实验建议: 如果本地资源有限,可使用云服务器(2C4G 起步)搭建单机环境,集群实验建议使用 3 台以上节点或 K8s 集群。本课程提供 Vagrantfile 一键创建实验虚拟机。