为什么像Solr或Kafka这样的分布式系统需要ZooKeeper,而像Cassandra这样的分布式系统不需要呢?
发布于 2015-04-16 10:30:25
ZooKeeper为关键系统状态提供了高度一致的存储。许多系统,例如Storm和Kafka,都依赖ZooKeeper来进行服务发现和领导者选举。因为ZooKeeper的ZAB协议属于CAP定理的CP端,所以它可以保证两个客户端不会看到同一系统的不同视图。因此,例如,Kafka不会错误地认为节点A和节点C都是同一分区的领导者。
这些系统简单地使用ZooKeeper,因为它是一种经过充分测试和验证的技术,用于存储这种类型的关键元数据。ZooKeeper充当协调的中心点。然而,Cassandra具有更分散的体系结构,并实现了自己的共识算法(Paxos),而不是依赖于像ZooKeeper这样的外部CP存储。根据Cassandra如何使用其八卦和共识协议,它可能会简单地做出一些让步,而像Kafka和Solr这样的系统则不会。这允许Cassandra不依赖于像ZooKeeper这样的外部系统,这些系统通常可以容忍比HA系统更少的故障。
发布于 2015-04-16 14:37:16
需要Zookeeper的系统依赖于它来进行集群协调。Cassandra架构是不同的,因为它是点对点系统。因此,协调被“分布”在每个节点之间。
发布于 2015-04-16 09:02:56
Kafka中的主题的消费者在ZooKeeper中注册自己,以便相互协调,平衡数据消耗。消费者还可以通过设置offsets.storage=zookeeper将其偏移量存储在ZooKeeper中。
Zookeeper嵌入并使用Zookeeper作为集群配置和协调的存储库-将其视为包含所有服务器信息的分布式文件系统。
除此之外,zookeeper还用于许多其他系统,如Hadoop Highavailabilty,HBase。
https://stackoverflow.com/questions/29660295
复制相似问题