Skip to content

ThingsBoard 使用 Cassandra 部署时性能优化 ​

正文来自原稿。设备量、遥测点量大时,关键参数需在首次部署前规划好,避免装完再改架构。

1、概述 ​

高并发写入场景下,要同时看 Cassandra 写入参数、TB 的 ts / ts_latest 选型,以及规则引擎脚本执行器。

2、Cassandra 写入相关 ​

部署时按集群规模规划关键写入性能参数(并发、batch、consistency、compaction 等),以吞吐与稳定性为目标;具体键名以所用 Cassandra / TB 版本文档为准。

3、最新遥测与生命周期 ​

3.1、历史与最新落库类型 ​

yaml
database:
  ts_max_intervals: "${DATABASE_TS_MAX_INTERVALS:700}"
  ts:
    type: "${DATABASE_TS_TYPE:cassandra}"   # cassandra | sql | timescale
  ts_latest:
    type: "${DATABASE_TS_LATEST_TYPE:cassandra}"

原稿建议把最新遥测也放到 Cassandra,减轻 PG 更新压力。
辅: 新版本官方对 ts_latest 更推荐 sql,见 Cassandra 已不推荐存最新遥测;历史 ts 仍可用 Cassandra。

3.2、设备 active 状态写入遥测 ​

yaml
persistToTelemetry: "${PERSIST_STATE_TO_TELEMETRY:true}"

若从属性改为遥测(或反过来),需按注释重建 device_info_view:

  • false → true:CREATE OR REPLACE VIEW device_info_view AS SELECT * FROM device_info_active_ts_view;
  • true → false:切回 device_info_active_attribute_view

4、TBEL / JS 线程 ​

  • local(Nashorn):Java 15+ 已移除,新部署不推荐。
  • remote(Node.js):生产推荐,适合多规则链、复杂脚本,减轻 JVM GC 压力。
    按并发调大 remote 执行器池;TBEL 参数按官方说明做吞吐与延迟权衡。

5、小结 ​

部署前定好 DATABASE_TS_*、状态落库方式与脚本执行模式;大规模 Cassandra 写入与规则引擎线程一起评估。最新值选型请对照官方当前建议。