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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?