从0开始学大数据
李智慧
同程艺龙交通首席架构师,前Intel大数据架构师,《大型网站技术架构》作者
立即订阅
14333 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么说每个软件工程师都应该懂大数据技术?
免费
预习模块 (3讲)
预习 01 | 大数据技术发展史:大数据的前世今生
预习 02 | 大数据应用发展史:从搜索引擎到人工智能
预习 03 | 大数据应用领域:数据驱动一切
模块一 Hadoop大数据原理与架构 (7讲)
04 | 移动计算比移动数据更划算
05 | 从RAID看垂直伸缩到水平伸缩的演化
06 | 新技术层出不穷,HDFS依然是存储的王者
07 | 为什么说MapReduce既是编程模型又是计算框架?
08 | MapReduce如何让数据完成一次旅行?
09 | 为什么我们管Yarn叫作资源调度框架?
10 | 模块答疑:我们能从Hadoop学到什么?
模块二 大数据生态体系主要产品原理与架构 (7讲)
11 | Hive是如何让MapReduce实现SQL操作的?
12 | 我们并没有觉得MapReduce速度慢,直到Spark出现
13 | 同样的本质,为何Spark可以更高效?
14 | BigTable的开源实现:HBase
15 | 流式计算的代表:Storm、Flink、Spark Streaming
16 | ZooKeeper是如何保证数据一致性的?
17 | 模块答疑:这么多技术,到底都能用在什么场景里?
模块三 大数据开发实践 (8讲)
18 | 如何自己开发一个大数据SQL引擎?
19 | Spark的性能优化案例分析(上)
20 | Spark的性能优化案例分析(下)
21 | 从阿里内部产品看海量数据处理系统的设计(上):Doris的立项
22 | 从阿里内部产品看海量数据处理系统的设计(下):架构与创新
23 | 大数据基准测试可以带来什么好处?
24 | 从大数据性能测试工具Dew看如何快速开发大数据系统
25 | 模块答疑:我能从大厂的大数据开发实践中学到什么?
模块四 大数据平台与系统集成 (6讲)
26 | 互联网产品 + 大数据产品 = 大数据平台
27 | 大数据从哪里来?
28 | 知名大厂如何搭建大数据平台?
29 | 盘点可供中小企业参考的商业大数据平台
30 | 当大数据遇上物联网
31 | 模块答疑:为什么大数据平台至关重要?
模块五 大数据分析与运营 (5讲)
32 | 互联网运营数据指标与可视化监控
33 | 一个电商网站订单下降的数据分析案例
34 | A/B测试与灰度发布必知必会
35 | 如何利用大数据成为“增长黑客”?
36 | 模块答疑:为什么说数据驱动运营?
模块六 大数据算法 (6讲)
37 | 如何对数据进行分类和预测?
38 | 如何发掘数据之间的关系?
39 | 如何预测用户的喜好?
40 | 机器学习的数学原理是什么?
41 | 从感知机到神经网络算法
42 | 模块答疑:软件工程师如何进入人工智能领域?
智慧写给你的寄语 (1讲)
所有的不确定都是机会——智慧写给你的新年寄语
结束语 (2讲)
结束语 | 未来的你,有无限可能
第2季回归丨大数据之后,让我们回归后端
从0开始学大数据
登录|注册

16 | ZooKeeper是如何保证数据一致性的?

