写数据原理

写流程直接请求发送给Leader节点

这里假设集群中有三个zookeeper服务端
ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。 表示发来的数据已确认接收无误。 在TCP/IP协议中,如果接收方成功的接收到数据,那么会回复一个ACK数据。 通常ACK信号有自己固定的格式,长度大小,由接收方回复给发送方。

步骤 Leader follower-1号 follower-2号
1 首先接受到写请求,然后写数据到leader中
2 leader会通知对应的follower,让他写相应的数据
3 这里follower-1号在写完数据的时候会给leader返回一次ack告诉leader写完了.这里ZooKeeper的机制是当数据已有半数以上的写入那么leader服务端(这里是因为写入请求请求的leader)就可以给客户端进行(ack)应答,告诉客户端我的数据已经写好了
4 即使leader已经应答了客户端,但是这里leader依旧会通知其他没有写入数据的follower进行数据的写入
5 当follow-2号写完数据时也会给leader返回一次ack,告诉leader他写完了

写流程直接请求发送给Follower节点

这里依旧假设集群中有三个zookeeper服务端

步骤 Leader follower-1号 follower-2号
1 首先接受到写请求,因为follower没有写权限所以需要把写(write)请求交给leader进行处理
2 leader接受到follower-1号写请求,然后写数据到leader中
3 leader会通知对应的follower,让他写相应的数据
4 这里follower-1号在写完数据的时候会给leader返回一次ack告诉leader写完了.这里ZooKeeper的机制是当数据已有半数以上的写入,那么leader服务端这里需要对follower-1号进行应答,因为是follower-1号先接受到的客户端传来的写请求
这里follower-1号接收到了,leader传过来的已经达到了半数的应答.就可以给客户端进行(ack)应答,告诉客户端我的数据已经写好了.这里不是leader去做应答给客户端是因为客户端请求的是follower-1号
5 即使follower-1号已经应答了客户端,但是这里leader依旧会通知其他没有写入数据的follower进行数据的写入
6 当follow-2号写完数据时也会给leader返回一次ack,告诉leader他写完了

其他ZooKeeper文章

ZooKeeper学习笔记(一): ZooKeeper是什么能用来做什么
ZooKeeper学习笔记(二): Zookeeper的安装与启动(Docker)
ZooKeeper学习笔记(三): Zookeeper的五大参数解读
ZooKeeper学习笔记(四): Docker搭建ZooKeeper集群(这里是三个,具体可以修改对应参数)脚本
ZooKeeper学习笔记(五): ZooKeeper集群选举机制
ZooKeeper学习笔记(六): 客户端命令行操作
ZooKeeper学习笔记(七):ZooKeeper依赖-API方法
ZooKeeper学习笔记(八):服务器动态上下线原理

ZooKeeper学习笔记(八):ZooKeeper集群写数据原理相关推荐

  1. Redis 学习笔记八:集群模式

    Redis 学习笔记八:集群模式 作者:Grey 原文地址: 博客园:Redis 学习笔记八:集群模式 CSDN:Redis 学习笔记八:集群模式 前面提到的Redis 学习笔记七:主从复制和哨兵只能 ...

  2. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    Hadoop学习笔记-13.分布式集群中节点的动态添加与下架 开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如 ...

  3. 第七章 :Hadoop+Zookeeper 3节点高可用集群搭建和原理解释

    一,原理 先说一下Zookeeper在Hadoop集群的作用,以前我们学习Hadoop伪分布式的时候没有用到Zookeeper是因为伪分布式只有一个NameNode,没有Active和Standby状 ...

  4. go-pitaya学习笔记(11) - 测试集群rpc

    学习笔记: 我家别墅靠大海/pitaya-learn 尝试集成功能:我家别墅靠大海/pitaya-game 如果你正在看此笔记,请你左边放笔记,右边放chatdemo的代码!! 我是按代码的顺序记的笔 ...

  5. 【删】【Kubernetes视频学习笔记】Kubernetes集群YAML文件详解

    文章目录 概述 YAML文件介绍 YAML概述 YAML 基本语法 YAML 支持的数据结构 对象 数组 YAML文件组成部分 控制器的定义 被控制的对象 属性说明 如何快速编写YAML文件 使用ku ...

  6. ES学习笔记(二):集群配置与启动 --mac环境

    1 环境准备: 复制原有es文件,分别为三个文件夹:Node-8001,Node-8002,Node-8003 删除三个文件夹中的data文件,清除log文件 修改配置文件 1.1修改配置文件 配置文 ...

  7. hbase 学习(十三)集群间备份原理

    集群建备份,它是master/slaves结构式的备份,由master推送,这样更容易跟踪现在备份到哪里了,况且region server是都有自己的WAL 和HLog日志,它就像mysql的主从备份 ...

  8. ZooKeeper学习笔记五 ZooKeeper开源客户端ZkClient

    本文学习资源来自<从Paxos到ZooKeeper分布式一致性原理与实践> ZkClient ZkClient 在ZooKeeper原生API接口之上进行了封装,是一个更易用的ZooKee ...

  9. vue 3 学习笔记 (八)——provide 和 inject 用法及原理

    在父子组件传递数据时,通常使用的是 props 和 emit,父传子时,使用的是 props,如果是父组件传孙组件时,就需要先传给子组件,子组件再传给孙组件,如果多个子组件或多个孙组件使用时,就需要传 ...

最新文章

  1. Finalize/Dispose/Destructor
  2. ORACLE 如何查询被锁定表及释放session
  3. Fiddler抓取HTTPS包
  4. Ant在MyEclipse中的配置总结
  5. 荣事达空调质量差3天即坏
  6. 百度地图 使用两条平行线表示路线
  7. Python 网络爬虫笔记3 -- Beautiful Soup库
  8. Winsows VISTA启动过程解析
  9. mysql 排序去重复_php mysql 过滤重复记录并排序
  10. Python综合应用(1)--名片管理系统开发
  11. vue封装websocket_有关WebSocket必须了解的知识
  12. 在SharePoint网站中访问Webservice被拒绝的解决方法
  13. Node.js跨域请求解决方案
  14. 一位前端工程师的Writing better code
  15. 功夫小子实践开发-资源异步加载及过渡场景的分析和实现
  16. mysql中timestamp字段
  17. 谷歌“Adobe Flash Player已被屏蔽”的解决办法
  18. 戴尔服务器r330系统设置,DELL台式机330的BIOS设置中文图解
  19. ctf-web入门-php特性
  20. 打印机共享计算机密码,打印机共享需要密码,教你打印机共享需要密码怎么解决...

热门文章

  1. 【软件网每日新闻播报│第9-27期】
  2. Android MVP 架构设计 (一)
  3. 华为ICT学院2.0计划发布,未来5年培养全球200万ICT人才
  4. cypher第一章背景与攻略
  5. python 简历处理_利用python处理简历和名单——处理excel os、shutil处理文件
  6. SSD:Single Shot MultiBox Detector解读
  7. MarkdownNote
  8. JAVA实现简单的猜数字游戏
  9. 如何将大量图片文件合并成一个*.bin文件
  10. Vue 设置图片不转为base64