当前位置: 首页 > 工具软件 > ThingsBoard > 使用案例 >

ThingsBoard 小结

微生昌勋
2023-12-01

对ThingsBoard的初步了解

thingsboard是一款在物联网领域非常流行的高性能物联网设备平台开源框架

框架中的技术选型

同时支持微服务部署、单体部署
内部使用gRPC、protocol buffers
protocol buffers 序列化后数据量是json的1/10、xml的1/20,速度提升5~100倍
netty实现mqtt服务端
自研规则引擎

细节

单体内存缓存 Caffine 与 redis 可选择配置
遥测接口大量使用异步非阻塞方式 spring DeferredResult、 guava ListenableFuture 将异步做到了jdbc前,jdbc的bio模式成为不完美点

反应式编程扩展
spring data r2dbc正式版已经来到1.3了,它就是一个异步非阻塞响应式数据库连接池,还是一个orm框架,它还可以响应式的事务,响应式的服务降级熔断隔离

在我目前看来是缺陷的一些点

  • 为什么使用uuid作为主键?虽然项目大量基于created_time排序分页,但uuid占用存储空间
  • 大量的使用一行完成所有逻辑,不便于他人维护与二次开发,可能框架本就这方面考虑比较少
  • 使用gRPC
  • dao层大量对 textSearch 字段使用 lower() 函数,且全模糊like,不建索引就可以肆无忌惮么,有点看不懂这个操作
  • Controller层所有service的引用都集中在BaseController父类

二次开发小结

增加自己自定义的实体

步骤 文件or文件夹
增加新的实体类型 EntityType.java
创建实体ID类 org/thingsboard/server/common/data/id/
增加实体最大数量配置 DefaultTenantProfileConfiguration.java
Resource 增加enum

然后可从controller开始写,会更具有目的性,更快
controller service dao repostory
增加orm实体类model org/thingsboard/server/dao/model/sql
增加orm实体字段映射常量 ModelConstants.java

tenant_profile 租户配置信息表
tenant 租户表
customer 用户组(客户)
tb_user 用户表、user_credentials 用户凭据

device_profile 设备模型表
device 设备表、device_credentials 设备凭证
asset 资产表(关联其它设备和资产的抽象实体,如区域、建筑物、单位等)

alarm 警报表 (由 originator_id 和 originator_type 关联实体)
audit_log 审计日志(操作日志)
event 事件(设备、资产等)

ts_kv_dictionary 遥测数据属性字典
ts_kv 遥测数据历史值 时序数据
ts_kv_latest 遥测数据 最新值

component_descriptor 规则链节点部件
rule_chain 规则链
rule_node 规则链节点
rule_node_state 规则链节点状态

attribute_kv 实体属性的key value (如设备属性、资产属性,由 entity_type 和 entity_id 字段关联)

relation 实体间的有向连接关系 (由 from_id, from_type 字段指定 from 端的实体,to_id, to_type 字段指定 to 端的实体)

widget_type、widgets_bundle 可视化部件包
dashboard 物可视(可视化面板)
entity_view 物视图

参考文档:

入门 | ThingsBoard中文网

thingsboard 实体及数据存储研究

 类似资料: