免责声明:对于etcd项目和ZooKeeper项目,我是非常新的。
我最近对分布式开源产品很感兴趣。我发现它们似乎需要配置(协调?)ZooKeeper for Presto DB、Hive和Etcd等系统用于kubernetes,我认为理解etcd和ZooKeeper的作用是理解分布式系统的第一步。
但现在我想迷路了..。我还不明白etcd和ZooKeeper的优点和独特之处是什么。他们为我寻找一个分布良好的密钥值存储或文件系统。这是我对产品的印象。我知道这些印象并不能反映产品的特点。但我不知道还有什么是我应该知道的。
ZooKeeper:根据ZooKeeper的概述页面,它保证了以下内容。
顺序一致性和原子性是大多数文件系统不支持的独特特性,但在其他文件系统中是常见的。
根据etcd的自述。它的重点是
其中大多数在亚马逊S3中似乎很常见(S3不支持如此快速的访问)。
我知道这些产品是非常好的,因为大多数分布式开源产品都依赖它们。但是,分布式开源产品选择它们的关键、独特的特性是什么?
发布于 2016-04-17 08:40:34
我想你把类似文件系统的界面和实际的文件系统搞混了。您提到的系统非常适合集群协调,特别是ZooKeeper。它们的目的不是像文件系统那样存储大量的数据。您应该认为它们更适合于协调文件系统。也就是说,可以想象一个文件系统将文件路径存储在一致的存储区中,比如ZooKeeper或etcd,而不是文件本身。它们公开类似文件系统的接口与存储文件的能力无关。实际上,这些系统的设计是为了存储少量可以保存在内存中的数据。通过使用像ZooKeeper这样的一致存储在分布式文件系统中存储文件信息,文件系统将确保客户端按顺序看到文件系统中的更改。
ZooKeeper实际上是一组原语,可以与分布式系统进行协调。与ZooKeeper协调分布式系统特别相关的是它的会话事件( which ),它允许客户端侦听集群状态的更改。分布式系统通常在ZooKeeper中使用手表来处理锁之类的事情,而ZooKeeper强大的一致性保证使得它非常适合该用例。
如果您想很好地了解像ZooKeeper和etcd这样的系统是用来做什么的,那么您应该查看Apache策展人食谱。原子还实现了类似类型的API,用于在协商一致算法的基础上协调分布式系统。所有这些工具都演示了基于共识的分布式系统的典型用例。
需要注意的是,这些类型的系统建立在协商一致的算法之上,并且通常将状态存储在内存中。它们适用于涉及少量数据但需要高度一致性的操作,这也是为什么它们经常用于分布式锁定、配置管理和组成员身份等操作。
https://stackoverflow.com/questions/36672059
复制相似问题