一、结构
二、实现
1、DubboStudy_Common
公共信息模块,凡是一个代码出现在多个项目中,都需要写到这个模块中
2、DubboStudy_Service
服务提供者和服务消费者共同使用业务逻辑接口,所在的项目,这个项目会被服务提供者依赖,也会被服务消费者依赖
3、DubboStudy_Provider
服务提供者,整个分布式中最重要的项目,承载了数据库连接、业务逻辑实现的任务
实现步骤:
- 依赖jar包
<dependencies>
<dependency>
<groupId>com.feri.dubbo</groupId>
<artifactId>DubboStudy_Service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>3.0.1</version>
</dependency>
<!-- spring-boot整合dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
- 实现配置 application.yml
dubbo:
application:
name: ProviderLx
registry:
address: nacos://39.105.189.141:8848
protocol:
name: dubbo
port: 20881
scan:
base-packages: com.feri.dubbo.provider.serviceimpl
server:
port: 9091
- 编写代码实现业务逻辑
@DubboService(version = "1.0.0",interfaceClass = StudentService.class)//发布服务
public class StudentServiceImpl implements StudentService {
@Override
public R all(int count) {
List<StudentDto> list=new ArrayList<>();
for(int i=0;i<count;i++){
list.add(new StudentDto(i,"Java213-"+i,i%3==0?"男":"女"));
}
return R.ok(list);
}
}
Dubbo发布,使用注解:@DubboService(version=版本号,interfaceClass=接口Class对象)
4、DubboStudy_Consumer
服务消费者,远程调用服务,同时实现Controller提供对外的API接口
- 依赖jar包
<dependencies>
<dependency>
<groupId>com.feri.dubbo</groupId>
<artifactId>DubboStudy_Service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>3.0.1</version>
</dependency>
<!-- spring-boot整合dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
- 实现配置application.yml
dubbo:
application:
name: ConsumerLx
registry:
address: nacos://39.105.189.141:8848
protocol:
name: dubbo
port: 20881
server:
port: 9092
- 编写代码
@RestController
public class StudentController {
@DubboReference(version = "1.0.0") //根据Dubbo从注册中心获取接口的实现类对象
//版本号必须一致
private StudentService service;
@GetMapping("/api/dubbo/get.do")
public R all(int count){
return service.all(count);
}
}