ThingsBoard 小结
對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 實體及數據存儲研究
?
總結
以上是生活随笔為你收集整理的ThingsBoard 小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云原生架构沙龙(成都站)圆满结束(附胶片
- 下一篇: 因为支付宝,日本网民哭了!