Skip to content

Latest commit

 

History

History
261 lines (225 loc) · 8.11 KB

common.md

File metadata and controls

261 lines (225 loc) · 8.11 KB

环境准备

  • release-3.2分支源码
  • IDE Idea或Eclipse,本文使用Idea

准备

使用Idea打开源码工程。

工程结构

双击common文件夹。

分析

通过名称可以判断此工程是通用模块,application等其他模块多少和此工程有依赖关系。

pom.xml进行基础分析

  • modules

    <modules>
      <module>data</module>
      <module>util</module>
      <module>message</module>
      <module>actor</module>
      <module>queue</module>
      <module>transport</module>
      <module>dao-api</module>
      <module>stats</module>
    </modules>
    

    common包含datautilmessageactorqueuetransportdao-apistats子工程。

  • actor pom分析如下:

    <dependencies>
      <dependency>
      <groupId>org.thingsboard.common</groupId>
      <artifactId>util</artifactId>
      </dependency>
      <dependency>
      <groupId>org.thingsboard.common</groupId>
      <artifactId>message</artifactId>
      </dependency>
      ......
    </dependencies>
    

    内部依赖:utilmessage,外部依赖主要是slf4j(门面日志)、logback(日志框架)、junit(单元测试)

  • dao-api pom分析如下:

    <dependencies>
      <dependency>
      <groupId>org.thingsboard.common</groupId>
      <artifactId>data</artifactId>
      </dependency>
      <dependency>
      <groupId>org.thingsboard.common</groupId>
      <artifactId>message</artifactId>
      </dependency>
      <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      </dependency>
      ......
    </dependencies>  
    

内部依赖:datamessage,外部有guava(google基础工具类库)、javax.annotation-api(java注解支持)、json-schema-validator(json结构检查)java-driver-core(Cassandra驱动)、jackson-databind(json序列化与反序列化)、spring-boot-autoconfigure(spring-boot注解支持)、metrics-jmx(JMX实时指标类库)、slf4jlogbackjunit

  • data

    pom分析如下:

    <dependencies>
      <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      </dependency>
      <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>log4j-over-slf4j</artifactId>
      </dependency>
    	......
    </dependencies>          
    

    内部依赖:protobuf-dynamic,外部依赖:java-driver-corejackson-databindslf4jlogbackjunit

  • message

    pom分析如下:

    <dependencies>
      <dependency>
      <groupId>org.thingsboard.common</groupId>
      <artifactId>data</artifactId>
      </dependency>
      <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcprov-jdk15on</artifactId>
      </dependency>
      ......
    </dependencies>  
    

    内部依赖:data,外部依赖:bcprov-jdk15on(加密算法)、bucket4j-core(流量限制)、protobuf-java(protobuf序列化与反序列化)、slf4jlogbackjunit

  • queue pom分析如下:

    <dependencies>
      <dependency>
      <groupId>org.thingsboard.common</groupId>
      <artifactId>data</artifactId>
      </dependency>
      <dependency>
      <groupId>org.thingsboard.common</groupId>
      <artifactId>util</artifactId>
      </dependency>
      ......
    </dependencies>  
    

    内部依赖:datautilmessagestats,外部依赖:kafka-clients(kafka客户端)、aws-java-sdk-sqs(aws sqs客户端)、google-cloud-pubsub(google pubsub客户端)、azure-servicebus(azure servicebus客户端)、amqp-client(amqp客户端)、spring-context-support(Spring上下文支持)、spring-boot-autoconfigure(Spring boot注解支持)、guava(google基础工具类库)、gson(google json序列化与反序列化)、commons-lang3(apache 基础类库)、protobuf-java(protobuf序列化与反序列化)、curator-recipes(zookeeper客户端)、slf4jlogbackjunit

  • stats pom分析如下:

     <dependencies>
       <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
       <scope>provided</scope>
       </dependency>
       <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       </dependency>
       ......
    </dependencies>  
    

    外部依赖:guava(google基础工具类库)、spring-boot-starter-actuator(Spring boot健康监控)、micrometer-core(指标抽象)、micrometer-registry-prometheus(prometheus指标micrometer实现)、slf4jlogbackjunit

  • transport pom分析如下:

    <modules>
      <module>transport-api</module>
      <module>mqtt</module>
      <module>http</module>
      <module>coap</module>
    </modules>
    

    transport包含transport-apimqtthttpcoap子工程。

  • transport/transport-api pom分析如下:

     <dependencies>
       <dependency>
       <groupId>org.thingsboard.common</groupId>
       <artifactId>queue</artifactId>
       </dependency>
       <dependency>
       <groupId>org.thingsboard.common</groupId>
       <artifactId>stats</artifactId>
       </dependency>
       ......
    </dependencies>  
    

    内部依赖:queuestatsdatamessageutil,外部依赖:gson(google json序列化与反序列化)、fst(Java对象序列化与反序列化)、spring-context(Spring上下文)、spring-boot-starter-web(spring boot web starter)、guava(google基础工具类库)、commons-lang3(apache 基础类库)、protobuf-java(protobuf序列化与反序列化)、slf4jlogbackjunit

  • transport/http pom分析如下:

     <dependencies>
       <dependency>
       <groupId>org.thingsboard.common.transport</groupId>
       <artifactId>transport-api</artifactId>
       </dependency>
       <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
       <scope>provided</scope>
       </dependency>
       ......
    </dependencies>   
    

    内部依赖:transport-api,外部依赖:spring-boot-starter-web(spring boot web starter)、spring-boot-starter-test(spring boot测试依赖)、slf4jlogbackjunit

  • transport/mqtt pom分析如下:

    <dependencies>
      <dependency>
      <groupId>org.thingsboard.common.transport</groupId>
      <artifactId>transport-api</artifactId>
      </dependency>
      <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-all</artifactId>
      </dependency>
      ......
    </dependencies> 
            
    

    transport/http类似,额外使用了netty-all(java网络框架)、guava(google基础工具类库)、jsr305(代码检查支持)

  • transport/coap pom分析如下:

     <dependencies>
       <dependency>
       <groupId>org.thingsboard.common.transport</groupId>
       <artifactId>transport-api</artifactId>
       </dependency>
       <dependency>
       <groupId>org.eclipse.californium</groupId>
       <artifactId>californium-core</artifactId>
       </dependency>
       ......
    </dependencies>   
    

    transport/http类似,额外使用了californium-core(coap协议开源实现)

  • util pom分析如下:

    dependencies>
      <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <scope>provided</scope>
      </dependency>
      <dependency>
      <groupId>javax.annotation</groupId>
      <artifactId>javax.annotation-api</artifactId>
      </dependency>
      ......
    </dependencies>  
          
    

    外部依赖:guava(google基础工具类库)、javax.annotation-api(java注解支持)、slf4jlogbackjunit

结论

通过分析,可以得出以下结论:

  • 子工程依赖关系如下: 工程common子工程关联关系

TIPS

  • thingsboard当前支持3种传输协议:httpmqttcoap和此子工程有所关联,官方文档协议
  • thingsboard微服务集群支持多种消息队列和此工程有所关联,官方文档协议