Dubbo:基于RPC的远程调用

发布于 2021-04-17  1938 次阅读


2021年8月15日21:28:05:更新,配置文件新增解释

参考地址:https://mercyblitz.github.io/2019/04/26/Dubbo-Spring-Cloud-%E9%87%8D%E5%A1%91%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%B2%BB%E7%90%86/

1.公共模块

注意:实体类必须实现序列化接口

public class User implements Serializable

公共类中写需要dubbo管理和调用的接口

public interface UserService {
    User findById(Integer id);
}

2.服务提供者

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
        </dependency>
        //公共模块的依赖
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

核心在于@Service注解,使用的是dubbo的注解。

把UserServiceImpl暴露给dubbo给其他微服务调用,服务提供者代码

@Service
public class UserServiceImpl implements UserService {
    @Override
    public User findById(Integer id) {
        final User user = new User();
        user.setId(id);
        user.setName("虚假的名字");
        return user;
    }
}

配置文件

dubbo:
  scan:
    base-packages: maosi.service
  //扫描有service的dubbo包
  protocol:
    name: dubbo
    port: -1
  //代表使用默认接口20880
  registry:
    address: spring-cloud://192.168.10.1   接口地址为nacos服务治理中心的地址

3.服务消费者

依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
        </dependency>
        //公共模块的依赖
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

配置文件

dubbo:
  registry:
    address: spring-cloud://192.168.10.1
  cloud:
    subscribed-services: service1  //服务中心的服务名,服务提供者的名字,服务生产者的微服务名称

先引入依赖

然后调用类,其中@Reference是调用的关键还可以控制版本号和其他。可以看我的另一篇文章

    @Reference
    UserService userService;

直接调用

    @GetMapping("/userService")
    public User userService() {
        final User user = userService.findById(1);
        return user;
    }

4.启动顺序

需要先启动服务提供者

再启动服务消费者

5.注册中心有dubbo的信息代表启动成功


欢迎欢迎~热烈欢迎~