Zookeeper学习笔记(整理)
第1章 ZooKeeper入门
- Zookeeper 是一个开源的分布式的,为分布式应用提供协调服务的Apache 项目。ZooKeeper=文件系统+通知机制
第2章 ZooKeeper安装
- 安装jdk
- 解压ZooKeeper
- 配置修改:
- 修改/opt/module/zookeeper-3.4.10/conf 这个路径下的zoo_sample.cfg 修改为zoo.cfg
- 打开zoo.cfg 文件,修改dataDir 路径dataDir=/opt/module/zookeeper-3.4.10/zkData
- 在/opt/module/zookeeper-3.4.10/这个目录上创建zkData 文件夹
- 分布式安装需要再配置:
- zkData目录下创建myid文件,写入ZooKeeper的id
- zoo.cfg中添加集群部署:server.A=B:C:D,A是myid,B是IP地址、C是监听端口(2888)、D是选举端口(3888)
第3章 ZooKeeper内部原理
选举机制(面试重点)
- 半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper 适合安装奇数台服务器。
- 2)Zookeeper 虽然在配置文件中并没有指定Master 和Slave。但是,Zookeeper 工作时,是有一个节点为Leader,其他则为Follower,Leader 是通过内部的选举机制临时产生的。
节点类型
- 持久节点,持久顺序编号节点
- 临时节点,临时顺序编号节点
stat结构体
监听器原理(面试重点)
- - ZooKeeper客户端(main线程)会创建两个线程(connect,listener),一个负责连接,一个负责监听;
- - 通过connect将要注册的监听事件发送给ZooKeeper;
- - ZooKeeper将要监听的事件添加至监听列表;
- - ZooKeeper监听到有数据或路径变化,会将消息发送给listener线程;
- - listener线程内部调用process()方法
写数据流程
- 客户端向ZooKeeper发送写数据请求
- 如果这个server不是leader会把这个请求发送给leader
- leader将请求广播给所有ZooKeeper server
- server写成功后会通知leader,leader收到大多数server数据写成功了就说明数据写成功了
- 之后leader会通知server数据写成功了,server进一步通知客户端数据写成功了
第4章 ZooKeeper实战(开发重点)
分布式安装
- 解压,在目录下创建zkData目录,用于存储zk数据
- 在zkData目录下创建myid,添加2,其他节点为3、4
- 配置conf目录下zoo.cfg
修改目录:
dataDir=/opt/module/zookeeper-3.4.10/zkData
添加:
#######################cluster##########################
server.2=localhost102:2888:3888
server.3=localhost103:2888:3888
server.4=localhost104:2888:3888
- 分别启动:bin/zkServer.sh start,启动客户端bin/zkCli.sh
客户端命令行操作
- help、ls path [watch]、ls2 [watch]、create [-s -e]、get path [watch] 、set、stat、delete、rmr、
API应用
- 创建ZooKeeper客户端
- 创建子节点
- 获取子节点并监听节点变化
- 判断节点是否存在
监听服务器节点动态上下线
- 服务器在ZooKeeper上注册/servers
- 客户端监听/servers/ + child
第5章 企业面试真题
- 请简述ZooKeeper 的选举机制:半数选举机制
- ZooKeeper 的监听原理是什么?:
- ZooKeeper客户端(main线程)会创建两个线程(connect,listener),一个负责连接,一个负责监听;
- 通过connect将要注册的监听事件发送给ZooKeeper;
- ZooKeeper将要监听的事件添加至监听列表;
- ZooKeeper监听到有数据或路径变化,会将消息发送给listener线程;
- listener线程内部调用process()方法 - ZooKeeper 的部署方式有哪几种?集群中的角色有哪些?集群最少需要几台机器?:
- 单机模式、集群模式
- Leader、Follower
- 3台 - ZooKeeper 的常用命令:ls create get delete set
---
本文来自博客园,作者:Bingmous,转载请注明原文链接:https://www.cnblogs.com/bingmous/p/15643710.html