Dubbo + nacos分布式实现

一、结构

Dubbo + nacos分布式实现_第1张图片
案例的源码地址:

二、实现

1、DubboStudy_Common

公共信息模块,凡是一个代码出现在多个项目中,都需要写到这个模块中
Dubbo + nacos分布式实现_第2张图片

2、DubboStudy_Service

服务提供者和服务消费者共同使用业务逻辑接口,所在的项目,这个项目会被服务提供者依赖,也会被服务消费者依赖

Dubbo + nacos分布式实现_第3张图片

3、DubboStudy_Provider

服务提供者,整个分布式中最重要的项目,承载了数据库连接、业务逻辑实现的任务
实现步骤:

  1. 依赖jar包
<dependencies>
        <dependency>
            <groupId>com.feri.dubbogroupId>
            <artifactId>DubboStudy_ServiceartifactId>
            <version>0.0.1-SNAPSHOTversion>
        dependency>
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-registry-nacosartifactId>
            <version>3.0.1version>
        dependency>
        
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-spring-boot-starterartifactId>
            <version>3.0.1version>
        dependency>
    dependencies>

  1. 实现配置 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
  1. 编写代码实现业务逻辑
@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接口

  1. 依赖jar包
<dependencies>
        <dependency>
            <groupId>com.feri.dubbogroupId>
            <artifactId>DubboStudy_ServiceartifactId>
            <version>0.0.1-SNAPSHOTversion>
        dependency>
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-registry-nacosartifactId>
            <version>3.0.1version>
        dependency>
        
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-spring-boot-starterartifactId>
            <version>3.0.1version>
        dependency>
    dependencies>
  1. 实现配置application.yml
dubbo:
  application:
    name: ConsumerLx
  registry:
    address: nacos://39.105.189.141:8848
  protocol:
    name: dubbo
    port: 20881
server:
  port: 9092

  1. 编写代码
@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);
    }
}

你可能感兴趣的:(dubbo,分布式)