明天你会感谢今天奋力拼搏的你。
ヾ(o◕∀◕)ノヾ
Apache Dubbo 是一款轻量级高性能的开源Java RPC框架,主要用于构建分布式服务架构。它提供了服务治理、负载均衡、服务注册与发现、容错机制等功能,帮助开发者轻松构建高性能、可扩展的分布式应用。Dubbo官网
Dubbo 的核心特性:
更多核心特性可查看官网文档
Dubbo 架构主要由以下几个角色组成:
图例说明:
各模块的调用关系:
可以根据项目需求选择合适的集成方式,官方文档都有详细的说明,在此仅介绍下Spring Boot的集成。
Dubbo 提供了对 Spring 框架的完整支持,官方提供的 dubbo-spring-boot-starter 可以高效开发 Dubbo 微服务应用。
开发步骤
按企业项目开发的结构划分模块如下,源码地址:
my-dubbo-project
│
├── dubbo-api
│ ├── src/main/java
│ │ └── org/example/dubbo/api
│ │ └── DemoService.java
│ └── pom.xml
│
├── dubbo-provider
│ ├── src/main/java
│ │ └── org/example/dubbo/provider
│ │ ├── DemoServiceImpl.java
│ │ └── ProviderApplication.java
│ └── pom.xml
│
├── dubbo-consumer
│ ├── src/main/java
│ │ └── org/example/dubbo/consumer
│ │ ├── DemoController.java
│ │ └── ConsumerApplication.java
│ └── pom.xml
│
└── pom.xml (父POM文件)
运行项目
Dubbo的常用注解有:@DubboService、@DubboReference 与 @EnableDubbo 。其中 @DubboService 与 @DubboReference 用于标记 Dubbo 服务,@EnableDubbo 启动 Dubbo 相关配置并指定 Spring Boot 扫描包路径。
@Service 注解从 3.0 版本开始就已经废弃,改用 @DubboService,以区别于 Spring 的 @Service 注解
定义好 Dubbo 服务接口后,提供服务接口的实现逻辑,并用 @DubboService 注解标记,就可以实现 Dubbo 的服务暴露
@DubboService
public class DemoServiceImpl implements DemoService {}
如果要设置服务参数,@DubboService 也提供了常用参数的设置方式。如果有更复杂的参数设置需求,则可以考虑使用其他设置方式
@DubboService(version = "1.0.0", group = "dev", timeout = 5000)
public class DemoServiceImpl implements DemoService {}
@Reference 注解从 3.0 版本开始就已经废弃,改用 @DubboReference,以区别于 Spring 的 @Reference 注解
@DubboReference 注解将自动注入为 Dubbo 服务代理实例,使用 demoService 即可发起远程服务调用
@Component
public class DemoClient {
@DubboReference
private DemoService demoService;
}
@EnableDubbo 注解必须配置,否则将无法加载 Dubbo 注解定义的服务,@EnableDubbo 可以定义在主类上
@SpringBootApplication
@EnableDubbo
public class ProviderApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(ProviderApplication.class, args);
}
}
默认只会扫描 main 类所在的 package,如果服务定义在其它 package 中,需要增加配置
@EnableDubbo(scanBasePackages = {"org.apache.dubbo.springboot.demo.provider"})
全部评论