当前位置:   article > 正文

Springboot整合dubbo&zookeeper为注册中心_springboot 以配置类的形式注册zk

springboot 以配置类的形式注册zk

介绍

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.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
          <!-- dubbo -->
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo</artifactId>
             <version>3.0.7</version>
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-dependencies-zookeeper</artifactId>
             <version>3.0.7</version>
             <type>pom</type>
         </dependency>

         <!-- dubbo依赖 -->
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-spring-boot-starter</artifactId>
             <version>3.0.2.1</version>
         </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 请求。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号