Dubbo + nacos分布式实现

一、结构

在这里插入图片描述
案例的源码地址:

二、实现

1、DubboStudy_Common

公共信息模块,凡是一个代码出现在多个项目中,都需要写到这个模块中
在这里插入图片描述

2、DubboStudy_Service

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

在这里插入图片描述

3、DubboStudy_Provider

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

  1. 依赖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>

  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.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>
  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);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值