背景
一切的恐惧,且来源于火力不足
假如有人问题如下问题,你能回答上来吗?如果你能回答上来,那么你可以跳过本文。如何回答不了,本文将给你答案。
-
- 按顺序启动Zookeeper集群,Leader会是哪个结点?
-
- ZooKeeper的应用场景有哪些?
-
- ZooKeeper如何保证数据的一致性?
-
- ZooKeeper的节点有哪些类型?
-
- ZooKeeper的数据模型是什么?
架构图

集群模式详解
Zookeeper概述
客户端连接到单个ZooKeeper服务器。客户端维护一个TCP连接,通过该连接发送请求、获取响应、获取监视事件和发送检测信号。如果与服务器的TCP连接中断,客户端将连接到其他服务器。
订购了ZooKeeper。ZooKeeper在每次更新时都会使用一个数字来标记,该数字反映了所有ZooKeeper事务的顺序。后续操作可以使用该顺序来实现更高级别的抽象,例如同步基元。
ZooKeeper速度很快。在“读取主导”工作负载中,它的速度尤其快。ZooKeeper应用程序在数千台机器上运行,在读取比写入更常见的情况下,它的性能最佳,比率约为10:1。
数据模型和分层命名空间
ZooKeeper 提供的命名空间与标准文件系统的命名空间非常相似。名称是一系列由斜杠 (/) 分隔的路径元素。ZooKeeper 命名空间中的每个节点都由路径标识。

永久节点和临时节点
Znodes 维护一个统计信息结构,其中包括数据更改、ACL 更改和时间戳的版本号,以允许缓存验证和协调更新。每当 znode 的数据发生变化时,版本号就会增加。例如,每当客户端检索数据时,它也会接收数据的版本。
存储在命名空间中每个 znode 的数据都是以原子方式读取和写入的。读取获取与 znode 关联的所有数据字节,写入替换所有数据。每个节点都有一个访问控制列表 (ACL),用于限制谁可以执行哪些操作。
ZooKeeper 也有临时节点的概念。只要创建 znode 的会话处于活动状态,这些 znode 就存在。会话结束时,znode 将被删除。
条件更新和监视
ZooKeeper 支持watches的概念。客户端可以在 znode 上设置监视。当 znode 发生变化时,将触发并删除监视。当监视被触发时,客户端会收到一个数据包,指出 znode 已更改。如果客户端与其中一个 ZooKeeper 服务器之间的连接断开,客户端将收到本地通知。
保证
ZooKeeper非常快速且非常简单。但是,由于它的目标是成为构建更复杂服务(例如同步)的基础,因此它提供了一组保证。这些是:
- 顺序一致性-来自客户端的更新将按发送顺序应用。
- 原子性-更新成功或失败。没有部分结果。
- 单个系统映像-无论客户端连接到哪个服务器,它都将看到相同的服务视图。也就是说,即使客户*

最低0.47元/天 解锁文章
2042

被折叠的 条评论
为什么被折叠?



