• Springboot整合dubbo&zookeeper为注册中心


    介绍

    Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。 -来自官方的介绍。

    注册中心zookeeper

    拉取镜像

    docker pull zookeeper:3.5.9
    
    • 1

    在这里插入图片描述

    查看是否下载成功

    docker images
    
    • 1

    在这里插入图片描述

    容器中启动镜像

    docker run --name zookeeper -p 2181:2181 --restart always -d zookeeper:3.5.9
    
    • 1

    在这里插入图片描述

    查看镜像是否运行成功

    docker ps
    
    • 1

    运行成功

    项目搭建

    新建一个服务提供者和一个消费者 。目录结构如下:
    项目结构

    服务提供者

    依赖

        <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starterartifactId>
            dependency>
              
             <dependency>
                 <groupId>org.apache.dubbogroupId>
                 <artifactId>dubboartifactId>
                 <version>3.0.7version>
             dependency>
             <dependency>
                 <groupId>org.apache.dubbogroupId>
                 <artifactId>dubbo-dependencies-zookeeperartifactId>
                 <version>3.0.7version>
                 <type>pomtype>
             dependency>
    
             
             <dependency>
                 <groupId>org.apache.dubbogroupId>
                 <artifactId>dubbo-spring-boot-starterartifactId>
                 <version>3.0.2.1version>
             dependency>
         dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    配置文件

    server:
      port: 8020
    #应用的名字
    spring:
      application:
        name: OrderProviderApplication
    dubbo:
      application:
        name: order-provider
      protocol:
        name: dubbo
        port: -1
      registry:
        id: zk-registry
        address: zookeeper://zookeeperip:2181?blockUntilConnectedWait=100000&timeout=100000 #需要加后边的串,不然容易报连接失败
      config-center:
        address: zookeeper://zookeeperip:2181
      metadata-report:
        address: zookeeper://zookeeperip:2181
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    定义接口服务类

    /**
     * 定义服务的接口
     */
    public interface IOrderService {
        /**
         * 保存订单信息
         * @return
         */
       String getOrderInfo();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    接口服务具体实现类

    使用注解@DubboService 暴露服务,注解可以指定版本,组,超时等
    version,group,timeout

    /**
     * 提供方实现接口并暴露服务
     */
    @DubboService
    public class IOrderServiceImpl implements IOrderService {
        /**
         * 发送订单信息
         * @return
         */
        @Override
        public String getOrderInfo() {
            Order order = new Order();
            order.setOrderId(1);
            order.setOrderNo(1);
            order.setProductId(1);
            order.setUserId(1);
            order.setOrderNum(5);
            order.setOrderAmt(new BigDecimal("100.0"));
            order.setOrderStatus("下单");
            order.setPayStatus("未支付");
            order.setCreateUser("elite");
            order.setCreateTime(LocalDateTime.now());
    
            return order.toString();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    启动类

    @SpringBootApplication
    @EnableDubbo  //开启dubbo服务
    public class OrderProviderApplication {
        public static void main(String[] args) {
            SpringApplication.run(OrderProviderApplication.class,args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    消费者

    依赖

    同服务提供者。

    yml配置

    server:
      port: 8019
    #spring应用名字
    spring:
      application:
        name: OrderConsumerApplication
    #dubbo配置
    dubbo:
      application:
        name: order-consumer
      protocol:
        name: dubbo
        port: -1
      registry:
        id: zk-registry
        address: zookeeper://192.168.5.130:2181?blockUntilConnectedWait=100000&timeout=100000
      config-center:
        address: zookeeper://192.168.5.130:2181
      metadata-report:
        address: zookeeper://192.168.5.130:2181
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    定义接口与服务提供者一致

    /**
     * 接口类
     */
    public interface IOrderService {
    
        String getOrderInfo();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    controller测试

    @RestController
    public class OrderController {
    
        /**
         * 引入接口直接调用
         */
        @DubboReference
        IOrderService orderService;
    
    
        @GetMapping("/getOrderInfo")
        public String getOrderInfo(){
            return orderService.getOrderInfo();
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    测试结果

    测试结果

    小结

    service 与 reference
    service 与 reference 是 Dubbo 最基础的两个配置项,它们用来将某个指定的接口或实现类注册为 Dubbo 服务,并通过配置项控制服务的行为。
    service: 服务提供者暴露服务配置。对应的配置类:org.apache.dubbo.config.ServiceConfig用于服务提供者端,通过 service 配置的接口和实现类将被定义为标准的 Dubbo 服务,从而实现对外提供 RPC 请求服务。
    reference:服务消费者引用服务配置。对应的配置类: org.apache.dubbo.config.ReferenceConfig 用于服务消费者端,通过 reference 配置的接口将被定义为标准的 Dubbo 服务,生成的 proxy 可发起对远端的 RPC 请求。

  • 相关阅读:
    Qt 简约又简单的加载动画 第七季 音量柱风格
    AttributeError: type object ‘mmap.mmap‘ has no attribute ‘ACCESS_READ
    uniapp框架开发的基于java的学习记录与提醒应用系统
    【XCTF】【GFSJ0522】【Crypto】【难度1】base64
    Java 8 中 常用的 LocalDateTime 操作
    摩尔斯电码笔记
    Shiro安全框架登录验证实例解析
    MultiBank Group宣布在阿联酋和新加坡取得两项新牌照
    航天科技×辰安科技 打造智慧化工园区安全保障平台
    谣言检测()——《Debunking Rumors on Twitter with Tree Transformer》
  • 原文地址:https://blog.csdn.net/qq_37400096/article/details/126635682