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

thingsboard代码及原理分析

翟迪
2023-12-01

参考网址:https://thingsboard.io/docs/getting-started-guides/helloworld/

github地址:https://github.com/thingsboard/thingsboard

演示环境:https://demo.thingsboard.io/login。注册时总提示“请确认不是机器人”

 

使用技术(https://thingsboard.io/docs/reference/architecture/):

actor模型:akka

用作服务调度:zookeeper

远程调用:gRPC,thrift

持久化:Cassandra(https://cassandra.apache.org/数据存储),datastax(数据访问)

 

1:环境搭建(Mac)

Eclipse Luna。由于thingsboard使用了jdk1.8的一些技术,所以使用Eclipse Luna,因为该版本支持1.8编译。

lombok插件安装:thingsboard使用了lombok的@Getter @Setter注解。所以需要安装lombok插件.

下载https://projectlombok.org/downloads/lombok.jar(https://projectlombok.org/all-versions)

双击运行lombok.jar或者执行java -jar lombok.jar.选择需要安装lombok的eclipse,点击install/update。

成功后会在eclipse.ini的同目录下生成lombok.jar.并且在eclipse.ini中添加-javaagent:lombok.jar

重启eclipse。

 

包括模块:

application

common(data,message,transport):data用于与不同db之间的中间数据结构。message定义不同的消息类型。transport定义一个公共的接口,供与客户端的transport层使用

dao:dao抽象了对不同数据库的统一接口。dao的接口数据一般都data,根据不同的数据库在不同的接口中转换为对应的实体类与数据库交互.通过@ConditionalOnProperty(prefix = "database", value = "type", havingValue = "cassandra")动态注入不同的数据库

tools:

extensions(extension-kafka,extension-mqtt,extension-rabbitmq,extension-rest-api-call):分别调用不同协议的后端服务

extensions-api:定义aciton,filter,plugin,processor及其他基本对象

extensions-core:实现一些公用aciton,filter,plugin,processor

tools:

transport(http,caop,mqtt):mqtt基于netty开发mqtt服务器。http提供基于rest的http服务。基于californium搭建coap服务。对不同的客户端设备提供不同类型的接口.同时将消息转换成不同的message,通过DefaultActorService与后端的actor交互

ui:使用nodejs开发。

 

Attributes(https://thingsboard.io/docs/user-guide/attributes/):设备属性:

Telemetry(https://thingsboard.io/docs/user-guide/telemetry/):设备数据

RPC(https://thingsboard.io/docs/user-guide/rpc/):服务器与设备间通信

 

规则引擎:规则与插件。基于actors执行。

规则包含Filters,Processors,Action

 类似资料: