- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解 ZooKeeper,它是如何工作的以及它的作用。是否有任何应用程序可以与 ZooKeeper 相媲美?
如果您知道,那么您会如何向外行描述 ZooKeeper?
我已经尝试过 apache wiki、zookeeper sourceforge ......但我仍然无法与之相关。
我只是通读了 http://zookeeper.sourceforge.net/index.sf.shtml ,所以不是还有更多这样的服务吗?是否像复制服务器服务一样简单?
最佳答案
简而言之,ZooKeeper 可以帮助您构建分布式应用程序。
这个怎么运作
您可以将 ZooKeeper 描述为具有最终一致性的复制同步服务。它是健壮的,因为持久化数据分布在多个节点之间(这组节点称为“集合”)并且一个客户端连接到其中任何一个(即特定的“服务器”),如果一个节点出现故障则迁移;只要严格的大多数节点都在工作,ZooKeeper 节点的集合就处于事件状态。特别是,主节点是通过集成内部的共识动态选择的;如果 master 节点发生故障,master 的角色将迁移到另一个节点。
如何处理写入
master 是写入的权限:这样可以保证写入按顺序持久化,即写入为 线性 .每次客户端写入集成时,大多数节点都会保存信息:这些节点包括客户端的服务器,显然是主节点。这意味着每次写入都会使服务器与主服务器保持同步。但是,这也意味着您不能进行并发写入。
线性写入的保证是 ZooKeeper 在写入主导的工作负载中表现不佳的原因。尤其不能用于媒体等大数据的交换。只要您的通信涉及共享数据,ZooKeeper 都会帮助您。当数据可以并发写入时,ZooKeeper 实际上会造成阻碍,因为即使从编写者的角度来看并不是绝对必要的,它也强加了严格的操作顺序。它的理想用途是用于协调,即在客户端之间交换消息。
如何处理读取
这就是 ZooKeeper 的优势所在:读取是并发的,因为它们由客户端连接的特定服务器提供服务。然而,这也是最终一致性的原因:客户端的“ View ”可能已经过时,因为主节点以有限但未定义的延迟更新相应的服务器。
详细地
ZooKeeper 的复制数据库包含一个 znode 树,这些 znode 是大致代表文件系统节点的实体(将它们视为目录)。每个 znode 都可以通过一个字节数组来丰富,该数组存储数据。此外,每个 znode 下可能还有其他 znode,实际上形成了一个内部目录系统。
顺序节点
有趣的是,znode 的名称可以是连续的,这意味着客户端在创建 znode 时提供的名称只是一个前缀:全名也由集合选择的序列号给出。例如,这对于同步目的很有用:如果多个客户端想要获得一个资源的锁,他们可以每个人同时在一个位置上创建一个顺序 znode:获得最小数字的人有权获得锁。
临时节点
此外,znode 可能是短暂的:这意味着一旦创建它的客户端断开连接,它就会被销毁。这主要用于了解客户端何时失败,这在客户端本身具有应由新客户端承担的责任时可能是相关的。以锁为例,一旦拥有锁的客户端断开连接,其他客户端就可以检查他们是否有权获得锁。
watch
如果我们需要定期轮询 znodes 的状态,那么与客户端断开相关的示例可能会出现问题。幸运的是,ZooKeeper 提供了一个事件系统,可以在 znode 上设置监视。如果 znode 被特别更改或删除,或者在其下创建了新的子节点,则可以将这些监视设置为触发事件。这与 znode 的顺序和临时选项结合使用显然非常有用。
在哪里以及如何使用它
Zookeeper 使用的一个典型例子是分布式内存计算,其中一些数据在客户端节点之间共享,并且必须以非常小心的方式访问/更新以解决同步问题。
ZooKeeper 提供了构建同步原语的库,同时运行分布式服务器的能力避免了使用集中式(类似代理)消息存储库时出现的单点故障问题。
ZooKeeper 是轻功能的,这意味着领导者选举、锁、屏障等机制尚不存在,但可以写在 ZooKeeper 原语之上。
如果 C/Java API 对您的目的来说太笨拙,您应该依赖基于 ZooKeeper 构建的库,例如 cages尤其是 curator .
在哪里阅读更多
除了官方文档,还是不错的,建议看Hadoop: The Definitive Guide的第14章它有大约 35 页,主要解释 ZooKeeper 的作用,然后是配置服务的示例。
关于apache-zookeeper - 解释 Apache ZooKeeper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3662995/
我最近安装了一个带有 Exhibitor 的新 ZK 节点,它开始正常。当我执行 telnet localhost 2181 然后运行 stats 以查看版本时,即使我安装了 3.4.11,我仍然
每 the zookeeper docs , 可以创建一种以“ super ”用户身份访问 Zookeeper 集合的方法。这样做的方向在配置和连接方法方面都有些模糊。它确实巧妙地表明这只能通过 Ja
场景如下: Znode 创建:create/config 12345(例如创建于12/12/12) 更新此配置,设置/config 34567(例如在 2013 年 12 月 12 日修改) 一个月后
使用Zookeeper API,是否可以知道当前服务器是否是Zookeeper集群的leader? 文档提到领导者看到了所有追随者中最高的zxid。。是否有可能以某种方式检查? 最佳答案 您可以从不同
我正在学习 ZooKeeper 并研究备份存储在 ZooKeeper 中的数据的选项。 ZooKeeper 写入两个数据文件,快照和事务日志。人们经常提到快照是“模糊的”,需要重放事务日志以获取最新状
用例:一个池中有 100 个服务器;我想在每个服务器上启动一个 ZooKeeper 服务,服务器应用程序(ZooKeeper 客户端)将使用 ZooKeeper 集群(读/写)。那么就没有单点故障。
我正在运行 3 节点 zookeeper 集群来处理 Storm 和 kafka.Zookeeper 数据目录占用了我系统中的所有空间。我不知道如何清理它。因为,我不想完全删除数据,因为我会丢失进程的
我是 Zookeeper 的新手,试图了解它是否适合我的用例。 我有 1000 万个分层数据,我想将它们存储在 Zookeeper 中。 10M 键值对,键值对大小分别为 1KB。 因此,在没有复
在 here 有人说: "even if you read from a different follower every time, you'll never see version 3 of th
Zookeeper 临时节点是否写入磁盘? 我知道在 Zookeeper 确认写入客户端之前,正常的 Zookeeper 节点已写入磁盘。 但是,临时节点仅在客户端 session 期间持续,因此如果
在开发阶段使用zookeeper大约6个月后,虽然运行良好,但其数据目录的大小增长到 6 GIG !而且还在增加。下面列出了一些系统规范: zookeeper version: 3.4.6 numbe
我试图了解 Apache ZooKeeper 在裂脑情况下的内部工作原理。假设有一个由 5 个服务器组成的集群:A、B、C、D 和 E,其中 A 是领导者。现在假设子簇 {A, B} 与子簇 {C,
动物园管理员专家。 我问的问题对你来说可能很基础,但我是 ZK 的新手,我还没有掌握该工具,所以请原谅。考虑到这一点,这是我的问题。 假设我有一个由 5 个服务器组成的 ZK 集群,我有 3 个法定人
我正在尝试了解 Zookeeper 中的分层仲裁。文档 here 举了一个例子,但我仍然不确定我是否理解它。我的问题是,如果我有一个双节点 Zookeeper 集群(我知道不推荐这样做,但为了这个例子
我们使用的是2.3.0版本的curator-framework连接pom文件中的zookeeper。 org.apache.curator curator-fram
我们在开发机器上有一个独立的 zookeeper 设置。除了这台 testdev 机器之外,它适用于所有其他开发机器。 尝试通过 testdev 连接到 zookeeper 时,我们一遍又一遍地收到此
zookeeper 事务日志变得非常大(数千兆字节!)并且集群的每台机器中始终存在一个或最多两个事务日志文件,因为知道可能存在多个快照! .. 引入 autopurge.purgeInterval 和
本文整理了Java中org.apache.flink.shaded.zookeeper.org.apache.zookeeper.ZooKeeper.getSessionId()方法的一些代码示例,展
我需要一些帮助来使用 zookeeper-shell.sh 验证 znode(path) 是否存在于 zookeeper 中 示例:bin/zookeeper-shell.sh zk:9091 ls/
我需要使用 tcpdump 调试我的 kafka 消费者和 zookeeper 之间交换的数据。我浏览了 zookeeper 文档,但找不到任何关于 zookeeper 通信协议(protocol)的
我是一名优秀的程序员,十分优秀!