Zoopkeeper
2020-04-26 17:05:04 0 举报
AI智能生成
Zookeeper框架
作者其他创作
大纲/内容
第一章 Zookeeper入门
1.1 概述
Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的框架
1.2 特点
一个Leader和多个Follower组成的集群
Leader负责进行投票的发起和决议,更新系统状态
Follower用于接收客户请求并向客户端返回结果,在选举Leader过程中参与投票
集群中有半数以上的节点存活,集群才能正常运行
数据一致性:每一个Server的数据都是一致的
顺序一致性:来自同一个Client的请求,按照发送顺序执行
原子性:一次更新,要么成功,要么失败
实时性:在一定时间范围内,Client能访问到最新的数据
1.3 数据结构
树形结构
1.4 应用场景
统一命名服务
统一配置管理
统一集群管理
服务器动态上下线
软负载均衡
第二章 Zookeeper本地模式安装
2.1 本地模式安装
2.1.1 安装前准备
安装jdk
解压安装包到指定目录
创建软连接
2.1.2 配置修改
2.1.3 操作Zookeeper
启动Zookeeper
查看状态
启动客户端
退出客户端
停止Zookeeper
2.2 配置参数解读
解读zoo.cfg文件中参数的含义
tickTime=2000,通信心跳数
initLimit=10,LF初始通信时限
syncLimit=5,LF同步通信时限
dataDir,数据文件目录+数据持久化路径
clientPort=2181,客户端连接服务器端口
第三章 Zookeeper内部原理
3.1 选举机制
半数机制
当已有Leader时,后启动的服务器均为Follower
3.2 节点类型
持久化目录节点
客户端与Zookeeper断开后,依然存在的节点
持久化顺序编号目录节点
且带顺序编号
临时目录节点
客户端与Zookeeper断开后,节点被删除
临时顺序编号目录节点
且带顺序编号
3.3 stat结构体
czxid- 引起这个znode创建的zxid,创建节点的事务的zxid
ctime - znode被创建的毫秒数(从1970年开始)
mzxid - znode最后更新的zxid
mtime - znode最后修改的毫秒数(从1970年开始)
pZxid-znode最后更新的子节点zxid
cversion - znode子节点变化号,znode子节点修改次数
dataversion - znode数据变化号
aclVersion - znode访问控制列表的变化号
ephemeralOwner- 如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0。
dataLength- znode的数据长度
numChildren - znode子节点数量
3.4 监听器原理
首先有一个main线程
在main线程中创建Zookeeper客户端,这时会创建两个线程,一个负责网络连接通信(connect),一个负责监听(listener)
通过connect线程将注册的监听事件发送给Zookeeper
在Zookeeper的注册监听列表中将注册的监听事件添加到列表中
Zookeeper监听到数据或路径有变化,就会将这个消息发送给listener线程
listener线程内部调用了process()方法
3.5 写流程
Client向Zookeeper的Server上写数据,发送一个写请求
若Server不是Leader,则将写请求转发给Leader,Leader再广播给所有Follower处理,Follower处理完成后,会通知Leader
当Leader接收到大多数Follower的写成功,则默认数据写成功,并告诉Server
Server进一步通知Client,数据写入成功
第四章 Zookeeper实战
4.1 分布式安装部署
4.1.1 解压安装
解压安装包
zoo.cfg文件重命名
创建zkData
创建软连接
4.1.2 配置zoo.cfg文件
具体配置
配置参数解读
4.1.3 集群操作
创建myid文件,并修改myid值
集群分发Zookeeper
分别启动Zookeeper
查看状态
4.2 客户端命令行操作
启动客户端
查看当前znode中所包含的内容
查看当前节点数据并能看到更新次数等数据
创建普通节点
获得节点的值
创建短暂节点
创建带序号的节点
修改节点数据值
节点的值变化监听
节点的子节点变化监听(路径变化)
删除节点
递归删除节点
查看节点状态
4.3 API应用
创建Zookeeper客户端
创建子节点
获取子节点
判断znode是否存在
收藏
0 条评论
下一页