我已经设置了一个包含3个节点的kafka群集。
kafka01.example.com
kafka02.example.com
kafka03.example.com
Kafka执行复制,以便可以删除群集中的任何节点而不会丢失数据。
通常我会将所有数据发送到kafka01,但如果该节点发生故障,这将破坏整个集群。
处理群集时,行业最佳做法是什么?我正在评估使用循环负载平衡设置NGINX反向代理。然后我可以将所有数据生成器指向代理,它将在节点之间进行分配。
如果其中一个节点不可用,我需要确保没有数据丢失。
答案 0 :(得分:1)
通常,您的生产者负责通过使用循环模式中的分区函数或使用您选择的某些语义,将数据分发到启动并运行的所有(或选定的一组)节点。生产者发布到主题的分区,不同的节点是一个主题的不同分区的领导者。如果代理节点变得不可用,则此节点将脱离群集(在同步副本中),并且将选择该节点上的分区的新前导。通过元数据请求/响应,您的生产者将意识到这一事实并将消息推送到当前正在运行的其他节点。