美文网首页ZooKeeper新手
Zookeeper入门之七-ZK的数据同步

Zookeeper入门之七-ZK的数据同步

作者: AlanKim | 来源:发表于2019-02-09 13:31 被阅读26次

ZK的数据存储、集群间通信及数据同步

zk中所有数据都是放在内存中的,当然也有snapshot、事务日志。

snapshot:

用于记录zk服务器上某一时刻的全量内存数据内容。snapshot.2c021384ce,后缀也是一个zxid,表示本次数据快照开始时刻的服务器最新zxid。没有预分配机制,所有内容都是有效的。

事务日志:

每次事务操作都会有一条记录保存在事务日志文件中,文件大小都是64M(包含填充,也就是预分配,主要为了提高事务日志的写入效率,不需要重新分配磁盘空间),日志后缀是一条zxid,也就是写入该事务文件的第一条事务记录的zxid

数据同步

数据的同步都是由leader发起,简单来说,learner启动时都会向leader建立连接,由leader分别对followe和observer进行数据同步,有全量同步、仅回滚同步、先回滚再差异化同步、直接差异化同步四种同步指令。

leader发送给learner的差异化数据同步指令(proposal),如果learner同意就会返回ack,如果leader收到ack,就会同时进入过半策略的等待阶段—leader会和其他learner服务器进行上述同样的数据同步流程,知道集群中有过半的learner机器响应了leader的这个ack消息。

一旦满足过半策略后,leader服务器就会向所有已经完成数据同步的learner机器发送一个uptodate指令,用来通知learner已经完成了数据同步,同时集群中已经有过半机器完成了数据同步,集群已经具备了对外服务的能力了。

learner在接收到这个uptodate指令后,会终止数据同步流程,然后向leader再反馈一个ack消息。

请求

如果集群中的follewer接收到来自客户端的写请求,follower会将消息通过REQUEST请求给到leader,统一交给leader来处理,leader处理结束之后,会再次广播数据。

相关文章

  • Zookeeper入门之七-ZK的数据同步

    ZK的数据存储、集群间通信及数据同步 zk中所有数据都是放在内存中的,当然也有snapshot、事务日志。 sna...

  • ZK系列之ZooKeeper使用入门

    ZK系列之ZooKeeper使用入门 准本条件 操作系统 ZK包含了很多组件,有些组件支持很多系统,而有些只支持部...

  • 2022年度生产问题回顾

    Zookeeper fsync超时 问题简述 ZK leader节点与follower节点之间fsync同步动作耗...

  • Kylin在启动时Hbase报错:The table kylin

    此问题经过分析,大概是由于 Hbase和自带的Zookeeper 数据不同步导致的,hbase中明明没表,zk中记...

  • zookeeper

    zookeeper是什么? zookeeper能够解决什么问题? 统一的配置管理,同步更新到所有zk节点,所有ap...

  • ZooKeeper第一天

    1. Zookeeper 综述 1.1.zk总体介绍 整个 ZK 体系会从入门开始,到基础,进阶以及实战,最后把相...

  • Zookepper系列之(4)——ZooKeeper Curat

    一、ZooKeeper Curator 1、创建会话 2、创建节点使用Curator的同步接口 注意:zk的非叶子...

  • Zookeeper入门之六-ZK的选举

    ZK的选举 先定义一些名词: 投票Vote: 包含两个主要信息, zxid(事务ID,某个操作会有全局唯一的事务I...

  • kafka中zookeeper的作用

    Kafka将元数据信息保存在Zookeeper中,但是发送给Topic本身的数据是不会发到Zk上的,否则Zk就疯了...

  • Soul网关同步数据之Zookeeper

    Soul网关同步数据之Zookeeper 调整配置 pom文件中注释掉原来默认的websocket同步方式,改为z...

网友评论

    本文标题:Zookeeper入门之七-ZK的数据同步

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