因为之前学习并使用了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技术总结的更多相关文章

  1. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  2. 从Paxos到ZooKeeper-四、ZooKeeper技术内幕

    本文将从系统模型.序列化与协议.客户端工作原理.会话.服务端工作原理以及数据存储等方面来揭示ZooKeeper的技术内幕. 一.系统模型 1.1 数据模型 ZooKeeper的视图结构使用了其特有的& ...

  3. 分布式网站架构后续:zookeeper技术浅析

    Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用 越来越多.今天我想谈谈zookeeper,本文不谈如何使用z ...

  4. zookeeper技术浅析

    Zookeeper是hadoop的一个子项目,尽管源自hadoop,可是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多. 今天我想谈谈zookeeper.本文不谈如何使用z ...

  5. [Zookeeper研究]一 Zookeeper技术简介

    最近的项目中使用到了Zookeeper.Kafka以及Storm.仔细研究了一下,觉得这几个开源项目对于搞分布式的人来说是非常有用的,所以想把自己的一点心得体会总结一下,希望能对大家有所帮助. 首先从 ...

  6. Zookeeper技术分享

    内容整理自组内分享PPT 一.概述 ZooKeeper 遵循一个简单的客户端-服务器模型,其中客户端 是使用服务的节点(即机器),而服务器 是提供服务的节点.ZooKeeper 服务器的集合形成了一个 ...

  7. 2、初探 ZooKeeper 技术内幕

    分布式一致性 “分布式” 是大型系统实现高性能.高可用所常用的架构手段,本章节将概述 “分布式一致性”的基本内容,以作为 ZAB 算法阐述的基础. 分布式一致性的基本概念 数据库系统的基础理论中,“事 ...

  8. 大数据相关技术原理资料整理(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原理解析(总体 ...

  9. Hadoop学习笔记—14.ZooKeeper环境搭建

    从字面上来看,ZooKeeper表示动物园管理员,这是一个十分奇妙的名字,我们又想起了Hadoop生态系统中,许多项目的Logo都采用了动物,比如Hadoop采用了大象的形象,所以我们可以猜测ZooK ...

随机推荐

  1. IntelliJ IDEA 2017.3尚硅谷-----省电模式

  2. 801. 二进制中1的个数(lowbit(n)函数)

    给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数. 输入格式 第一行包含整数n. 第二行包含n个整数,表示整个数列. 输出格式 共一行,包含n个整数,其中的第 i 个数表示数列中的第 ...

  3. python之路之考试题目

  4. 第四十七篇 入门机器学习——分类的准确性(Accuracy)

    No.1. 通常情况下,直接将训练得到的模型应用于真实环境中,可能会存在很多问题 No.2. 比较好的解决方法是,将原始数据中的大部分用于训练数据,而留出少部分数据用于测试,即,将数据集切分成训练数据 ...

  5. 多数据源切换-Druid

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_37279783/article/d ...

  6. JavaScript中的 typeof,null,和undefined

    typeof操作符 null 在JavaScript中null表示“什么都没有”. null是一个只有一个值的特殊类型.表示一个空对象引用. typeof null; 返回的是object 可以将nu ...

  7. docker为镜像添加SSH服务

    启动并进入容器中 这里用db1容器完成实验. 安装openssh服务和修改sshd配置文件 安装openssh yum install openssh-server openssh-clients - ...

  8. Js将字符串转换成对象或数组en

    举个例子 var test='{ colkey: "col", colsinfo: "NameList" }' a.将文本转换成对象 var test='{ c ...

  9. php 填写pdf 表单

    最近接到新的任务,要求把pdf的文档,编辑后发邮件 首先pdf表单提交,需要用到这个东西pdftk,GitHub地址:https://github.com/mikehaertl/php-pdftk 首 ...

  10. Windows下MD5校验

    参考博客:https://www.cnblogs.com/liubinghong/p/9299276.html 参考博客:https://www.jianshu.com/p/1e1d56552e03 ...