• 解析ZooKeeper底层维护主从数据一致


    整个主从数据同步的过程,我们称之为二阶段提交。

    总结出七步:

    (1) 由于主从机制[就算Client连接从机,向从机写数据 从机也会把数据交给主机,让主机一并把数据发送给所有从机。从而保证主从一致],所以无论Client客户端

    向主机还是从机传输数据都相当于向主机进行传输数据

    (2)主节点会先把数据写到自己的数据文件当中,并给自己返回一个ACK

    (3)Leader会把数据发送给所有Follower

    (4)所有Follower从节点会把接收到Leader传输的数据写到本地的数据文件中(第一阶段提交)

    此时如果一个Client客户端连接到Follower这个从节点,但是无法读取到对应传输的数据,因为数据并没有保存到内存中 !

    (5) 所有Follower从节点在完成(4)之后,都进行返回一个ACK给Leader主节点

    (6)Leader如果收到半数以上的ACK后,那么就向所有的Follower进行发送Commit。

    对于这个半数以上我们进行解释:

    首先这个半数以上,是针对于从节点数的半数以上。

    其次为什么要执行(2)这个步骤,主节点也返回一个ACK给自己的呢?

    假设说从节点有偶数个,如果一个从节点在将数据写到本地数据文件中时发生故障,那么就失败了,该节点就不会返回ACK了。只有一个节点返回一个ACk:你怎

    么确定在半数以上?所以为了保证即使在一个从节点出现故障时,其他节点仍然保证与主机数据同步,我们就必须执行(2)来上一层保险

    (7)当Follower从节点接收到Leader发送的Commit后,把数据文件中的数据写到内存中。

  • 相关阅读:
    java学习笔记 day07-Java基础-综合练习
    【零基础入门TypeScript】对象
    Nacos注册中心1-nacos源码环境搭建
    电脑一键重装系统后连不上远程了?教你设置的方法
    Es 拼音搜索无法高亮
    【前端vue面试】vuex
    微服务框架 SpringCloud微服务架构 22 DSL 查询语法 22.4 地理查询
    如何把视频压缩到500m以下
    Java(97)Java的JNI学习(一)
    IDEA04:动态加载配置文件
  • 原文地址:https://blog.csdn.net/m0_61784000/article/details/126155040