为什么像Solr或Kafka这样的分布式系统需要ZooKeeper,但像Cassandra这样的分布式系统却不需要?
答案 0 :(得分:4)
ZooKeeper为关键系统状态提供强一致性存储。许多系统,例如Storm和Kafka依靠ZooKeeper进行服务发现和领导者选举。由于ZooKeeper的ZAB协议属于CAP定理的CP侧,因此可以保证两个客户端不会看到同一系统的不同视图。因此,例如,Kafka不会错误地认为节点A和节点C都是同一分区的领导者。
这些系统只使用ZooKeeper,因为它是一种经过严格测试和验证的技术,用于存储此类关键元数据。 ZooKeeper充当协调的中心点。然而,Cassandra具有更分散的架构并实现其自己的一致性算法(Paxos),而不是依赖于像ZooKeeper这样的外部CP存储。根据Cassandra如何使用其八卦和共识协议,它可能只是让Kafka和Solr这样的系统做出一些让步。这使得Cassandra对外部系统(如ZooKeeper)没有依赖性,它通常可以容忍比HA系统更少的故障。
答案 1 :(得分:1)
需要Zookeeper的系统依赖于它进行集群协调。 Cassandra架构是不同的,因为它是一个点对点系统。因此,协调是“分配的”#34;在每个节点之间。
答案 2 :(得分:0)
在Kafka中,主题的消费者在ZooKeeper中注册自己,以便相互协调并平衡数据的消耗。 消费者还可以通过设置offsets.storage = zookeeper。
将其偏移量存储在ZooKeeper中Solr嵌入并使用Zookeeper作为集群配置和协调的存储库 - 将其视为包含所有Solr服务器信息的分布式文件系统。
除了这些zookeeper用于许多其他系统,如Hadoop Highavailabilty,HBase。