zookeeper windows 入门安装和测试
一、序言
以下是我对zookeeper 的一些理解:
zookeeper 作为一个服务注册信息存储的管理工具,好吧,这样说得很抽象,我们举个“栗子”。
栗子1号:
假设我是一家KTV的老板,我同时拥有5家KTV,我肯定得时刻监视我KTV 的情况吧,是不是有人打架,或者发生火灾什么的,这时候我会给设置一个视频监控,然后每一家都连接到我的视频监控里面,那么我就可以在家里看到所有KTV 的情况了,如果某一家出现问题,我就能及时发现,并且做出反应。
这个视频监控就相当于zookeeper,每一家的连接,就相当于KTV 的信息。
二、安装过程
2.1 http://mirrors.hust.edu.cn/apache/zookeeper/ 下载,我的版本是 3.4.6(stable) 稳定
2.2 解压到 F:\zookeeper-3.4.6
3.3 到目录conf 下创建 zoo.cfg 文件,默认就是加载这个文件,文件内容 我直接copy 的sample里面的
- #zoo.cfg 的内容
- # 心跳检查的时间 2秒
- tickTime=2000
- # 初始化时 连接到服务器端的间隔次数,总时间10*2=20秒
- initLimit=10
- # ZK Leader 和follower 之间通讯的次数,总时间5*2=10秒
- syncLimit=5
- # 存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置。
- dataDir=F:\\zk\\tmp\\zookeeper
- # 错误日志的存放位置
- dataLogDir=F:\\zk\\logs\\zookeeper
- # ZK 服务器端的监听端口
- clientPort=2181
上面的说明介绍:http://zookeeper.apache.org/doc/current/zookeeperStarted.html
然后 cd 到bin 目录下 执行zkServer.cmd 就启动成功了。
注意:dataDir 和 dataLogDir 目录不会自动创建,得手动创建才能启动。
可以用netstat -ano|findstr "2181" 看看是否OK。
也可以用JPS 查看启动的JAVA 进程的情况,会出现这样
- C:\windows\system32>jps
- 8068
- 10040 QuorumPeerMain // 这东西是zk的东西,源码有介绍
- 10556 Jps
也可以用自带客户端命令 : zkCli.cmd -server 127.0.0.1:2181
关于JPS的东西,可以自己去JAVA_HOME\bin 目录下去看,里面很多命令。
四、JAVA 操作zookeeper :
上面安装挺简单的,我们来实际操作下:
4.1 导入依赖:
- <dependency>
- <groupId>org.apache.zookeeper</groupId>
- <artifactId>zookeeper</artifactId>
- <version>3.4.6</version>
- </dependency>
4.2 JAVA 实现:这里我们简单实现上面的栗子
- // 根节点
- public static final String ROOT = "/root-ktv";
- public static void main(String[] args) throws Exception {
- // 创建一个与服务器的连接
- ZooKeeper zk = new ZooKeeper("localhost:2181", 30000, new Watcher() {
- // 监控所有被触发的事件
- public void process(WatchedEvent event) {
- System.out.println("状态:" + event.getState()+":"+event.getType()+":"+event.getWrapper()+":"+event.getPath());
- }
- });
- // 创建一个总的目录ktv,并不控制权限,这里需要用持久化节点,不然下面的节点创建容易出错
- zk.create(ROOT, "root-ktv".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
- // 然后杭州开一个KTV , PERSISTENT_SEQUENTIAL 类型会自动加上 0000000000 自增的后缀
- zk.create(ROOT+"/杭州KTV", "杭州KTV".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
- // 也可以在北京开一个, EPHEMERAL session 过期了就会自动删除
- zk.create(ROOT+"/北京KTV", "北京KTV".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
- // 同理,我可以在北京开多个,EPHEMERAL_SEQUENTIAL session 过期自动删除,也会加数字的后缀
- zk.create(ROOT+"/北京KTV-分店", "北京KTV-分店".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);
- // 我们也可以 来看看 一共监视了多少家的ktv
- List<String> ktvs = zk.getChildren(ROOT, true);
- System.out.println(Arrays.toString(ktvs.toArray()));
- for(String node : ktvs){
- // 删除节点
- zk.delete(ROOT+"/"+node,-1);
- }
- // 根目录得最后删除的
- zk.delete(ROOT, -1);
- zk.close();
- }
zookeeper 的结构图和其他的一些功能,可参考: http://www.blogjava.net/shenh062326/archive/2011/10/29/zookeeper_yuling.html
三、zookeeper 伪集群
上面栗子我们看到,如果我们的监控室也停电了,那不是就监测不到KTV情况了?一般情况下,zk 也是作为分布式部署了,也就是有多台监控,由于监控多了,肯定要有一定为准(比如直播会有一些延迟),就要涉及到选举的算法,这里暂时不介绍,先搭建一个伪集群,因为机器不够,只能再一台机器上模拟搭建,整个过程无非是将上面的一些配置copy 几份,然后配置不同的 地址和端口就行。
3.1 我们将F:\zookeeper-3.4.6\conf\下的zoo.cfg 改成zoo1.cfg,内容改为:
- # 存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置。
- # 每一个文件路径和下面的对应,zk1 zk2 zk3
- dataDir=F:\\zk\\tmp\\zk1
- # 错误日志的存放位置
- dataLogDir=F:\\zk\\logs\\zk1
- # ZK 服务器端的监听端口
- # 对应分别:2181 2182 2183
- clientPort=2181
- # 伪集群
- #2887 是server 之间通讯的,3887 是应用程序通讯的
- # 同时加入其他两个服务的地址和端口信息
- server.1=127.0.0.1:2887:3887
- server.2=127.0.0.1:2888:3888
- server.3=127.0.0.1:2889:3889
- # 最后在钱文件目录下创建3份,zoo1.cfg,zoo2.cfg,zoo3,cfg 记得改参数
3.2 同时我们将F:\zookeeper-3.4.6\bin\下的 zkServer.cmd 改为zkServer1.cmd,内容加上:
- set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain
- # 读取配置的路径,每个启动服务对应一份
- set ZOOCFG=..\conf\zoo1.cfg
- # 同理创建3个zkServer1.cmd,zkServer2.cmd,zkServer3.cmd 记得改zoo 1 2 3.cfg
3.3 还得在dataDir 指定目录,也就是F:\\zk\\tmp\\zk1 下创建myid 的文件,内容对应1 2 3 即可。
这个的数字是唯一的,在1-255 之间,用来表示自身的id(其实我不明白 为啥zk 要这么设计- -!)
3.4 启动3个zkServer1.cmd 就OK了,如果要多服务器配置,只需要要将 3份分开放到不同服务器就OK
依次启动的时刻有错误信息,因为你启动server1 的时候 2 和 3 没找到,但是后面都启动了 就没问题了。
小结:
1.zookeeper 现在大家都用得比较多,这里也是仅仅介绍下入门知识,linux 上安装区别不打,还是得看具体应用。
2.关于选举、一致性 和一些其他的东西,慢慢再写!
3.有错误,请指出哦~。~ 感激。
参考资料:
官网的:
http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html
API 文档:
http://zookeeper.apache.org/doc/r3.4.6/api/
别人介绍的一些流程:
http://cailin.iteye.com/blog/2014486
常用的场景:
http://nileader.blog.51cto.com/1381108/1040007
转载于:https://www.cnblogs.com/haoyy/p/6150703.html
zookeeper windows 入门安装和测试相关推荐
- windows linux 并发,Windows/Linux安装压力测试工具siege
Siege是一款高性能的Http压力测试工具. Siege支持身份验证.cookies.http.https和ftp协议. Linux安装Siege 如果要支持https,需要先下载安装openssl ...
- hadoop入门-在windows上安装,测试hadoop
上一篇简单叙述了怎么样在windows上编译hadoop,接着上一篇,这篇叙述怎么样安装hadoop并进行简单的验证安装是否正确.编译的机器与安装的机器分开. 我编译的机器是windows7,安装的机 ...
- zookeeper windows 下安装
2019独角兽企业重金招聘Python工程师标准>>> 前沿:最近公司做的项目用到了dubbo 和 zookeeper 由于 每次测试的时候 我本地的服务就会注册到测试机上,还得每次 ...
- windows下安装Redis测试
Redis 官网:https://redis.io/,官网提供的是linux版本的 下载windows版本的地址:https://github.com/MicrosoftArchive/redis/r ...
- 测试python安装成功_Python在Windows上安装配置测试
Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 2.x还是3.x 目前,Python ...
- Python学习,从入门安装到测试,一篇到位!
本文以 Eric Matthes 的<Python编程:从入门到实践>为基础,以有一定其他语言经验的程序员视角,对书中内容提炼总结,化繁为简,将这本书的精髓融合成一篇10分钟能读完的文章. ...
- CAS入门 安装及测试
1.生成证书 >keytool -genkey -alias convict -keyalg RSA -keystore D:/keys/convicteva 其中名字与姓氏这一写sso登录的域 ...
- Windows下安装谷歌测试框架Googletest并测试小例子
一.下载 https://github.com/google/googletest/tree/master 下载并解压 新建一个build文件夹用于生成工程文件. 二.cmake 也可以使用cmake ...
- FFmpeg Windows下安装与测试
FFmpeg 简介 FFmpeg的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward",FFmpeg是一套可以用来记录.转换数字音频.视 ...
最新文章
- 再学 GDI+[81]: TGPImage(1) - 显示图像
- 破解入门(六)-----实战“内存镜像法”脱壳
- 计算机信息导论论文,电子信息导论论文2000字
- python自定义安装哪些不需要_【1】python模块:自定义模块的3种导入方式
- 18.linux日志收集数据到hdfs上面
- [Matlab] PDETool 的 Set Formula 的元素排列顺序会影响 Boundary 的判定
- 设计模式(7) 续原型模式
- 【软考2】Java语言的基本知识汇总
- JavaScript从父页面获取子页面的值(子页面又如何访问父页面)
- 计算机的拓扑 树状结构图,树状网络拓扑图模板分享
- 如何去痘痘最快方法简单
- js操作html节点中怎么删除子节点,在JavaScript中删除DOM节点的所有子元素
- mysql3306端口被占用无法终止_Mysql3306端口被占用无法启动解决办法
- 安天 - 网络安全管培生一面
- 高项、高级项目管理师论文-风险管理
- 计算机静音图标无法更改怎么办,电脑声音图标有红叉怎么办?教您解决方法
- Revi插件技巧:管道【风口下延】自定义长度?
- 很短...道理很深---于丹
- 发育中的小鼠大脑细胞与结构图谱
- 数据挖掘-关联规则挖掘之Apriori算法