thingsboard源码理解

thingsboard目录结构

application: 应用程序主目录,总体项目打包时也是这个Module
    src/main/java/org.thingsboard.server: app主目录
        actors: actor执行者目录
        config: 配置类目录
        controller: 控制器
        exception: 异常处理
        service: 服务目录,app打包后,server要运行的服务的实现都在这里
            cluster: 集群服务,包括服务发现、服务实例等
            script: 脚本执行服务,主要是规则引擎的执行(JS)
            transport: 消息传输服务
            rpc: 远程调用服务
        utils: 工具类
common: 公共工具集、方法集模块
    dao-api: 数据访问对象的服务接口,在这里作定义
    data: 用于不一样数据库之间的中间数据结构
    message: 消息服务的实现集,包括集群消息、TB的基础服务消息、系统类消息
    queue: 队列服务的实现集,用的Kafka
    transport: 消息传输通道服务的实现,定义公共接口,给客户端的transport层使用
        coap: CoAP消息传输的实现,包括适配器和客户端
        http: HTTP消息传输的实现
        mqtt: MQTT消息传输的实现,包括适配器、会话、SSL工具等
    util: 工具集(当前仅有一个异步回调工具)
dao: 数据访问对象集合,整个应用的DAO层,通常只要dao的都要data,以实现不一样数据库数据结构兼容。
docker: 集群部署-docker容器解决方案,包含了部署环境和shell脚本
    haproxy: HAproxy工具的配置文件存放处
    tb-node: 应用程序节点配置存放目录
    tb-transports: 消息传输服务的配置文件,包括coap,http,mqtt
img: 应用图标存放处
k8s: 容器编排工具Kubernetes的配置文件和自动化脚本
msa: 微服务半自动构建模块,包含了黑盒测试、js执行引擎等
    black-box-tests: 黑盒测试工具
    js-excutor: js执行引擎,基于nodejs,用于执行规则引擎中的js代码(沙盒执行)
    tb: tb主应用程序配置
    tb-node: tb程序节点配置
    transport: docker中的消息传输服务的部署配置
    web-ui: TB的Web用户界面在docker中部署的配置,自带http server
netty-mqtt: TB的MQTT协议的实现,包括链接、发布、订阅、遗嘱、关闭等
rule-engine: TB的规则引擎,TB没有用开源的Drools等工具,而是本身开发了一套规则引擎,主要包含3个组件和1套服务接口
    rule-engine-api: 服务接口的实现
    rule-engine-components: 规则引擎组件,包含滤波器、动做、数据、脚本、延迟加载、消息、队列、RPC实现、邮件等
tools: 工具模块,主要实现了MQTT with SSL客户端和REST客户端。能够测试用。
transport: 三种消息传输服务启动器,服务的实现参考common/transport,mqtt协议的实现见netty-mqtt
ui: TB的用户界面,主要使用AngularJS和react组件,单页应用(要替换掉,用Vue)。
controller:控制器,和thingsboard页面相关联,调用dao-api的服务。
dao-api(common包下):与数据库相关的服务接口。
dao-api实现类(dao包下):实现类位于与dao-api对应的位置。
data包(位于common包下):包含各类实体类,好比资产类、设备类、租户类、客户类等等。
XXXdao接口:和dao-api实现类位于同一个位置。
XXXdao接口实现类:dao包下的sql包下。
dao包调用Daoutils执行数据库操做,数据库sql和dao-api实现类位于同一个位置。