【问题标题】:What's the difference between ZooKeeper and any distributed Key-Value stores?ZooKeeper 和任何分布式键值存储有什么区别?
【发布时间】:2015-07-16 17:34:04
【问题描述】:

我是 zookeeper 和分布式系统的新手,并且正在自己学习。

据我目前的理解,ZooKeeper 似乎只是一个键值存储,其键是路径,值是字符串,这与 Redis 没有什么不同。 (显然我们也可以使用斜线分隔的路径作为 redis 中的键。)

所以我的问题是,ZooKeeper 和其他分布式 KV 存储的本质区别是什么?为什么 ZooKeeper 使用所谓的“路径”作为键,而不是简单的字符串?

【问题讨论】:

  • 好问题!

标签: distributed apache-zookeeper key-value-store distributed-system


【解决方案1】:

您将 ZooKeeper 的高级数据模型与其他键值存储进行比较,但这并不是它的独特之处。从分布式系统的角度来看,ZooKeeper 与许多其他键值存储(尤其是 Redis)不同,因为它具有强一致性,并且可以在大多数集群连接时容忍故障。此外,虽然数据保存在内存中,但它同步复制到大部分集群并由磁盘支持,因此一旦写入成功,它保证写入不会丢失(除非导弹袭击) .这使得 ZooKeeper 对于存储少量的关键任务状态(如配置)非常有用。

相反,Redis 不是分布式系统,并且不提供 ZooKeeper 提供的相同类型的保证。许多其他分布式键值存储是“最终一致的”。换句话说,不能保证一旦写入一个值,分布式系统中的所有其他进程都可以看到该值。

最后,除了用于存储状态的类似文件系统的接口外,ZooKeeper 还提供了相当低级的功能,可以解决更复杂的问题。有关这方面的示例,请查看 Apache Curator。 Curator 使用 ZooKeeper 的临时节点(当创建它们的客户端断开连接时会消失的节点)来构建锁和领导者选举之类的东西,这对于协调分布式系统非常有用。因此,从这个角度来看,ZooKeeper 的数据模型和相关功能可以作为可以构建更高级别分布式协调工具的原语。

【讨论】:

    【解决方案2】:

    您可以将 zookeeper 与其他分布式键值存储进行比较,例如 etcd 和 consul。这些工具也提供了与 apache zookeeper 相同的好处。 Zookeeper 的主要优点是它负责避免分布式应用程序中的死锁和竞争条件。 Zookeeper 不仅是一个键值存储,它还可以用于服务发现和集中式服务,用于维护分布式应用程序中的配置信息。

    zookeeper 存储其键值对的方式与其他键值存储有点不同,Zookeeper 使用 z-node 作为键。它看起来像一个 unix 文件系统树,它以 slash(/) 开头。它可能是持久的或短暂的。这个键值是通过 RAM 提供的。每个节点都有自己的 ACL。 Zookeeper 存储事务日志和快照,以便在发生灾难时恢复节点,它被设计为一个容错的分布式 k-v 存储,因此它应该部署为集群。一组zookeeper服务器称为zookeeper ensemble。这里有一个 zookeeper 领导服务器,其余的是跟随者。这种leader和follower关系来源于集群中zk服务器之间的leader选举。

    Zookeeper 主要用于 Hadoop Namenode 和 YARN 资源管理器的 HA 实现,这里负责提升这些守护进程的活动和备用状态,Kafka 旨在使用 Zookeeper 来存储主题和偏移信息。

    Zookeeper 也可以用作 kubernetes 控制平面中 etcd 的替代品。

    【讨论】:

    • 1# 你说:“Zookeeper 不仅是一个键值存储,它还可以用于服务发现和集中服务,用于维护分布式应用程序中的配置信息。” i> 但这与etcd 有何不同?我的理解是etcd 也可以做到这一点。
    • #2 你也说:“Zookeeper 存储事务日志和快照,用于在发生灾难时恢复节点,它被设计为一个容错分布式 k-v 存储,所以它应该是部署为集群。”etcd 不是也可以容错的吗? etcd 不也将数据(日志)存储到磁盘吗?
    猜你喜欢
    • 2015-12-12
    • 2023-03-25
    • 2018-03-10
    • 2016-04-07
    • 2014-09-18
    • 2018-04-20
    • 2020-12-21
    • 2015-12-10
    相关资源
    最近更新 更多