美文网首页
Zookeeper原理和ZAB协议

Zookeeper原理和ZAB协议

作者: 沐兮_d64c | 来源:发表于2019-07-29 02:45 被阅读0次

    1,zookeeper架构组件

    1)概念
    Leader :zk集群主节点,用户写入数据、提供读取服务、处理事务请求等。
    Follower:zk集群从节点,用于同步Leader、提供读取服务、处理非事务请求等。leader与follower间使用心跳监测来保持连接。
    Client:连接leader或者follower,定时发送心跳,保持链接。
    Znode:包含stat元数据。版本号(多个客户端cas操作)、时间戳、数据长度、ACL读写权限。
    2)会话和监视
    会话:client连接server时分配ID,创建临时节点时,会保存sessionId(用户断开时删除节点)。client通过特定间隔发送心跳,来保持session有效。
    监视:用于向客户端通知znode的变更,包含本身数据变更和子节点变更。可以在读取znode时,设置watch。
    3)读取和写入
    写入:leader处理(follower接收则转发到leader),广播写入请求到所有follower,当超过一半返回ack,则完成写入过程。
    读取:每个server都有自己的database,不需要与集群交互。
    4)zxid:每一个节点的创建、删除、更新等都有一个全局唯一的事务id。

    2,ZAB协议

    1)Zookeeper Atomic Broadcastzk原子广播协议,基于paxos协议,解决多节点写入问题的协议,用于实现分布式一致性算法
    2)zab阶段
    选举(election):每个follower都向其他节点发送(选取自身为leader的vote投票)。 其他follower接收到vote后,对比zxid(本地日志中最大事务id),如果比自己新则投票并更新自身vote。当某个节点收到超过半数的vote时,则选取为leader。
    发现(discovery) :follower向准leader发送followerinfo命令,准leader返回newleader指令。
    同步(sync):leader发起同步指令,根据leader日志,更新所有follower节点的数据。
    广播(boradcast):客户端提交事务请求到leader,leader广播事务到所有的follower,收到超过半数的ack时,则进行事务的提交。

    相关文章

      网友评论

          本文标题:Zookeeper原理和ZAB协议

          本文链接:https://www.haomeiwen.com/subject/qbzmrctx.html