看完这一篇教你学会Zookeeper和Dubbo,安装下载使用快速上手

24 篇文章 6 订阅
5 篇文章 0 订阅

Zookeeper+Dubbo

今天学习Zookeeper和Dubbo,那我们先来了解这个到底是什么?简单了解下,

zookeerper是一个分布式应用程序协调服务软件,在RPC中充当注册中心,提供服务注册与发现的中心目录服务也就是注册中心,这里还有RPC是远程过程调用(Remote Procedure Call)概念,实现分布式系统服务。

dubbo是一个开源分布式服务框架,对zookeeper做出提供服务的协议,Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

debbo官网:https://dubbo.apache.org/zh/

这里必须要上一张图,见图知意吧!
在这里插入图片描述

zookeeper下载安装(windows)

进入官网下载,我们下载最新版:https://zookeeper.apache.org/releases.html

下载到本地,解压

进入conf目录,我们做下配置,我们把这个zoo样例文件复制下,把改成zoo.cfg如果没有这个配置文件,启动的时候会报错;

进入bin目录输入zkServer.cmd启动,这里我报错了

提示:zookeeper默认也是走8080服务端口,这里我本地已经有进程占用8080端口,所以报错啦

最简单的方法,把那个进程关掉,cmd命令行netstat -ano | findstr 8080找到8080端口的pid

打开任务管理器,找到对应pid关闭即可,或者taskkill /pid 28336 /f

再次启动,成功启动

我们可以回到bin目录,使用客户端连接测试下,zkCli.cmd测试连接,连接成功:

ls /可以查看到,一个zookeeper节点:

我们还可以创建一个节点信息,可以存值取值,当然我们不这么用:

到这里就安装测试完毕了。

Dubbo-admin下载安装

Dubbo-admin是一个可视化对zookeeper的一个可视化监控中心,这里可以有也可以没有,想要看可视化就下载使用,可有可无。

如果用以前的老版本,只是一个springboot项目使用起来挺方便的,以下是根据文章日期最新版,前后端分离,都要配置打包,挺麻烦的,使用老版本去找,这里网上都有,可以去使用旧的单纯spring boot项目版本,打包运行即可,如果想使用新版本,跟着博主一起来看看。

github地址:https://github.com/apache/dubbo-admin/tree/develop

我们把代码下载下来,这里我们选到主分支,然后下载:

解压,我们可以看到现在的dubbo-admin采用了前后端分离了,那我们就分别打包下,挺麻烦,但是我们还是使用下看看

述

进入,dubbo-admin-server目录,我们看到是一个springboot项目,我们打包下

mvn install -Dmaven.test.skip=true

build success 成功

我们把zookeeper启动起来,然后运行下我们target目录下面的jar包

我这里又报错了,8080端口冲突,因为zookeeper占用了8080端口,所以我们还得修改一下端口,application.properties加上这么一句,然后上面有个h2就是我们后面要登录的用户名和密码,重新打包

第二次打包就比第一次快很多了,40多s,重新运行jar包

启动成功:

我们再启动下前端,进入dubbo-admin-ui,我们还是命令行,以下命令,这里需要node环境,如果没有的可以去参考这个:https://blog.csdn.net/hello_list/article/details/123863949

npm install
npm run dev

这里发现报错,是因为后端端口我们改了,所以进入vue.config.js,修改下我们后端的端口

重新运行,成功

进入登录页,输入root,root上面的用户名和密码,可以登录进来:

releases

兄弟们,我才反应过来,我们下载的这个是源码版本,又要自己编译又要打包,为什么我们不下载官网的releases版本呢,看着别人都下载什么打包啥的,我发现真的是,咱们直接下载打包好的不就可以了,哎呦

下载解压之后,跟上面一样,直接修改config文件,然后回到bin目录startup.cmd既可启动

不过你是不是看着我的教程下来的,哈哈哈,如果上面你没有安装成功,直接到这里这个release这里吧,不行,我这么坐下来的也要别人这么做下啦,我打包了下包,大家也都打下吧,吼吼吼~,使用release版本就好很多,不用又开后端然后又开全端,那么多命令行。

下面我们通过springboot去使用下zookeeper,我们首先创建一个springboot项目,这里就不说怎么创建了吧

springboot整合dubbo

provider-server服务提供端

1、首先导入依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>


    <!--dubbo依赖-->
    <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>2.7.6</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>


</dependencies>

2、编写服务,服务端

ResponesService接口

public interface ResponesService {
    public String getRespones();
}

ResponesServiceImpl,注意这里,这里的service注解,是dubbo扫描服务的,使用了dubbo我们在服务层不要用spring的service了,都是用Component扫描

import org.apache.dubbo.config.annotation.Service;

@Service
public class ResponesServiceImpl implements ResponesService{
    @Override
    public String getRespones() {
        return "hello,this is respones";
    }
}

3、编写配置文件

server.port=8001

# 服务名
dubbo.application.name=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#扫描服务
dubbo.scan.base-packages=com.xuexiriji.service
#因为dubbo-admin占用了默认的20880端口,所以这里需要修改下
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881

启动项目,成功启动,我们来到dubbo-admin监控,看下我们的服务是否被注册,可以看到服务已经被注册了进来

consumer消费端

我们再创建一个spring boot项目

1、导入依赖,跟上面的依赖一样

2、编写消费程序

package com.xuexiriji.service;

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Component;

@Component //引用dubbo之后尽量使用Component扫描到spring容器中,因为可能会导入错误
public class RequestService {

    //在这里会报错,两种方式,引入坐标,
    // 或者直接创建一个相对应接口,但是是从zookeeper注册中心拿来的服务
    @Reference
    ResponesService responesService;

    public void requset(){
        System.out.println("发送请求");
        String respones = responesService.getRespones();
        System.out.println("收到注册中心响应:"+respones);
    }


}

这里我直接把服务端接口复制了过来,同时编写了一个测试:

3、修改配置

server.port=8002

#消费者需要暴露自己的名字
dubbo.application.name=consumer

#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

运行测试,可以看到我们成功调用了服务端消费拿到了数据

最后有一个官方提示,推荐使用元数据:

小结

如果有任何问题可以评论留言,我们一起讨论,当然了,都看到这里了还不点个关注,点个赞,bye~

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值