springboot+zookeeper+dubbo-admin ゞ 浴缸里的玫瑰 2023-02-17 11:04 9阅读 0赞 看视频学习了在springboot环境下集成zookeeper,这里记录下实践时的过程,方便后面参考学习,只是个初步的搭建。 一、基本知识介绍: 1、什么是Dubbo Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力: * 面向接口的远程方法调用 * 智能容错和负载均衡 * 服务自动注册和发现 dubbo官网:[http://dubbo.apache.org/en-us/][http_dubbo.apache.org_en-us] 2、什么是zookeeper 百度百科上的介绍:ZooKeeper是一个[分布式][Link 1]的,开放源码的[分布式应用程序][Link 2]协调服务,是[Google][]的Chubby一个[开源][Link 3]的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 这里我们学习zookeeper总结一句话:zookeeper就是一个服务注册中心(当然,随着学习的深入,可能理解会变化。) 3、dubbo-admin: dubbo-admin :是一个监控管理后台,查看我们注册了哪些服务,哪些服务被消费了。 二、集成步骤 前提:win10平台,搭建两个springboot平台环境 ;zookeeper服务已经开启 1、提供者服务: 1. 导入依赖 2. 配置注册中心的地址,以及服务发现名,和要要扫描的包~ 3. 在想要被注册的服务上面~增加一个注解@Service(注意这个Service是dubbo包下的,不要和springboot的混淆) 2、消费者如何消费 1.导入依赖 2.配置注册中心的地址,配置自己的服务名~ 3.从远程注入服务~ @Reference 三、核心代码及配置 1、 安装zookeeper 官网下载地址:[http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/][http_mirror.bit.edu.cn_apache_zookeeper_zookeeper-3.4.14] 百度网盘下载地址:[https://pan.baidu.com/s/1JJop9fRipVo7rTbUC7oqhA ][https_pan.baidu.com_s_1JJop9fRipVo7rTbUC7oqhA_] [提取码 :][https_pan.baidu.com_s_1JJop9fRipVo7rTbUC7oqhA_]affg [下载后][https_pan.baidu.com_s_1JJop9fRipVo7rTbUC7oqhA_]得到:zookeeper-3.4.14.tar.gz解压 [然后修改其配置文件名称:][https_pan.baidu.com_s_1JJop9fRipVo7rTbUC7oqhA_]zookeeper-3.4.14\\conf\\zoo\_sample.cfg为zoo.cfg(注意配置文件名称不修改,启动zookeeper服务的话,会直接闪退) ![20200613141345490.png][] 修改后,双击启动 zookeeper-3.4.14\\bin\\zkServer.cmd 文件 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70][] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 1][] 注意要提前安装好本地的jdk并配置好jdk的环境变量。 至此,zookeeper服务就开启了。 2、 安装dubbo-admin 这个服务监控,当然也可以不安装,这个是个界面化的服务监控,更方便我去管理zookeeper注册中心的服务。 可以自己去github中去下载dubbo的源码,然后进行maven打包,这里我有打包好的jar包 dubbo-admin jar包的百度网盘地址:[https://pan.baidu.com/s/1q1l7afBfR7xNDTl7c82X1A][https_pan.baidu.com_s_1q1l7afBfR7xNDTl7c82X1A] 提取码:6g0i 下载这个jar包后,cmd到这个jar包所在的目录,然后,直接启动jar包即可: java -jar dubbo-admin-0.0.1-SNAPSHOT.jar ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 2][] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 3][] 启动后,打开浏览器,在地址栏输入[http://localhost:7001/ 默认用户名和密码是:root/root][http_localhost_7001_ _root_root] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 4][] 至此,才算zookeeper服务这块的准备工作完成了。 3、消费者服务代码: 新建springbooot 项目,然后在pom.xml中添加zookeeper的依赖信息, 注意此处的版本,我第一次时因为使用了最新的版本,造成项目启动失败: <!--导入Dobbo+zookeeper--> <!-- 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.3</version> </dependency> <!-- 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> 然后在下面建立一个测试用的接口类 TicketServiceImpl ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 5][] package com.kuang.service.impl; import com.kuang.service.TicketService; import org.apache.dubbo.config.annotation.Service; import org.springframework.stereotype.Component; //zookeeper:服务注册与发现 @Service //可以被扫描到,在项目一启动就自动注册到注册中心 注意,这个service是dubbo的service @Component //在使用dubbo时,这里尽量不要使用@Service 因为dubbo里也有一个service 二者容易混淆 public class TicketServiceImpl implements TicketService { @Override public String getTicket() { return "你好,这是我的票据信息"; } } 接下来就是配置appliication.properties文件了,配置关于zookeeper注册中心的信息,告诉springboot应该到哪里去注册服务 server.port=8088 # 服务应用名字 dubbo.application.name=provider-server #注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 #哪些服务要被注册 dubbo.scan.base-packages=com.kuang.service ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 6][] 4、消费者代码: 新建一个springboot项目,同样在pom文件中添加zookeeper的依赖,并建立一个消费调用接口用来测试: pom.xml中添加如下依赖: <!--导入Dobbo+zookeeper--> <!-- 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.3</version> </dependency> <!-- 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><!--导入Dobbo+zookeeper--> <!-- 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.3</version> </dependency> <!-- 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> 添加 UserServiceImpl 消费接口: package com.kuang.service.impl; import com.kuang.service.TicketService; import com.kuang.service.UserService; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Service; @Service//注意,这里是springboot中的service ,并非dubbo的 public class UserServiceImpl implements UserService { @Reference//dubbo的外部引用注解 要引用外部的接口,1:pom坐标;2:可以定义路径相同的接口名 TicketService ticketService; @Override public void buyTicker() { String ticket = ticketService.getTicket(); System.out.println("在注册中心拿到一张票"+ticket); } } 注意此处因为要调用服务接口,这里采用了最简单的方式,建立与消费者接口相同包名的接口类TicketService package com.kuang.service; public interface TicketService { public String getTicket(); } ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 7][] 至此,消费者的接口服务也完成了。 然后就是测试了: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 8][] ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 9][] 然后,再次访问dubbo-admin的网页,我们可以查看到,在注册中心我们的服务也被成功注册了,当然,消费者能调同服务提供者,已经说明成功了: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 10][] 总结:这个只是按照视频教程的步骤实践出来的,有些地方可能还不能应用到实际生产中,可技术点是通了,剩下的就是基于这个思路去补充优化了。 完整的示例代码见上传的资源文件。 [http_dubbo.apache.org_en-us]: http://dubbo.apache.org/en-us/ [Link 1]: https://baike.baidu.com/item/%E5%88%86%E5%B8%83%E5%BC%8F/19276232 [Link 2]: https://baike.baidu.com/item/%E5%88%86%E5%B8%83%E5%BC%8F%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/9854429 [Google]: https://baike.baidu.com/item/Google [Link 3]: https://baike.baidu.com/item/%E5%BC%80%E6%BA%90/246339 [http_mirror.bit.edu.cn_apache_zookeeper_zookeeper-3.4.14]: http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/ [https_pan.baidu.com_s_1JJop9fRipVo7rTbUC7oqhA_]: https://pan.baidu.com/s/1JJop9fRipVo7rTbUC7oqhA [20200613141345490.png]: https://img-blog.csdnimg.cn/20200613141345490.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70]: https://img-blog.csdnimg.cn/20200613174230649.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw==,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 1]: https://img-blog.csdnimg.cn/20200613174315508.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw==,size_16,color_FFFFFF,t_70 [https_pan.baidu.com_s_1q1l7afBfR7xNDTl7c82X1A]: https://pan.baidu.com/s/1q1l7afBfR7xNDTl7c82X1A [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 2]: https://img-blog.csdnimg.cn/20200613175127266.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw==,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 3]: https://img-blog.csdnimg.cn/20200613175023582.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw==,size_16,color_FFFFFF,t_70 [http_localhost_7001_ _root_root]: http://localhost:7001/ [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 4]: https://img-blog.csdnimg.cn/20200613175354119.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw==,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 5]: https://img-blog.csdnimg.cn/20200613175815870.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw==,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 6]: https://img-blog.csdnimg.cn/20200613181406388.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw==,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 7]: https://img-blog.csdnimg.cn/20200613181311744.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw==,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 8]: https://img-blog.csdnimg.cn/20200613181535535.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw==,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 9]: https://img-blog.csdnimg.cn/2020061318183260.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw==,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 10]: https://img-blog.csdnimg.cn/20200613182017850.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw==,size_16,color_FFFFFF,t_70
还没有评论,来说两句吧...