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框架,它还可以响应式的事务,响应式的服务降级熔断隔离
步骤 文件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 物视图
参考文档: