栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

zookeeper

zookeeper

启动

./zkServer.sh start

运行之后,里面包含一条命令:nohup “$JAVA” 参数 $ZOOMAIN $ZOOCFG

ZOOMAIN 就是所有程序的入口org.apache.zookeeper.server.quorum.QuorumPeerMain

1 服务启动

2 解析参数

3 过期快照删除

4 通信初始化 runFromConfig

​ a 创建工厂,默认使用 NIOServerCnxnFactory

​ b cnxnFactory.configure 绑定socket

5 启动zk getQuorumPeer(); quorumPeer.start();

加载

内存的结构为DataTree,每个节点为DataNode(/znode1);硬盘中的结构为snapShot快照和TxLog编辑日志

初始化时,内存没有数据,会从磁盘目录反序列化读取快照和编辑日志,恢复数据。

加载之后,cud操作都会记录到编辑日志里,最后再合帐到snapshot(此时编辑日志会消失)。

quorumPeer.start(); 启动后 loadDatabase(); snapLog.restore() // 恢复快照,加载编辑日志;

选举

第一次选举
非第一次选举


优先级:order by epoch desc, zxid desc, sid desc

epoch
当前集群所处的年代或者周期,每个 leader 都有自己的纪元,所以每次选举,leader 变更之后,都会在前一个年代的基础上加 1。这样是为了旧 leader 恢复之后,也不会 follow 错,因为 follower 只 follow 新纪元的 leader。

选举代码结构

选举准备过程

选举投票过程

zookeeper的四种状态

Looking、Leader、Follower、Observer(与Follower类似,但是无投票权)

Zookeeper需保证高可用和强一致性,为了支持更多的Server,而Server 增多,投票阶段延迟增大,影响性能,故引入 Observer。Observer不参与投票。

Observers接受客户端的连接,并将写请求转发给leader节点。加入更多Observer节点,可以提高伸缩性,同时不影响吞吐率。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780753.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号