在重置时丢失Kafka数据

时间:2018-02-22 23:05:29

标签: apache-kafka

我正在尝试Kafka,我在重启时遇到丢失数据的问题。

设置:我有一个安装了Zookeeper的虚拟机,另外两个安装了Kafka的虚拟机。我正在使用replication-factor=2

主题进行测试

测试案例如下:

  1. 发送消息'Hello'
  2. 重新启动
  3. 发送消息'Hello again'。
  4. 确保Hello偏移0并且Hello再次偏移1。
  5. 这适用于:

    • Kafka1& Kafka2都熬夜(没有重新启动)。
    • Kafka1熬夜。 Kafka2在某些方面有所下降。
    • Kafka2熬夜。 Kafka1在某些方面有所下降。

    但是,如果我重新启动两个Kafka服务器,那么'Hello'消息将丢失,并且'Hello again'将变为偏移0.我希望它会在重新启动时保持不变。

    感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

请查看代理配置中的min.insync.replicas

此设置对于持久写入Kafka至关重要。它基本上表示为了将此写入视为成功,需要多少副本才能执行写操作。 ISR的默认值为1.因此,只有一个副本必须保持同步才能将写入视为成功。

另一方面,您的制作人配置也很重要。如果您使用acks=1编写消息,则只有当前的领导者才会确认写入。因此,请尝试使用类似acks=all的内容或acks=2。{/ p>