springboot+dubbo+zookeeper

本文将实现使用springboot+dubbo+zookeeper搭建能够提供远程服务的架构

 

目录

一. 环境搭建

1. 搭建zookeeper服务

2. 下载dubbo-admin项目,监控服务

二. 创建项目

1. IDEA创建项目

2. 导入依赖

3. 修改配置文件,连接zookeeper

4. 调用服务


 

一. 环境搭建

1. 搭建zookeeper服务

1.1 进入zookeeper官网进行下载

https://zookeeper.apache.org/releases.html

注:zookeeper从3.5.x 左右开始,就分为两个包下载,一个是bin的,我们就下载这个bin的,因为这个是已经编译过的,zookeeper可以直接运行。

1.2 启动zookeeper服务

将下载好的压缩包解压后,进入到conf目录下,并copy一份zoo_sample.cfg命名为zoo.cfg(因为zookeeper启动默认会使用改文件名)

在zoo.cfg中,可以查看zookeeper的端口配置等信息

然后进入bin路径下,启动zookeeper服务,运行zkServer.cmd(Linux运行.sh 文件)

1.3 排坑

如果服务启动失败闪退,通过cmd窗口运行可以查看报错信息

如果是JDK问题,可能是java环境变量JAVA_HOME路径带有空格。重新设置下环境变量即可。

1.4 测试

zookeeper服务启动后,可以运行zkCli.cmd启动客户端,测试能够连接成功

2. 下载dubbo-admin项目,监控服务

dubbo-admin项目时dubbo开发的一个用于检测dubbo服务的开源项目。使用该项目可以很好的监控服务进程

2.1 下载源代码

dubbo-admin的项目托管在github上,可以通过地址:https://github.com/apache/dubbo-admin  下载master分支项目到本地

2.2 运行项目

修改配置文件,可以修改zookeeper连接的IP:

在dubbo-admin项目中的resource下有个application.properties文件,可以修改需要监控的zookeeper服务、端口等

将项目通过mvn打包:mvn clean install -Dmaven.test.skip=true

将生成的jar包运行即可访问,默认的账号密码是:root/root

二. 创建项目

本例将创建三个项目

provider:服务提供者(接口暴露给zookeeper,供别人远程调用)

cosumer:服务消费者(调用provider的接口)

common:公共实体类

dubbo调用RPC远程服务的本质就是将service实现类注册为一个bean,然后通过dubbo的通讯方式完成调用。

1. IDEA创建项目

首先创建一个空白项目,然后创建三个springboot项目的module

2. 导入依赖

要想使用dubbo,就需要导入对应的依赖

<!-- Dubbo Spring Boot Starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <!--zookeeper-->
        <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <!-- 引入zookeeper -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
            <!--排除这个slf4j-log4j12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

3. 修改配置文件,连接zookeeper

在provider和cosumer项目中,修改配置文件,连接zookeeper:

对弈provider来说,需要设置扫描的包路径,并且将需要暴露的服务,用dubbo提供的Service修饰

package com.lemon.provider.service;
import com.lemon.common.pojo.UserPO;
import org.apache.dubbo.config.annotation.Service;

/**
 * dubbo服务提供接口
 * 导入的是dubbo下的service注解,指定服务版本,以及该服务对应的接口类,默认是实现的接口
 * @Date 2020/10/21 11:45
 **/
@Service(version = "1.0.0", interfaceClass = TestService.class)
public class TestServiceImpl implements TestService{

    @Override
    public UserPO test() {
        UserPO po = new UserPO();
        po.setId(1);
        po.setName("测试用户");
        return po;
    }
}

4. 调用服务

此时启动provider可以再dubbo-admin中监测到我们启动的服务了

编写消费者,调用服务接口测试:

package com.lemon.cosumer.controller;
import com.lemon.common.pojo.UserPO;
import com.lemon.provider.service.TestService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Date 2020/10/21 12:30
 **/
@RestController
public class Test {

    //dubbo提供的调用远程服务的注解
    @Reference
    TestService testService;

    @RequestMapping("/test")
    public String test() {
        UserPO po = testService.test();
        return "通过dubbo服务获取的用户名是:" + po.getName() + ",用户ID是:" + po.getId();
    }
}

测试完成:

更多详细信息,请参考github地址源码:

https://github.com/leanmTree/springboot_dubbo

 

 

 

 

 

 

 

 

 

+

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值