基于spring boot框架访问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,再用文本编辑器打开这个文件,修改如下红框位置的内容,改成本地一个可以访问的已有目录:

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

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

这时候输入zkServer.cmd status,看到的结果如下:

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

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

执行create /node_1 abc创建一个znode,对应的value是”abc”,再执行get /node_1可以查看/node_1的value,如下图:

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

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

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

源码在以下位置:

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

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

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

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

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

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

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

选择maven:

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

命令创建完成后,点击“run“执行:

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开源项目

Git 项目推荐 | 基于 J2Cache 的多级缓存框架

基于j2cache的理念,重新设计开发的一套分布式缓存。支持2级并不限于2级的多级缓存系统。 github地址:atoms 配置文件: <?xml versio...

3167
来自专栏各种机器学习基础算法

laravel访问路由在nginx服务器上无法处理

用过laravel的童鞋们都知道,访问路径一般都是/admin/index这样的形式,可是在nginx服务器上运行代码时却会出现无法找到页面的情况,这是因为ng...

3137
来自专栏Java技术分享

SpringBoot第5小节:事务管理

场景:执行2条sql语句,要么同时成功,要么同时失败。 同时操作1条或多条数据时,建议给方法加个@Transactional,查询的时候不用加事务。 ?

3236
来自专栏机器学习实践二三事

pip安装报错'not a supported wheel on this platform'

这个错误很常见,解决方法是改名,首先要获得在你的机器的平台上的合法名称: import pip pip.pep425tags.get_supporte...

2397
来自专栏逸鹏说道

Mongodb中经常出现的错误 child process failed, exited with error number

异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 异常处理汇总-数据库系列 http:/...

3895
来自专栏xingoo, 一个梦想做发明家的程序员

Kibana中doc与search策略的区别

在kibana中包含两种策略:doc和search。使用了两个循环队列来获取请求,并进行响应。 doc的代码如下: clientMethod: 'mget' ...

22410
来自专栏Golang语言社区

Golang语言--反射的用处--代码自动生成

背景: go语言处理db、json的时候,具体代码的变量定义和db字段、json输出的时候可能不一样。 这个时候,我们需要用tag的方式来进行定义。 例如: ?...

3946
来自专栏GreenLeaves

Oracle 删除监听程服务

1、开始->运行->输入regidit -> ? -> ? -> ? -> ? -> ? 红框内的右键删除 2、开始->运行->输入regidit -> ? -...

2768
来自专栏菩提树下的杨过

"org.jboss.netty.internal.LoggerConfigurator".DESCRIBED is already registered 的解决办法

今天在jboss 6.2 EAP上部署一个项目时,报以下错误: org.jboss.msc.service.DuplicateServiceException:...

21610
来自专栏从零学习云计算

openshift/origin学习记录(11)——赋予用户集群管理员权限

由于system:admin默认没有密码,没法登录web console,这里通过指令给账号dev赋予集群管理员权限。 # oc login -u sys...

2890

扫码关注云+社区