ZooKeeper技术总结
因为之前学习并使用了Kafka,所以专门查看了有关zookeeper相关的资料,看了大量的博客及官网资料,也因为有些地方理解不清楚向认识的专业人士进行了咨询,这里对这段时间的学习进行总结。
ZooKeeper特性
顺序性,client的updates请求都会根据它发出的顺序被顺序的处理;
原子性, 一个update操作要么成功要么失败,没有其他可能的结果;
一致的镜像,client不论连接到哪个server,展示给它都是同一个视图;
可靠性,一旦一个update被应用就被持久化了,除非另一个update请求更新了当前值
实时性,对于每个client它的系统视图都是最新的
ZooKeeper集群
有关Zookeeper的集群,这里要引用官网的一张图
对上面这张图的各角色的描述如下
上面这张图需要重点说明的有如下几点:
1、 Zookeeper集群的读写模式采用的是写任意。即不论是Leader还是Follower还是Observe均能接收到写请求,但是Follower和Observe会把写请求转发给Leader。
这个地方的理解可能有点拗,就是所有Zookeeper Server只响应来自Leader的写请求,如果不是Leader发起的就先转发给Leader。为什么这么做可以参考下面的数据一致性。
2、 所谓集群,对外来说就是一个整体,上面Client与Server的链接均为通过负载均衡获取。
3、 对于kafka而言,每一个Broker服务就是上图中的Client。如果kafka也采用集群的方式,上面的图就应该变成下面这样。
数据一致性
对于任何一个Client,不论你连接的是Zookeeper集群的哪个Server,得到的都是同一个数据视图。
Zookeeper集群最大一个特点就是解决分布式一致性问题。简单讲,数据一致性就是指在对一个副本数据进行更新的同时,必须确保也能更新其他副本(其他副本可能在各个不同的服务器节点),否则不同副本之间的数据将不再一致。
ZooKeeper是如何做到这一点的,就是采用了paxos算法。
过程详解:
1 ,客户端发请求:执行 Client 程序,比如说,我们连接到的是 follower,那么我们就跟 follower 说,我要新增一条数据。
2 ,上报:follower 是没有权利进行事务性操作的( 增,删,改,都属于事务性操作 ),follower 把请求上报给 leader 。
3 ,广播:leader 将新增数据的消息发送给集群中的所有节点。
4 ,过半数成功原则:如果一半以上的机器新增数据成功,那么就认为数据已经新增成功了,将新增成功的结果发送给接受请求的 follower。
5 ,响应:follower 告诉 Cleint 客户端,新增成功
其余的知识点这里就不写了,可以通过下面几篇博客来参考。
Zookeeper的功能以及工作原理https://www.cnblogs.com/felixzh/p/5869212.html
ZooKeeper学习第一期---Zookeeper简单介绍https://www.cnblogs.com/sunddenly/p/4033574.html
zookeeper理论https://www.cnblogs.com/felixzh/p/5873252.html
ZooKeeper技术总结的更多相关文章
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- 从Paxos到ZooKeeper-四、ZooKeeper技术内幕
本文将从系统模型.序列化与协议.客户端工作原理.会话.服务端工作原理以及数据存储等方面来揭示ZooKeeper的技术内幕. 一.系统模型 1.1 数据模型 ZooKeeper的视图结构使用了其特有的& ...
- 分布式网站架构后续:zookeeper技术浅析
Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用 越来越多.今天我想谈谈zookeeper,本文不谈如何使用z ...
- zookeeper技术浅析
Zookeeper是hadoop的一个子项目,尽管源自hadoop,可是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多. 今天我想谈谈zookeeper.本文不谈如何使用z ...
- [Zookeeper研究]一 Zookeeper技术简介
最近的项目中使用到了Zookeeper.Kafka以及Storm.仔细研究了一下,觉得这几个开源项目对于搞分布式的人来说是非常有用的,所以想把自己的一点心得体会总结一下,希望能对大家有所帮助. 首先从 ...
- Zookeeper技术分享
内容整理自组内分享PPT 一.概述 ZooKeeper 遵循一个简单的客户端-服务器模型,其中客户端 是使用服务的节点(即机器),而服务器 是提供服务的节点.ZooKeeper 服务器的集合形成了一个 ...
- 2、初探 ZooKeeper 技术内幕
分布式一致性 “分布式” 是大型系统实现高性能.高可用所常用的架构手段,本章节将概述 “分布式一致性”的基本内容,以作为 ZAB 算法阐述的基础. 分布式一致性的基本概念 数据库系统的基础理论中,“事 ...
- 大数据相关技术原理资料整理(hdfs, spark, hbase, kafka, zookeeper, redis, hive, flink, k8s, OpenTSDB, InfluxDB, yarn)
hdfs: hdfs官方文档 深入理解HDFS的架构和原理 https://blog.csdn.net/kezhong_wxl/article/details/76573901 HDFS原理解析(总体 ...
- Hadoop学习笔记—14.ZooKeeper环境搭建
从字面上来看,ZooKeeper表示动物园管理员,这是一个十分奇妙的名字,我们又想起了Hadoop生态系统中,许多项目的Logo都采用了动物,比如Hadoop采用了大象的形象,所以我们可以猜测ZooK ...
随机推荐
- IntelliJ IDEA 2017.3尚硅谷-----省电模式
- 801. 二进制中1的个数(lowbit(n)函数)
给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数. 输入格式 第一行包含整数n. 第二行包含n个整数,表示整个数列. 输出格式 共一行,包含n个整数,其中的第 i 个数表示数列中的第 ...
- python之路之考试题目
- 第四十七篇 入门机器学习——分类的准确性(Accuracy)
No.1. 通常情况下,直接将训练得到的模型应用于真实环境中,可能会存在很多问题 No.2. 比较好的解决方法是,将原始数据中的大部分用于训练数据,而留出少部分数据用于测试,即,将数据集切分成训练数据 ...
- 多数据源切换-Druid
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_37279783/article/d ...
- JavaScript中的 typeof,null,和undefined
typeof操作符 null 在JavaScript中null表示“什么都没有”. null是一个只有一个值的特殊类型.表示一个空对象引用. typeof null; 返回的是object 可以将nu ...
- docker为镜像添加SSH服务
启动并进入容器中 这里用db1容器完成实验. 安装openssh服务和修改sshd配置文件 安装openssh yum install openssh-server openssh-clients - ...
- Js将字符串转换成对象或数组en
举个例子 var test='{ colkey: "col", colsinfo: "NameList" }' a.将文本转换成对象 var test='{ c ...
- php 填写pdf 表单
最近接到新的任务,要求把pdf的文档,编辑后发邮件 首先pdf表单提交,需要用到这个东西pdftk,GitHub地址:https://github.com/mikehaertl/php-pdftk 首 ...
- Windows下MD5校验
参考博客:https://www.cnblogs.com/liubinghong/p/9299276.html 参考博客:https://www.jianshu.com/p/1e1d56552e03 ...