【问题标题】:How do other messaging systems deal with the problems that Zookeeper in Kafka solves?其他消息系统如何处理 Kafka 中的 Zookeeper 解决的问题?
【发布时间】:2019-07-28 06:45:22
【问题描述】:
Zookeeper 是一个协调服务,处理诸如 -
- 如果集群中的一个节点出现故障,zookeeper 将寻找另一个节点
- 处理对共享资源的序列化访问
- 竞争条件、死锁。
其他流行的消息传递系统没有 zookeeper。他们当然应该面临 Zookeeper 声称要解决的问题。
- Q1) 他们是否有其他方法来处理这些问题?扔
对这些方式有所了解。
- Q2) 他们是否找到了共存的方式
有这些问题吗?
【问题讨论】:
标签:
apache-kafka
apache-zookeeper
distributed-computing
distributed-system
consensus
【解决方案1】:
Zookeeper 用于在分布式系统中实现资源一致性。
Apache Kafka 依赖 Zookeeper 来实现多种用途:
- 以可靠的方式持久保存集群元数据和主题配置。
- 选举代理控制器
- 为主题/分区选举领导者
- 发现失败的代理
- 等
在底层,Zookeeper 使用自己的协议(ZAB,Zookeeper Atomic Broodcast)来支持数据复制、选举、故障恢复。但是它们存在其他协议,用于在分布式系统中达成共识,例如 Paxos 和Raft。
例如,某些系统使用 Etcd 作为 Zookeepers 的替代品,它实现了 Raft 协议以提供一致性。
实际上,大多数 Apache Kafka 替代品都使用 Zookeeper:
最后,提供名为Quorum Queues的分布式队列机制的RabbitMQ实际上依赖于Raft协议的变体。