dubbo springboot+dubbo入门demo,以及windows的zookeeper环境搭建

5 篇文章 0 订阅

搭建一个简单的springboot+dubbo的入门项目,首先要启动一个zookeeper作为注册中心,然后启动一个springboot的dubbo服务提供者,再启动一个springboot的dubbo服务消费者,那么服务消费者就可以在启动时去注册中心拿到dubbo服务提供者的调用连接,然后服务消费者直连dubbo服务提供者获取服务。

注:不启动注册中心,在dubbo消费者指定dubbo服务提供者的url,dubbo消费者也可以获取dubbo服务者提供的服务,这里的注册中心只是一个媒介,用来记录dubbo服务提供者的地址,然后告诉dubbo消费者。所以,当dubbo消费者已经有dubbo服务提供者的地址后,就算注册中心宕机了,dubbo消费者依然可以通过自己的缓存去直连dubbo服务提供者

一、首先启动zookeeper的注册中心
  1. 先到官网下载一个zookeeper,我这里下的是3.5.5版本
    https://archive.apache.org/dist/zookeeper/zookeeper-3.5.5
    在这里插入图片描述

注:下载apache-zookeeper-3.5.5-bin.tar.gz ,带有-bin的是表示已经编译好可以直接用的,而apache-zookeeper-3.5.5.tar.gz 是源码无法直接使用,解压的目录lib文件夹都没有,如果下载了zookeeper-3.5.5.tar.gz ,最后启动的时候会提示 错误:找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain

  1. 将下载后的 zookeeper 解压,然后把conf目录下的zoo_sample.cfg重命名为 zoo.cfg
  2. 在zoo.cfg里面加入下面这行表示zookeeper的数据存放目录(填写自己的windows目录)
dataDir=D:\\Software\\apache-zookeeper-3.5.5\\data
  1. zookeeper默认的2181端口,如果要修改,在zoo.cfg修改如下这行
clientPort=2181
  1. 双击apache-zookeeper-3.5.5-bin\bin目录下的zkServer.cmd即可启动zookeeper
    在这里插入图片描述

二、新建一个maven项目

(作为主项目,然后里面建一个存放接口的module,作为jar包引入dubbo消费者、提供者,再建一个消费者module,一个服务提供者module)在这里插入图片描述
在这里插入图片描述

三、新建一个dubbo-interface的module,里面只写一个接口

public interface IDubboDemoService {

    String sayHello();
}

四、新建一个dubbo-provider的module,作为dubbo服务提供者

  1. 首先在pom.xml引入springboot+dubbo的jar以及引入刚刚的只有接口的dubbo-interface的jar
    <dependencies>
        <!--服务提供 dubbo公共接口 -->
        <dependency>
            <groupId>cn.com.xinlin</groupId>
            <artifactId>dubbo-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!-- 引入spring-boot-starter以及dubbo和curator的依赖 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
        <!-- Spring Boot相关依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- springboot web模块 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
  1. 在resource目录下新建application.properties文件,填写dubbo的配置信息
#当前服务/应用的名字
dubbo.application.name=dubbo-service-provider

#注册中心的协议和地址
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181

#通信规则(通信协议和接口)
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

#连接监控中心
dubbo.monitor.protocol=registry
#开启包扫描,可替代 @EnableDubbo 注解
##dubbo.scan.base-packages=cn.com.xinlin

3.在新建一个application的主类,里面加上dubbo扫包注解和springboot的注解

@EnableDubbo
@SpringBootApplication
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }
}

  1. 实现刚刚引入的dubbo-interface里面的接口
package xinlin.service.dubbo.impl;

import cn.com.xinlin.service.IDubboDemoService;
import com.alibaba.dubbo.config.annotation.Service;
@Service
public class DubboDemoService implements IDubboDemoService {
    @Override
    public String sayHello() {
        return "hello world";
    }
}

注:这里的@Service是dubbo里面的注解而非spring的注解,这个dubbo注解表示这个service服务提供者提供的服务注册到注册中心去

5.服务提供者就完成了
在这里插入图片描述

五、新建一个dubbo-consumer的module,作为dubbo服务消费者

  1. pom.xml和生产者一样,引入springboot和dubbo的jar,以及dubbo-interface的jar
  2. 在resource目录下新建application.properties文件
#避免和监控中心端口冲突,设为8081端口访问
server.port=8081  

dubbo.application.name=duubbo-service-consumer
dubbo.protocol.name=dubbo
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.monitor.protocol=registry
  1. 新建一个controller,里面调用dubbo服务提供者的服务
@Controller
@RequestMapping("/demo")
public class DemoController {

    @Reference(timeout = 3000)
    IDubboDemoService dubboDemoService;

    @ResponseBody
    @RequestMapping(value = "/say")
    public String sayHello(){
        String str = dubboDemoService.sayHello();
        return str;
    }
}

注:这里的@Reference是dubbo的注解,表示获取相关的dubbo服务,springboot项目启动后会从根据这个注解去注册中心获取这个dubbo服务提供者

  1. 在新建一个application的主类,里面加上dubbo扫包注解和springboot的注解,和上面的服务提供者一样
@EnableDubbo
@SpringBootApplication
public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}
  1. dubbo服务消费者就完成了

六、测试整个流程

1.启动zookeeper
2.启动dubbo-provider
3.启动dubbo-consumer
4.在浏览器测试接口是否有成功调用dubbo接口返回数据

在这里插入图片描述
在这里插入图片描述



参考:
雪山上的蒲公英的Dubbo整合SpringBoot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值