文章目录
原理
选举机制(重点)
情况1:正常启动集群
集群中5台zookeeper机器依次启动后选举领导的整个过程
情况2:集群启动完,中途有机器挂了
监听器
监听数据的变化
监听子节点增删的变化
客户端向服务端写入数据
客户端向服务端Leader节点写入
客户端向服务端Follower节点写入
Paxos算法(每个节点都可以提议者)
Paxos算法完美情况
Paxos算法弊端
ZAB协议算法 - Paxos算法的改良 - 集群仅能一位提议者(即Leader)
认识
此图对应的是上图的流程图
崩溃恢复
Leader挂,重新选举
数据恢复
CAP理伦
脚本
集群统一启动、关闭、状态查看脚本
zk.sh
#!/bin/bash
# 运行此脚本前必须把当前机器人的公私密钥给到目标运行机器 == 要不然每次运行此脚本时都会叫你输入每台目标机器的密码
# 命令1(本机生成RSA公私密钥):ssh-keygen -t rsa
# 命令2(将密钥传给目标三台机器即192.168.19.107、192.168.19.108、192.168.19.109 ):ssh-copy-id root@目标机器IP
for currentHostName in 192.168.19.107 192.168.19.108 192.168.19.109
do
echo "=================zookeeper【${currentHostName}】【$1】==============================="
case $1 in
"start") {
ssh $currentHostName "cd /opt/module/zookeeper-3.9.1 && sh bin/zkServer.sh start"
}
;;
"stop") {
ssh $currentHostName "cd /opt/module/zookeeper-3.9.1 && sh bin/zkServer.sh stop"
}
;;
"status") {
ssh $currentHostName "cd /opt/module/zookeeper-3.9.1 && sh bin/zkServer.sh status"
}
;;
*) {
echo "未知命令,仅支持start|stop|status"
}
esac
done
源码分析(粗略)
辅助源码
持久化
序列化
服务端启动流程
服务端选举Leader流程
Leader、Follower数据同步流程
服务端Leader启动Zk过程
服务端Follower启动Zk过程
客户端连接Zk服务端过程
刚兴趣的同行可以进群沟通交流,内置机器人供大家愉快