ZooKeeper学习笔记(八):ZooKeeper集群写数据原理
写数据原理
写流程直接请求发送给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集群写数据原理相关推荐
- Redis 学习笔记八:集群模式
Redis 学习笔记八:集群模式 作者:Grey 原文地址: 博客园:Redis 学习笔记八:集群模式 CSDN:Redis 学习笔记八:集群模式 前面提到的Redis 学习笔记七:主从复制和哨兵只能 ...
- Hadoop学习笔记—13.分布式集群中节点的动态添加与下架
Hadoop学习笔记-13.分布式集群中节点的动态添加与下架 开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如 ...
- 第七章 :Hadoop+Zookeeper 3节点高可用集群搭建和原理解释
一,原理 先说一下Zookeeper在Hadoop集群的作用,以前我们学习Hadoop伪分布式的时候没有用到Zookeeper是因为伪分布式只有一个NameNode,没有Active和Standby状 ...
- go-pitaya学习笔记(11) - 测试集群rpc
学习笔记: 我家别墅靠大海/pitaya-learn 尝试集成功能:我家别墅靠大海/pitaya-game 如果你正在看此笔记,请你左边放笔记,右边放chatdemo的代码!! 我是按代码的顺序记的笔 ...
- 【删】【Kubernetes视频学习笔记】Kubernetes集群YAML文件详解
文章目录 概述 YAML文件介绍 YAML概述 YAML 基本语法 YAML 支持的数据结构 对象 数组 YAML文件组成部分 控制器的定义 被控制的对象 属性说明 如何快速编写YAML文件 使用ku ...
- ES学习笔记(二):集群配置与启动 --mac环境
1 环境准备: 复制原有es文件,分别为三个文件夹:Node-8001,Node-8002,Node-8003 删除三个文件夹中的data文件,清除log文件 修改配置文件 1.1修改配置文件 配置文 ...
- hbase 学习(十三)集群间备份原理
集群建备份,它是master/slaves结构式的备份,由master推送,这样更容易跟踪现在备份到哪里了,况且region server是都有自己的WAL 和HLog日志,它就像mysql的主从备份 ...
- ZooKeeper学习笔记五 ZooKeeper开源客户端ZkClient
本文学习资源来自<从Paxos到ZooKeeper分布式一致性原理与实践> ZkClient ZkClient 在ZooKeeper原生API接口之上进行了封装,是一个更易用的ZooKee ...
- vue 3 学习笔记 (八)——provide 和 inject 用法及原理
在父子组件传递数据时,通常使用的是 props 和 emit,父传子时,使用的是 props,如果是父组件传孙组件时,就需要先传给子组件,子组件再传给孙组件,如果多个子组件或多个孙组件使用时,就需要传 ...
最新文章
- Finalize/Dispose/Destructor
- ORACLE 如何查询被锁定表及释放session
- Fiddler抓取HTTPS包
- Ant在MyEclipse中的配置总结
- 荣事达空调质量差3天即坏
- 百度地图 使用两条平行线表示路线
- Python 网络爬虫笔记3 -- Beautiful Soup库
- Winsows VISTA启动过程解析
- mysql 排序去重复_php mysql 过滤重复记录并排序
- Python综合应用(1)--名片管理系统开发
- vue封装websocket_有关WebSocket必须了解的知识
- 在SharePoint网站中访问Webservice被拒绝的解决方法
- Node.js跨域请求解决方案
- 一位前端工程师的Writing better code
- 功夫小子实践开发-资源异步加载及过渡场景的分析和实现
- mysql中timestamp字段
- 谷歌“Adobe Flash Player已被屏蔽”的解决办法
- 戴尔服务器r330系统设置,DELL台式机330的BIOS设置中文图解
- ctf-web入门-php特性
- 打印机共享计算机密码,打印机共享需要密码,教你打印机共享需要密码怎么解决...