zookeeper入门及基本使用
1.下载安装,-bin.tar.gz是编译过的,下载这个,而tar.gz是没编译过的,下载解压后在\bin下zkServer.cmd启动,由于我的idea开了一个服务占用了8080端口,曾导致启动失败,关掉idea就成功启动了。
2.启动后,就可以搞一个客户端连一下。bin目录下的zkCli.cmd就可以。
3.现在就可以操作命令了。
4.节点类型七种。 持久化节点,持久化顺序节点 -s,临时节点 -e,临时顺序节点 -e -s,容器节点 -c,TTL节点 -t,TTL顺序节点 -t -s。
临时节点:临时节点将客户端关掉就会消失,会话级别的,可用于分布式锁,客户端异常关闭,就会自动被删除,所以省去了redis的unlock的操作。并且,临时节点下是不能创建子节点的。
容器节点:刚创建的正常,,但是如果操作了,创建了子节点,,,然后子节点个数被删除到0后,当定时任务扫描到该容器节点就会被删掉。
TTL节点:create -t 3000 /ttest,可以设置一个时间,这里是3s,即存活时间为3s,3s内无任何操作就会消失,注意也不一定是3s,也要定时任务扫描的,至少是3s.
5.watch机制,,参考其他资料,目前还不是很熟悉。
zookeeper.addWatch("/litest", new watch(){重写process方法}, AddWatchMode.PERSISTENT);
节点有变化就执行了重写方法内的代码,只有/litest节点变化才行,childer不行,但是用递归监听器可以做到,AddWatchMode.PERSISTENT_RECURSIVE即可。
6.应用场景: 分布式锁,分布式配置中心,注册中心,集群管理等。
分布式锁:用的主要是顺序节点,临时节点,watch机制。
分布式配置中心:用的主要是watch机制。
Dubbo: 用的主要是临时节点和watch机制。
7.zk优势主要还是因为高可用,性能好,强一致性(最终一致性)