zookeeper还是很简单的,官方文档足以,这里还是简单做个记录
定义:
zookeeper是一个分布式的,为分布式应用提供协调服务的APache项目。基于观察者模式设计的分布式服务管理框架。
特点
- 一个领导者(Leader),多个跟随者(follower)组成的集群
- 只要半数以上的几点存活,集群就能正常工作
- 全局数据一致,每个server都保存一份相同的数据
- 更新请求顺序执行
- 原子性
- 实时性
- 统一命名服务
- 统一配置管理
- 统一集群管理
- 服务器动态上下线
- 负载均衡
操作步骤:
- 集群规划:在hadoop102,hadoop103,hadoop104三个节点上部署zookeeper
- 同步其中一台zookeeper目录下的文件至其他服务器
- 配置服务器编号:在zookeeper目录下创建zkData,并在其中创建myid文件,编辑myid文件内的内容,输入编号,比如2,3,4
- 配置zoo.cfg文件:一般是重命名conf目录下的zoo_sample.cfg文件。并在其中修改dataDir字段,指定为zkData所在目录,并增加server.2=服务器编号:IP地址:该服务器与leader交换信息的端口:宕机时选举的通信端口相应信息。最后同步该文件。
(zookeeper在启动时读取myid与cfg中的信息进行比较从而确定该服务器是哪一台) -
分别启动zookeeper服务,查看状态
客户端命令
$ zkCli.sh 启动客户端
参考该博文
结构体
1)czxid- 引起这个znode创建的zxid,创建节点的事务的zxid
2)ctime - znode被创建的毫秒数(从1970年开始)
3)mzxid - znode最后更新的zxid
4)mtime - znode最后修改的毫秒数(从1970年开始)
5)pZxid-znode最后更新的子节点zxid
6)cversion - znode子节点变化号,znode子节点修改次数
7)dataversion - znode数据变化号
8)aclVersion - znode访问控制列表的变化号
9)ephemeralOwner- 如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0
10)dataLength- znode的数据长度
11)numChildren - znode子节点数量
监听器的原理
写数据流程
剩下的就是Java示例了,以后有机会再写。。。