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可以直接运行。

springboot+dubbo+zookeeper_第1张图片

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服务、端口等

springboot+dubbo+zookeeper_第2张图片

将项目通过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

springboot+dubbo+zookeeper_第3张图片

2. 导入依赖

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


        
            org.apache.dubbo
            dubbo-spring-boot-starter
            2.7.3
        
        
        
        
            com.github.sgroschupf
            zkclient
            0.1
        
        
        
            org.apache.curator
            curator-framework
            2.12.0
        
        
            org.apache.curator
            curator-recipes
            2.12.0
        
        
            org.apache.zookeeper
            zookeeper
            3.4.14
            
            
                
                    org.slf4j
                    slf4j-log4j12
                
            
        

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

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

springboot+dubbo+zookeeper_第4张图片

对弈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();
    }
}

测试完成:

springboot+dubbo+zookeeper_第5张图片

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

https://github.com/leanmTree/springboot_dubbo

 

 

 

 

 

 

 

 

 

+

 

 

 

你可能感兴趣的:(分布式架构,dubbo)