zookeeper的核心概念是znode,可以在分布式环境中存储少量的数据。其数据存储在配置文件中的zoo.cfg中的dataDir ,默认值为dataDir = /temp/zookeeper,这个会在电脑重启后丢失,所以在学习和使用的过程中,要注意修改。
在分布式环境中,要注意配置其他节点的位置,比如
#server.每个节点服务编号=服务器ip地址:集群通信端口:选举端口 server.1=bigdata-pro01.kfk.com:2888:3888 server.2=bigdata-pro02.kfk.com:2888:3888 server.3=bigdata-pro03.kfk.com:2888:3888
节点服务编号需要在dataDir新建文件myid,然后可以写入1,2,或者3,这样server就可以相互通信了。
Zookeeper不仅可以保持分布式事物中,数据一致性,还提供监听机制Watcher,数据发生变更了会通知订阅者,以便订阅者做出响应。然后就是编写Zookeeper的应用,这需要有一个好用的客户端组件,幸好有netflix开源了一套curator组件,详细参考博文:https://www.cnblogs.com/java-zhao/p/7350945.html。
操作Zookeeper的节点较为简单,主要还是看一下,是怎么监听节点的。curator监听节点的机制是用本地缓存,Zookeeper中的数据比较。其源码在包中:
org.apache.curator.framework.recipes.cache。 可以看到,里面有三个node,就是代表三种监听方式:本节点(NodeCache), 直接子节点(PathChildrenCache), 完全子节点(TreeCache)。
参考博文:
treeCache的监听: https://blog.csdn.net/xiaoxiaoxuanao/article/details/52871240
zookeeper原理:https://blog.csdn.net/liyiming2017/article/details/83035157