springboot应用访问zookeeper

本文讲解了如果通过springboot快速开发web服务,并读取zookeeper的过程,为后续的“在docker下部署dubbo服务“做准备工作,本文相关的操作都在mac上进行的,文中有些目录和windows有些区别,请各位注意对应自己的电脑做对应的修改。

  1. 本地部署zookeeper:

首先去官网下载zookeeper包,推荐使用稳定版3.3.6,在这里下载:http://apache.claz.org/zookeeper/zookeeper-3.3.6/

下载后在本地解压,进入zookeeper-3.3.6/conf目录下,将zoo_sample.cfg文件改名为zoo.cfg,再用文本编辑器打开这个文件,修改如下红框位置的内容,改成本地一个可以访问的已有目录:640?wx_fmt=png

打开命令行窗口,进入zookeeper-3.3.6/bin目录,windows下执行zkServer.cmd status,mac和linux下执行./zkServer.sh status,该命令是查看当前zookeeper的状态,由于还没有启动zookeeper,我们会看到如下错误信息:640?wx_fmt=png

现在启动zookeeper吧,windows下执行zkServer.cmd start,mac和linux下执行./zkServer.sh start,启动信息如下:640?wx_fmt=png

这时候输入zkServer.cmd status,看到的结果如下:640?wx_fmt=png

可以看到zookeeper正在以standalone模式运行中;

现在我们用客户端命令来试试服务,windows下执行zkCli.cmd, mac和linux下执行./zkCli.sh,连接上服务端:640?wx_fmt=png

执行create /node1 abc创建一个znode,对应的value是"abc",再执行get /node1可以查看/node_1的value,如下图:640?wx_fmt=png

关于zookeeper的安装和验证就写到这里了,接下来我们开始开发应用来访问这个zookeeper节点的数据。

  1. 开发基于spring boot的应用: 打开IntelliJ IDEA CE,创建名为zookeeperdemo的Maven工程,指定模板,如下图:

640?wx_fmt=png

工程创建后要做的就是修改pom,增加库的依赖,已经添加配置文件,写java代码,具体的源码请在我的git上下载,链接:https://github.com/zq2599/blog_demos

源码在以下位置:

640?wx_fmt=png

源码下载下来后,可以通过Intellij IEDA导入,导入的时候以下红框中的选项需要选中,这样才能导入maven工程:

640?wx_fmt=png

整个工程非常简单,首先是pom文件,依赖的父工程要用spring-boot-starter-parent:640?wx_fmt=png

还要添加对springboot的依赖,以及build时使用springboot对应的插件:640?wx_fmt=png

在resource目录增加application.properties文件配置一些重要的参数,例如日志目录,web server端口等,如下图:

640?wx_fmt=png

最后是写java代码,由于只是个demo,这里的代码非常简单,一个入口,一个controller,入口如下:

640?wx_fmt=png

controller如下,是一个简单的rest响应,链接zookeeper取得znode节点的值然后返回,注意由于申明了RestController,所以返回的内容非页面而是字符串:

640?wx_fmt=png

至此,编码结束,来试试吧,如下图新建一个命令:

640?wx_fmt=png

选择maven:640?wx_fmt=png

命令内容为clean package -U -Dmaven.test.skip=true spring-boot:run,如下:640?wx_fmt=png

命令创建完成后,点击“run“执行:640?wx_fmt=png

此时打开浏览器,输入http://localhost:2222/zkget即可得到我们在zookeeper上设置的/node_1的value,如下图:

640?wx_fmt=png

至此,基于spring boot框架访问zookeeper的demo开发以及结束,后面我们尝试通过Dockerfile的方式制作zookeeper的镜像,然后通过docker的容器提供zookeeper的服务。

好的,关于SpringBoot2整合Zookeeper组件,管理架构中服务协调的问题,我可以给您一些简要的解答。 首先,Zookeeper是一个开源的分布式协调服务,它可以用于分布式应用程序的协调和管理。在分布式系统中,多个节点需要相互协调才能完成某些任务,而Zookeeper提供了一种分布式锁和命名服务,使得多个节点可以协调工作。 在SpringBoot2中,我们可以通过引入Spring Cloud Zookeeper组件来实现与Zookeeper的集成。具体来说,我们可以在pom.xml文件中添加如下依赖: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> </dependency> ``` 然后,在application.properties或application.yml文件中配置Zookeeper的连接信息: ``` spring.cloud.zookeeper.connect-string=localhost:2181 ``` 接下来,我们可以通过使用Zookeeper的命名服务来注册和发现服务。例如,我们可以使用@FeignClient注解来声明一个服务接口,并使用@LoadBalanced注解来启用负载均衡功能。然后,我们可以在代码中使用该接口来访问远程服务,而Spring Cloud Zookeeper会自动处理负载均衡和服务发现。 另外,我们还可以使用Zookeeper的分布式锁来协调多个节点之间的操作。例如,我们可以使用Curator框架提供的InterProcessMutex类来创建一个分布式锁,然后在多个节点之间协调对某个资源的访问。 以上就是关于SpringBoot2整合Zookeeper组件,管理架构中服务协调的简要解答,希望对您有所帮助。如果您有任何其他问题或疑问,请随时提出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员欣宸

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

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

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

打赏作者

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

抵扣说明:

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

余额充值