Dubbo+Zookeeper 使用 SpringBoot (dubbo-spring-boot-starter) 快速搭建RPC分布式

一.安装并启动Zookeeper

看看这篇博文吧,我就不赘述了 https://blog.csdn.net/lisongjia123/article/details/78639242

二.创建公共接口

  1. 新建一个maven项目

     
     
    12637001-cf697b2473f0b77b.pnguploading.4e448015.gif正在上传…重新上传取消 12637001-cf697b2473f0b77b.png
    image.png
  2. 创建接口:

package com.zc.dubbo.service;

public interface DemoService {
    String sayHello(String name);
}

  1. 把项目打包成jar包

     
     
    12637001-e38c5f50cafa5ed6.png
    打包
     
     
    12637001-0af0fa356e257b47.png
    jar包

三.创建服务提供者

  1. 先创建一个空的springboot项目,加入dubbo-spring-boot-starter依赖
      <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>RELEASE</version>
        </dependency>
  1. 导入之前生成的公共接口jar包(不会导入自行百度)

     
     
    12637001-09287d9d3319f8c0.png
    image.png

3.实现公共接口,并添加dubbo的@service(注意不是spring的service注解,看导包)
实现类:

package com.zc.dubboprovider.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.zc.dubbo.service.DemoService;

@Service
public class DemoServiceImpl implements DemoService {
    @Override
    public String sayHello(String name) {
            return "Hello, " + name + " (from Spring Boot)";
    }
}


  1. 配置文件
    先把properties文件修改为yml文件(习惯使用yml文件,也可不改)
#dubbo协议
dubbo:
  protocol:
    id: dubbo
    name: dubbo
    port: 12345
    status: server
#注册中心地址
  registry:
    address: zookeeper://localhost:2181
#dubbo应用名
  application:
    name: dubbo-provider-demo
  1. 在启动类上开启dubbo服务并扫描服务类
package com.zc.dubboprovider;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo(scanBasePackages = "com.zc.dubboprovider.service.impl")
public class DubboProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboProviderApplication.class, args);
    }
}
  1. 启动生产者

四.创建服务消费者

  1. 同样新建springboot项目,加入dubbo-spring-boot-starter依赖,消费者要测试访问所以加入web依赖:
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>RELEASE</version>
        </dependency>
  1. 导入公共接口的依赖

  2. 配置文件

server:
  port: 8080

dubbo:
  protocol:
    id: dubbo
    name: dubbo

  registry:
    address: zookeeper://localhost:2181

  application:
    name: dubbo-consumer-demo
  1. 编写controller类,并使用dubbo的 @Reference 注入公共接口,dubbo会自动去注册中心找相应服务的生产者,并通过dubbo协议调用相应方法
package com.zc.dubboconsumer.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.zc.dubbo.service.DemoService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@RestController
public class DemoController {
    @Reference
    private DemoService demoService;

    @RequestMapping("/sayHello")
    public String sayHello(@RequestParam String name) {
        return demoService.sayHello(name);
    }
}

5.在启动类上开启dubbo并扫描controller类(不加也可以,因为加了@RestController Spring会自动扫描相应的类,但有时不会加载 @Reference,最好写上)

package com.zc.dubboconsumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo(scanBasePackages = "com.zc.dubboconsumer.controller")
public class DubboConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboConsumerApplication.class, args);
    }
}
  1. 启动消费者,并访问 http://localhost:8080/sayHello?name=dubbo
     
    12637001-f00c6289ceab1d43.png
    image.png

成功调用到生产者的服务

五. 使用dubbo-admin监控服务

请查看这篇博文,就是个管理界面,搭起来然后把服务注册中心地址换成自己的就行了https://www.jianshu.com/p/3d619740883c

这是最终效果,生产者和消费者都能看到了

 
 
12637001-eaf08772ee35efba.png
dubbo-admin.png
原创文章 27 获赞 12 访问量 1万+

猜你喜欢

转载自blog.csdn.net/z_ccsdn/article/details/92995184