李智慧 2018-12-04
你可能还记得,我们在讲 HDFS 和 HBase 架构分析时都提到了 ZooKeeper。在分布式系统里的多台服务器要对数据状态达成一致,其实是一件很有难度和挑战的事情,因为服务器集群环境的软硬件故障随时会发生,多台服务器对一个数据的记录保持一致,需要一些技巧和设计。
这也就是我们今天要讨论的分布式系统一致性与 ZooKeeper 的架构
在讲分布式系统一致性前,我们先回顾一下 HDFS。HDFS 为了保证整个集群的高可用,需要部署两台 NameNode 服务器,一台作为主服务器,一台作为从服务器。当主服务器不可用的时候,就切换到从服务器上访问。但是如果不同的应用程序(Client)或者 DataNode 做出的关于主服务器是否可用的判断不同,那么就会导致 HDFS 集群混乱。
比如两个应用程序都需要对一个文件路径进行写操作,但是如果两个应用程序对于哪台服务器是主服务器的判断不同,就会分别连接到两个不同的 NameNode 上,并都得到了对同一个文件路径的写操作权限,这样就会引起文件数据冲突,同一个文件指向了两份不同的数据。
这种不同主服务器做出不同的响应,在分布式系统中被称作“脑裂”。光看这个词你也可以看出问题的严重性,这时候集群处于混乱状态,根本无法使用。那我们引入一个专门进行判断的服务器当“裁判”,让“裁判”决定哪个服务器是主服务器不就完事了吗?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学大数据》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(36)

  • ASCE1885 置顶
    CAP 定理关注的是对数据的读写操作,而不是分布式系统的所有功能,它要求分布式系统节点间是互相连接且有数据共享的,例如 Memcache 的集群中节点相互间没有连接和数据共享,因此不是 CAP 定理讨论的对象,同理 ZooKeeper 的选举机制也不是 CAP 探讨的对象。

    摘自从零开始学架构,大家可以探讨下。

    作者回复: CAP的P如果按字面意思理解,网络分区容错,应该是A的一种情况,这样对设计没有指导意义,所以在9年前第一次看到CAP原理,我就按分片理解,这样所有的分布式系统就可以解释了,不存在不能探讨的分布式对象。这次专栏发布后,很多同学对P的理解提出质疑,我又查了下资料,确实这种理解比较激进,可能会造成误导,这部分内容已经删除,很抱歉。

    memcached和zk是最典型的分布式系统,一个分布式的关键原理不适用于最典型的分布式系统,老实说,很郁闷。

    2018-12-04
    1
    18
  • shangyu
    请问老师 对于文中这句话不太理解:“但是 ZooKeeper 系统中所有服务器都存储相同的数据,也就是数据没有分片存储,因此不满足分区耐受性”。zk没有分片但是都存储了相同数据,也就是有冗余备份,一定是要数据有分片才满足P吗
    2018-12-04
    10
  • M
    P和数据分不分片并没有任何关系吧。在分布式系统中P就是满足的,否则就是单机了。所以一般考虑的是CP和AP,CP是指在网络分区形成(分布式节点之间不能互相通信)的情况下,牺牲可用性,满足一致性,只有等到数据同步完成后才能恢复可用。而AP是指在网络分区形成的情况下,向外部继续提供使用,但是数据可能不一致(因为节点之间不能通信,所有节点的数据可能不一致)
    2018-12-04
    7
  • 忠厚
    ZooKeeper 集群的性能会随着服务器数量的增加而下降
    这个描述不准确,ZK中有三种角色 leader Follower observer ,而observer不参与投票,增加observer性能上不会有太大损失(在投票通过后leader结点会通知其他所有结点进行数据更新,这个过程是通过广播的形式完成,而且leader并不等待更新的结果)
    2018-12-21
    4
  • 纯洁的憎恶
    “CAP 定理关注的是对数据的读写操作,而不是分布式系统的所有功能,它要求分布式系统节点间是互相连接且有数据共享的,例如 Memcache 的集群中节点相互间没有连接和数据共享,因此不是 CAP 定理讨论的对象,同理 ZooKeeper 的选举机制也不是 CAP 探讨的对象。

    摘自从零开始学架构,大家可以探讨下。”

    有道理!我个人的理解是ZooKeeper本身确实不熟CAP探讨的对象。但是ZooKeeper的很多应用场景,如分布式系统的数据一致性,才是CAP探讨对象。解决问题的钥匙不是问题本身,我理解的对么?
    2018-12-04
    4
  • Jowin
    zookeeper提供的数据读写服务是cp模型,也就是强一致性。老师这里说的是zookeeper节点间的数据同步模型,如果非要套用cap的话,应该也是cp模型,容忍少于半数的节点故障,一旦多余半数的节点故障,就无法达成一致,系统就不可用性了。
    2018-12-04
    1
    4
  • Kaer
    P跟是指网络出现分区,不是数据分区。数据的分区是:shareding
    2018-12-04
    1
    4
  • cc_hust
    个人理解,CAP 中的P跟是否分片存储没有关系。在分布式环境中,P是必选项,需要权衡多副本的一致性和可用性, 单机系统才是放弃了P。
    2018-12-04
    4
  • dancer
    老师,P的释义感觉不是很准确,查了一下维基百科的定义,
    Partition tolerance: The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes
    2018-12-04
    3
  • godtrue
    估计是删除了部分内容,看评论好多都在聊CAP,看正文没见CAP什么事,不过之前学习过ZK是属于CP的。
    另外,感觉老师这个讲的浅,随便一个zk的讲解都比这多,我自己百度过分布式一致性协议,感觉2PC/3PC还能理解,对于ZAB的简单说明也能理解,不过paxos确实理解不了,很期待有人能通俗易懂的将所有分布式一致性协议都对比讲解清楚一下!
    2019-09-28
    2
  • AF
    老师能专门讲一下zookeeper的leader选举机制吗
    2018-12-21
    2
  • galen
    如何保证从Zookeep节点中读取的数据,是最新的数据?
    Zookeep节点可能还在同步数据,当前节点的数据不是最新的数据
    2018-12-04
    2
  • Zend
    是否可以在分布式系统中不信任的机器加入黑名单,放在ZooKeeper上。

    作者回复: 如果连zookeeper集群本身的机器就不可信任,黑名单也是不可信任的。

    可以参考区块链的实现机制。我在《后端技术》专栏会讲区块链技术架构。

    2019-11-18
    1
    1
  • A:春哥大魔王
    zk集群可用性怎么保证呢?这不又回到原始的问题了?
    2019-09-01
    1
  • 老范
    但是 ZooKeeper 系统中所有服务器都存储相同的数据,也就是数据没有分片存储,因此不满足分区耐受性

    建议老师修改下上处:我们用 sharding 表示分片,用 partition 表示网络分区,partion tolerance 和 sharding 二者是不同概念,并没有如老师您所述的关系。 在 CAP 理论中,当网络分区发生时,ZK 选择了 Consistence,舍弃了 Availability。

    作者回复: 谢谢老范

    2019-06-10
    1
  • 刘海(steven)
    请问老师 对于文中这句话不太理解:“但是 ZooKeeper 系统中所有服务器都存储相同的数据,也就是数据没有分片存储,因此不满足分区耐受性”。zk没有分片但是都存储了相同数据,也就是有冗余备份,一定是要数据有分片才满足P吗
    2018-12-06
    1
  • 欧嘉权Felix
    不是很理解老师说的不符合p的原因 zk是cp系统吧
    2018-12-05
    1
  • Any Hello mino
    Zookeeper是cp吧?选举的时候不是都是不可用的
    2018-12-04
    1
  • 阿巍-豆夫
    paxos 怎么实现强一致性,有点晕了?
    2018-12-04
    1
  • 阿巍-豆夫
    zk是最终一致性吧,这个没说清楚啊。

    作者回复: 强一致,回复client的时候,zk服务器就已经一致了

    2018-12-04
    1
收起评论
36
返回
顶部