Apache zookeeper 动物园管理员和Etcd有多好?

Apache zookeeper 动物园管理员和Etcd有多好?,apache-zookeeper,distributed-computing,etcd,Apache Zookeeper,Distributed Computing,Etcd,免责声明:我是etcd项目和ZooKeeper项目的新手 我最近开始对分布式开源产品感兴趣。 我发现它们似乎需要配置(协调?)系统,如Presto DB的ZooKeeper、kubernetes的Hive和Etcd,我认为理解Etcd和ZooKeeper的作用是理解分布式系统的第一步 但是现在,我觉得自己好像迷路了。。。我还不能理解etcd和ZooKeeper的优点和独特之处。他们为我寻找一个分布良好的键值存储或文件系统。 这是我对这些产品的印象。我知道这些印象不能反映产品的特点。但我不知道我应

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

我最近开始对分布式开源产品感兴趣。 我发现它们似乎需要配置(协调?)系统,如Presto DB的ZooKeeper、kubernetes的Hive和Etcd,我认为理解Etcd和ZooKeeper的作用是理解分布式系统的第一步

但是现在,我觉得自己好像迷路了。。。我还不能理解etcd和ZooKeeper的优点和独特之处。他们为我寻找一个分布良好的键值存储或文件系统。 这是我对这些产品的印象。我知道这些印象不能反映产品的特点。但我不知道我应该知道的剩余功能是什么

ZooKeeper:根据ZooKeeper的概述页面,它保证了以下几点

  • 顺序一致性-客户端的更新将按发送顺序应用
  • 原子性-更新成功或失败。没有部分结果
  • 单系统映像-客户端将看到相同的服务视图,而不管它连接到哪个服务器
  • 可靠性-一旦应用了更新,它将从那时起持续,直到客户端覆盖更新
  • 及时性-保证系统的客户端视图在一定时间范围内是最新的
顺序一致性和原子性是大多数文件系统不支持的独特特性,但其他特性在其他文件系统中很常见

Etcd:根据Etcd自述。它的重点是

  • 简单:可卷曲的面向用户的API(HTTP+JSON)
  • 安全:可选SSL客户端证书身份验证
  • Fast:每个实例1000次写入/秒的基准测试
  • 可靠:使用筏板适当分布
它们中的大多数在AmazonS3中似乎很常见(S3不支持如此快速的访问)


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

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

ZooKeeper实际上是一组可以协调分布式系统的原语。与ZooKeeper协调分布式系统特别相关的是它的会话事件(监视),它允许客户端侦听集群状态的更改。分布式系统通常在ZooKeeper中使用手表进行锁之类的操作,ZooKeeper强大的一致性保证使其完全适合该用例

如果你想知道像ZooKeeper和etcd这样的系统是用来做什么的,你应该去看看。还实现了类似类型的API,用于在一致算法的基础上协调分布式系统。所有这些工具都演示了基于共识的分布式系统的典型用例


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

我建议您也将其发布到邮件列表中(我假设有)。