我设置了一个Kafka应用程序,它有2个代理并创建一个有3个分区的主题,复制因子= 1。 然后我使用生产者进程发送数据。当生产者运行时,我杀了3个经纪人中的一个,生产者进程发出以下消息:
kafka.common.FailedToSendMessageException:尝试3次后无法发送消息。
如果允许数据丢失,我该怎么做才能使生产者进程自动恢复。 我认为最好的解决方案是将已删除代理中的分区移动到另外2个代理。 我该怎么办? 如果不是,它只是意味着面对leader = -1时无法恢复吗?
请注意: 在我的情况下,重复因子设置为1以降低带宽利用率。
答案 0 :(得分:4)
http://kafka.apache.org/documentation.html
对于复制因子为N的主题,我们最多可以容忍N-1 服务器故障,不会丢失任何提交给日志的消息。
因此,如果您想要自动故障转移 - 增加复制因子。