ZooKeeper和Etcd有多好?

k-k*_*awa 2 distributed-computing etcd apache-zookeeper

免责声明:我是etcd项目和ZooKeeper项目的新手.

我最近对分布式开源产品感兴趣.我发现它们似乎需要配置(协调?)系统,例如ZooKeeper for Presto DB,Hive和Etcd for kubernetes,我认为了解etcd和ZooKeeper的角色是了解分布式系统的第一步.

但现在,我觉得迷路了...我还不明白etcd和ZooKeeper的优点和独特之处是什么.他们为我寻找分布均匀的键值存储或文件系统.这是我对产品的印象.我知道这些印象并不反映产品的特征.但我不知道我应该知道的剩余功能是什么.

ZooKeeper:根据ZooKeeper的概述页面,它保证了以下内容.

  • 顺序一致性 - 客户端的更新将按发送顺序应用.
  • 原子性 - 更新成功或失败.没有部分结果.
  • 单系统映像 - 无论服务器连接到哪个服务器,客户端都将看到相同的服务视图.
  • 可靠性 - 一旦应用了更新,它将从那时起持续到客户端覆盖更新.
  • 及时性 - 系统的客户视图保证在特定时间范围内是最新的.

顺序一致性和原子性是大多数文件系统不支持的独特功能,但其他文件系统中常见.

Etcd:根据etcd的自述文件.它专注于

  • 简单:可卷曲的面向用户的API(HTTP + JSON)
  • 安全:可选的SSL客户端证书认证
  • 快速:每个实例基准1000次写入/秒
  • 可靠:使用Raft正确分布

其中大多数似乎与Amazon S3相同(S3不支持这种快速访问.)

我知道这些产品非常好,因为大多数分布式开源产品都依赖于它们.但分布式开源产品选择它们的关键,独特功能是什么?

kuu*_*ujo 6

我认为你将文件系统类似的界面与实际的文件系统混淆了.您提到的系统非常适合集群协调,特别是ZooKeeper.他们不是设计用于存储大量数据,如文件系统.您应该将它们视为更适合协调文件系统.也就是说,人们可以想象一个文件系统存储像ZooKeeper或etcd这样的一致存储中的文件的路径,而不是文件本身.他们公开类似文件系统的界面与任何存储文件的能力无关.实际上,这些系统旨在存储可以保存在存储器中的少量数据.通过使用像ZooKeeper这样的一致存储来将文件信息存储在分布式文件系统中,文件系统将确保客户端按顺序查看文件系统中的更改.

ZooKeeper实际上是一组原语,可以协调分布式系统.与使用ZooKeeper协调分布式系统特别相关的是它的会话事件(监视),它允许客户端监听集群状态的变化.分布式系统通常使用ZooKeeper中的监视来锁定事物,ZooKeeper的强大一致性保证使其非常适合该用例.

如果您想了解像ZooKeeper和etcd这样的系统,您应该查看Apache Curator配方.Atomix还实现了类似的API,用于在一致性算法之上协调分布式系统.所有这些工具都证明了基于共识的分布式系统的典型用例.

值得注意的是,这些类型的系统建立在一致性算法之上,通常将状态存储在内存中.它们适用于涉及少量数据但需要高度一致性的操作,这就是为什么它们经常用于分布式锁定,配置管理和组成员资格等的原因.