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


    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
    
    • 1

    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
    
    • 1
    • 2

    这里发现报错,是因为后端端口我们改了,所以进入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.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
    
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
    
    
        
        
        <dependency>
            <groupId>org.apache.dubbogroupId>
            <artifactId>dubbo-spring-boot-starterartifactId>
            <version>2.7.6version>
        dependency>
        
        
        <dependency>
            <groupId>com.github.sgroschupfgroupId>
            <artifactId>zkclientartifactId>
            <version>0.1version>``
        dependency>
        
        
        <dependency>
            <groupId>org.apache.curatorgroupId>
            <artifactId>curator-frameworkartifactId>
            <version>2.12.0version>
        dependency>
        <dependency>
            <groupId>org.apache.curatorgroupId>
            <artifactId>curator-recipesartifactId>
            <version>2.12.0version>
        dependency>
        <dependency>
            <groupId>org.apache.zookeepergroupId>
            <artifactId>zookeeperartifactId>
            <version>3.4.14version>
            
            <exclusions>
                <exclusion>
                    <groupId>org.slf4jgroupId>
                    <artifactId>slf4j-log4j12artifactId>
                exclusion>
            exclusions>
        dependency>
    
    
    dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

    2、编写服务,服务端

    ResponesService接口

    public interface ResponesService {
        public String getRespones();
    }
    
    • 1
    • 2
    • 3

    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";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    启动项目,成功启动,我们来到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);
        }
    
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

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

    3、修改配置

    server.port=8002
    
    #消费者需要暴露自己的名字
    dubbo.application.name=consumer
    
    #注册中心地址
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

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

    小结

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

  • 相关阅读:
    2022年最新前端面试题
    OpenAI视频生成Sora技术简析
    千峰商城-springboot项目搭建-85-订单超时取消-定时任务框架quartz的整合使用
    21-CSS中的3D属性
    【剑指 Offer】矩阵中的路径
    Cesium添加自己的专属Logo(2023.10.22)
    C++ 类和对象 (中)
    微信小程序云开发教程——墨刀原型工具入门(页面交互+交互案例教程)
    5款可视化工具优缺点比对,谁赢了?
    设计模式学习
  • 原文地址:https://blog.csdn.net/hello_list/article/details/125550023