免责声明:我对etcd项目和ZooKeeper项目都还很陌生。
我最近开始对分布式开源产品感兴趣。我发现它们似乎需要像Presto DB、Hive的ZooKeeper以及Kubernetes的etcd这样的配置(协调?)系统。我认为了解etcd和ZooKeeper的作用是理解分布式系统的第一步。
但现在,我感到有些迷失……我还无法理解etcd和ZooKeeper的优点和独特之处。它们对我来说只是良好分布式的键值存储或文件系统。以下是我对这些产品的印象。我知道这些印象并不反映产品的特性,但我不知道我应该了解哪些其余特性。
ZooKeeper:根据ZooKeeper概述页面,它保证以下事项:
- 顺序一致性 - 客户端的更新将按照发送的顺序应用。 - 原子性 - 更新要么成功要么失败。没有部分结果。 - 单一系统镜像 - 客户端将看到与其连接的服务器相同的服务视图。 - 可靠性 - 一旦应用了更新,它将从那时起持续存在,直到客户端覆盖更新。 - 实时性 - 客户端对系统的视图保证在某个时间范围内是最新的。
顺序一致性和原子性是独特的特性,大多数文件系统不支持,但其他特性在其他文件系统中很常见。
Etcd:根据etcd的README,它专注于以下内容:
- 简单:curl'able用户界面API(HTTP+JSON) - 安全:可选的SSL客户端证书身份验证 - 快速:每个实例测试了1000次写入/秒 - 可靠:使用Raft正确分布
其中大多数似乎与Amazon S3相同(S3不支持这样快速的访问)。
我知道这些产品都非常优秀,因为大多数分布式开源产品依赖它们。但是,分布式开源产品选择它们的关键、独特特点是什么?
我最近开始对分布式开源产品感兴趣。我发现它们似乎需要像Presto DB、Hive的ZooKeeper以及Kubernetes的etcd这样的配置(协调?)系统。我认为了解etcd和ZooKeeper的作用是理解分布式系统的第一步。
但现在,我感到有些迷失……我还无法理解etcd和ZooKeeper的优点和独特之处。它们对我来说只是良好分布式的键值存储或文件系统。以下是我对这些产品的印象。我知道这些印象并不反映产品的特性,但我不知道我应该了解哪些其余特性。
ZooKeeper:根据ZooKeeper概述页面,它保证以下事项:
- 顺序一致性 - 客户端的更新将按照发送的顺序应用。 - 原子性 - 更新要么成功要么失败。没有部分结果。 - 单一系统镜像 - 客户端将看到与其连接的服务器相同的服务视图。 - 可靠性 - 一旦应用了更新,它将从那时起持续存在,直到客户端覆盖更新。 - 实时性 - 客户端对系统的视图保证在某个时间范围内是最新的。
顺序一致性和原子性是独特的特性,大多数文件系统不支持,但其他特性在其他文件系统中很常见。
Etcd:根据etcd的README,它专注于以下内容:
- 简单:curl'able用户界面API(HTTP+JSON) - 安全:可选的SSL客户端证书身份验证 - 快速:每个实例测试了1000次写入/秒 - 可靠:使用Raft正确分布
其中大多数似乎与Amazon S3相同(S3不支持这样快速的访问)。
我知道这些产品都非常优秀,因为大多数分布式开源产品依赖它们。但是,分布式开源产品选择它们的关键、独特特点是什么?