博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZooKeeper技术总结
阅读量:5030 次
发布时间:2019-06-12

本文共 1333 字,大约阅读时间需要 4 分钟。

  因为之前学习并使用了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的功能以及工作原理

ZooKeeper学习第一期---Zookeeper简单介绍

zookeeper理论

转载于:https://www.cnblogs.com/chenchaochao034/p/11255118.html

你可能感兴趣的文章
UVALive 4730 Kingdom +段树和支票托收
查看>>
[APIO2010]特别行动队
查看>>
[SCOI2016]幸运数字
查看>>
SpringBoot 集成ehcache
查看>>
初步swift语言学习笔记2(可选类型?和隐式可选类型!)
查看>>
Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
查看>>
在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
查看>>
在Macos下完美解决Adobe Dreamweaver CC 2018 汉化及操作方法
查看>>
【转】 Newtonsoft.Json高级用法
查看>>
CodeBlocks X64 SVN 编译版
查看>>
Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
查看>>
bug记录_signalr执行$.connnection.testhub结果为空
查看>>
【转】常用的latex宏包
查看>>
[TMS320C674x] 一、GPIO认识
查看>>
酷狗的皮肤文件存放在哪
查看>>
iOS RunLoop简介
查看>>
C++的引用
查看>>
T-SQL查询进阶--深入浅出视图
查看>>
MapKeyboard 键盘按键映射 机械革命S1 Pro-02
查看>>
Android读取url图片保存及文件读取
查看>>