栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot之Dubbo和Zookeeper

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot之Dubbo和Zookeeper

Dubbo和Zookeeper Window下安装zookeeper

注册中心

    下载zookeeper,官网地址:https://zookeeper.apache.org/

    我选择下载的是apache-zookeeper-3.5.9-bin.tar.gz

    步骤:

    打开下载的文件(管理员模式打开),运行/bin/zkServer.cmd,初次运行时可能会报错,因为没有zoo.cfg

    也有可能遇到闪退的问题!

    闪退的解决方案:右键编辑zkServer.cmd文件,在末尾添加pauser(如果右键不能点击编辑,可以将文件的后缀名改为txt,然后修改完后再改回cmd)

    修改zoo.cfg配置文件

    将conf文件夹下面的zoo_sample.cfg复制一份改名为zoo.cfg即可。

    注意几个重要位置:

    dataDir=./ 临时数据存储的目录(可写相对路径)

    clientPort=2181 zookeeper的端口号

    修改完成后再次启动zookeeper

    打开zkCli.cmd进行测试(在打开zkCli.cmd前,要先将zkServer.cmd打开)

    ls /:列出zookeeper根下保存的所有节点

    create –e /lzj123:创建一个lzj节点,值为123

    get /lzj:获取/lzj节点的值

Window下安装Dubbo-admin

注意:dubbo-admin可能会使用20880端口,所以在编写生产者的时候要修改生产者的dubbo的端口号

是一个监控管理后台,查看我们注册了哪些服务,哪些服务被消费了

dubbo本身并不是一个服务软件。它其实就是一个jar包,能够帮你的java程序连接到zookeeper,并利用zookeeper消费、提供服务。

但是为了让用户更好的管理监控众多的dubbo服务,官方提供了一个可视化的监控程序dubbo-admin,不过这个监控即使不装也不影响使用。

安装步骤:

    下载dubbo-admin

    https://github.com/apache/dubbo-admin

    左侧选择master后在code中下载zip

    进入解压后的目录,进入dubbo-admin-serversrcmainresources

    该目录下有一个application.properties,双击打开该文件

    由于dubbo-admin后台服务端口默认为8080,可能会与tomcat的端口产生冲突,所以我们需要在application.properties中修改默认端口

    修改方法:在文件末尾加入server.port=7001,即将其默认端口修改为7001

    其它需要修改的可以参考如下:(我的话是只修改了端口号就可以了)

    server.port=7001
    spring.velocity.cache=false
    spring.velocity.charset=UTF-8
    spring.velocity.layout-url=/templates/default.vm
    spring.messages.fallback-to-system-locale=false
    spring.messages.basename=i18n/message
    spring.root.password=root
    spring.guest.password=guest
    
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    

    项目目录下cmd中打包dubbo-admin(第一次打包过程可能有点慢)

    mvn clean package -Dmaven.test.skip=true
    

    打包完成后,会生成如图的jar包,可能不是这个名字

    进入dubbo-admin-distributiontarget下可以找到这个jar包(应该就在这个位置,如果不在这个位置,可以去其它文件夹的target目录下找一找)

    执行 dubbo-admin-distributiontarget 下的dubbo-admin-0.3.0.jar(前提:zookeeper的服务一定要打开,即运行zkServer.cmd)

    打开cmd在该路径下运行:

    java -jar dubbo-admin-0.3.0.jar
    

    执行完毕,我们去访问一下http://localhost:7001/,这时候我们需要输入登录账户和密码,我们都是默认的root,如果需要修改的话,可以在第二步的properties中修改,然后重新打包

SpringBoot + Dubbo + zookeeper 框架搭建

    创建一个springboot项目,项目名:provider-server,选择web依赖即可

    在项目中编写一个服务

    创建一个service包

    编写接口

    public interface TicketService {
        public String getTicket();
    }
    

    编写实现类

    @Service//可以被扫描到,在项目启动就自动注册到注册中心,一定要注意,这个是dubbo包里的
    @Component//这里不使用@Service是为了方便区分dubbo和spring包下的@Service
    public class TicketServiceImpl implements TicketService{
        @Override
        public String getTicket() {
            return "LZJ学习java";
        }
    }
    

    再创建一个模块,实现服务消费者,模块名:consumer-server

    在consumer-server项目下写一个需要获得的服务

    public class UserService {
       //我们需要去拿去注册中心的服务
    }
    

需求:现在我们的用户想使用买票的服务,这要怎么弄呢 ?

服务提供者

编写provider-server项目

    服务提供者注册到注册中心,我们需要整合Dubbo和zookeeper,所以需要导包

    
        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.5.9
        
        
            
                org.slf4j
                slf4j-log4j12
            
        
    
    

    在application.properties文件中配置属性

    dubbo-admin可能会占用dubbo默认的20880端口,所以这里我们将dubbo的端口修改为20881

    server.port=8001
    
    #dubbo.protocol.port=20881
    # 服务应用名字
    dubbo.application.name=provider-server
    # 注册中心地址
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    # 哪些服务要被注册
    dubbo.scan.base-packages=com.lzj.service
    # 修改dubbo默认端口号
    dubbo.protocol.port=20881
    

    测试

    逻辑理解 :应用启动起来,dubbo就会扫描指定的包下带有@component注解的服务,将它发布在指定的注册中心中!

    **注意:**在idea中启动项目时一定要先启动zookeeper和dubbo-admin生成的jar包,如果没有启动dubbo-admin,则无法在网页上访问7001端口进入可视化界面

    显示出来你的服务则配置成功

服务消费者

编写consumer-server项目

    导入依赖,和之前一样

    
        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.5.9
        
        
            
                org.slf4j
                slf4j-log4j12
            
        
    
    

    编写application.properties

    server.port=8002
    
    # 消费者去哪里拿服务需要暴露自己的名字
    dubbo.application.name=consumer-server
    # 注册中心的地址
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    

    本来正常步骤是需要将服务提供者的接口打包,然后用pom文件导入,我们这里使用简单的方式,直接将服务的接口拿过来,路径必须保证正确,即和服务提供者相同

    完善消费者的服务类

    @Service//放到容器中
    public class UserService {
    
        //想拿到provider-server中的票
        @Reference//引用,     Pom坐标,可以定义路径相同的接口
        TicketService ticketService;
        public void buyTicket(){
            String ticket = ticketService.getTicket();
            System.out.println("在注册中心拿到=>"+ticket);
        }
    }
    

    编写测试类

    @SpringBootTest
    class ConsumerServerApplicationTests {
    
        @Autowired
        UserService userService;
    
        @Test
        void contextLoads() {
            userService.buyTicket();
        }
    
    }
    

    启动测试

      开启zookeeper

      开启dubbo-admin【可以不用做】

      开启服务者(provider-server)

      消费者消费测试

class ConsumerServerApplicationTests {

   @Autowired
   UserService userService;

   @Test
   void contextLoads() {
       userService.buyTicket();
   }

}

6. 启动测试

1. 开启zookeeper

2. 开启dubbo-admin【可以不用做】

3. 开启服务者(provider-server)

4. 消费者消费测试

   [外链图片转存中...(img-ei5TC7zc-1647410955147)]

   测试访问成功!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770578.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号