【发布时间】:2019-02-12 12:35:53
【问题描述】:
Kafka 客户端代码直接引用代理 ip 和端口,如果它关闭,zookeeper 将直接指向另一个代理。 zookeper总是在幕后
【问题讨论】:
标签: apache-kafka apache-zookeeper
Kafka 客户端代码直接引用代理 ip 和端口,如果它关闭,zookeeper 将直接指向另一个代理。 zookeper总是在幕后
【问题讨论】:
标签: apache-kafka apache-zookeeper
如果您在客户端代码中仅提供一个代理地址,并且它出现故障,再加上您的客户端重新启动,那么您的客户端也将出现故障。此处不会使用 Zookeeper,因为无法访问代理。
如果您在客户端中提供多个代理地址,则它更具弹性,因为 Kafka 控制器进程会定期从 Zookeeper 获取集群中所有活动代理的列表,并负责将该信息通过以下方式发送回客户端他们被分配的分区的领导者。这里间接使用了 Zookeeper,但不与任何外部客户端通信
【讨论】:
如果我以正确的方式回答问题,答案是否定的。 Kafka 客户端只需要连接到 Kafka 代理,根本不涉及 Zookeeper。客户端需要在代理上写入/读取领导分区。 如果代理列表中设置的 Kafka 代理不可用,则客户端可以连接并且无法开始发送/接收消息。 只有在旧版本 0.8.0 中,Zookeeper 才涉及消费者,从而节省了 Zookeeper 上的偏移量。从 0.9.0 开始,消费者将偏移量保存在 Kafka 主题中,因此不再需要 Zookeeper。
【讨论】: