鸣涧_GC96O 发表于 2020-12-8 14:24:19

thingsboard代码及原理分析--源码及环境准备

参考网址:https://thingsboard.io/docs/getting-started-guides/helloworld/github地址:https://github.com/thingsboard/thingsboard 国外的慢如牛,可以用码云的快gitee地址:https://gitee.com/mirrors/ThingsBoard
演示环境:https://demo.thingsboard.io/login。注册时总提示“请确认不是机器人” 开发环境教程:https://thingsboard.io/docs/user-guide/contribution/how-to-contribute/使用技术(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。
包括模块:applicationcommon(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,processortools: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
页: [1]
查看完整版本: thingsboard代码及原理分析--源码及环境准备