我正在尝试Kafka,我在重启时遇到丢失数据的问题。
设置:我有一个安装了Zookeeper的虚拟机,另外两个安装了Kafka的虚拟机。我正在使用replication-factor=2
。
测试案例如下:
这适用于:
但是,如果我重新启动两个Kafka服务器,那么'Hello'消息将丢失,并且'Hello again'将变为偏移0.我希望它会在重新启动时保持不变。
感谢任何帮助。
答案 0 :(得分:1)
请查看代理配置中的min.insync.replicas
。
此设置对于持久写入Kafka至关重要。它基本上表示为了将此写入视为成功,需要多少副本才能执行写操作。 ISR的默认值为1.因此,只有一个副本必须保持同步才能将写入视为成功。
另一方面,您的制作人配置也很重要。如果您使用acks=1
编写消息,则只有当前的领导者才会确认写入。因此,请尝试使用类似acks=all
的内容或acks=2
。{/ p>