Kafka客户端代码直接引用代理ip和端口,如果它关闭,zookeeper将直接定向到另一个代理。是风行者总是在幕后吗
答案 0 :(得分:1)
如果您在客户端代码中仅提供了一个代理地址,并且该地址已关闭,并且客户端重新启动,则您的客户端也将关闭。在这里将不使用Zookeeper,因为将无法访问代理。
如果您在客户端中提供多个代理地址,则它更具弹性,因为Kafka Controller进程会定期从Zookeeper提取群集中所有活动代理的列表,并负责通过该信息将信息发送回客户端。他们被分配的分区的领导者。 Zookeeper在这里间接使用,但不与任何外部客户端通信
答案 1 :(得分:0)
如果我以正确的方式得到问题,答案是否定的。 Kafka客户只需要与Kafka经纪人建立连接,而Zookeeper根本不参与。客户需要在代理上写入/读取领导者分区。 如果在代理列表中设置的Kafka代理不可用,则客户端可以连接并且无法开始发送/接收消息。 仅在旧版本0.8.0中,Zookeeper才为消费者所用,从而节省了Zookeeper的补偿。从0.9.0开始,使用者在Kafka主题中保存了偏移量,因此不再需要Zookeeper。