前言
在《基础项目结构(一)》的基础上接入了dubbo2.7.9,及其注册中心etcdV3.
技术依赖包
jar | 作用 | 说明 |
---|---|---|
netty-all | tcp通讯框架 | 《Netty概述》 |
dubbo | rpc通讯框架 | 《dubbo系列》 |
javassist | aop技术 | 《浅谈AOP》 |
protobuf-java | 序列化工具 | 《序列化工具-Protobuf》 |
grpc-api grpc-context grpc-core grpc-grpclb grpc-netty grpc-protobuf grpc-protobuf-lite grpc-stub perfmark-api | google Grpc框架 | 《http2概述》 《Grpc概述》 |
jetcd-core jetcd-common | etcd3注册中心 | 《分布式事务与一致性》《Etcd官方文档中文版》 |
jetcd-core
dubbo registry 根据spi技术实现etcd3的注册
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.0-jre</version>
<exclusions>
<exclusion>
<groupId>com.google.j2objc</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.errorprone</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.checkerframework</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.etcd</groupId>
<artifactId>jetcd-core</artifactId>
<version>0.5.4</version>
<exclusions>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.android</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.errorprone</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.auto.service</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.mojo</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
依赖包说明
jar名 | 作用 |
---|---|
netty | tcp通讯 |
gson | google json工具包 |
protobuf-java | 序列化工具 |
guava failureaccess listenablefuture jsr305 | google 核心工具包 |
grpc-api grpc-context grpc-core | 定义,上下文,整合 |
grpc-netty | grpc netty桥接 |
perfmark-api | google调用链路工具包 |
grpc-protobuf grpc-protobuf-lite | grpc 桥接 protobuf |
proto-google-common-protos | grpc 自己内部生成 protobuf类 |
grpc-stub | grpc 客户端 |
grpc-grpclb protobuf-java-util | grpc 负载均衡 |
failsafe | grpc 失败策略包 |
jetcd-core jetcd-common | etcd3客户端包 |
dubbo-spring-boot-starter
dubbo也提供了spring starter机制
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.9</version>
<exclusions>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</exclusion>
<exclusion>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</exclusion>
</exclusions>
</dependency>
依赖包说明
jar名 | 作用 |
---|---|
dubbo | rpc通讯包 |
netty | tcp通讯 |
javassist | dubbo中aop技术 |
gson | json工具包,dubbo中上传数据源依赖 |
spring-context | dubbo支持spring容器 |
spring-context-support | dubbo操作spring容器的工具包 |
dubbo-spring-boot-autoconfigure dubbo-spring-boot-autoconfigure-compatible | dubbo自动注入 |
dubbo集成
dubbo引入了自己的autoconfigure。其中主要关注DubboAutoConfiguration。
// 1. 从配置文件中读取配置注入DubboConfigurationProperties
// 2. DubboConfigurationProperties中每个属性有NestedConfigurationProperty会在spring容器中注册
// 3. 利用AbstractConfig中addIntoConfigManager和spring PostConstruct,将参数注入dubbo全局配置中
@EnableConfigurationProperties(DubboConfigurationProperties.class)
public class DubboAutoConfiguration{
// 通过配置文件中dubbo.scan.base-packages可配置扫描路径
// 也可以使用DubboComponentScan注解代替(推荐)
public ServiceClassPostProcessor serviceClassPostProcessor(@Qualifier(BASE_PACKAGES_BEAN_NAME)
Set<String> packagesToScan)
}
实现用例
请参考github:《基础项目结构二》