Apache kafka 重置时丢失卡夫卡数据

Apache kafka 重置时丢失卡夫卡数据,apache-kafka,Apache Kafka,我正在试用卡夫卡,但在重新启动时数据丢失了 设置:我有一个安装了Zookeeper的VM,另外两个安装了Kafka的VM。我正在使用一个主题进行测试,该主题的复制因子为2 测试用例如下所示: 发送消息“你好” 重新启动 再次发送消息“你好” 确保Hello为偏移量0,Hello再次为偏移量1 这在以下情况下有效: 卡夫卡1和卡夫卡2都保持不动(无重新启动) 卡夫卡1不睡觉。卡夫卡2在某种程度上是失败的 卡夫卡2不睡觉。卡夫卡1在某种程度上是失败的 但是,如果我重新启动两台Kafka服务器,则

我正在试用卡夫卡,但在重新启动时数据丢失了

设置:我有一个安装了Zookeeper的VM,另外两个安装了Kafka的VM。我正在使用一个主题进行测试,该主题的复制因子为2

测试用例如下所示:

  • 发送消息“你好”
  • 重新启动
  • 再次发送消息“你好”
  • 确保Hello为偏移量0,Hello再次为偏移量1
  • 这在以下情况下有效:

    • 卡夫卡1和卡夫卡2都保持不动(无重新启动)
    • 卡夫卡1不睡觉。卡夫卡2在某种程度上是失败的
    • 卡夫卡2不睡觉。卡夫卡1在某种程度上是失败的
    但是,如果我重新启动两台Kafka服务器,则“Hello”消息将丢失,“Hello”再次变为偏移量0。我希望它在重启过程中保持不变


    非常感谢您的帮助。

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

    这种设置对于卡夫卡的持久写作至关重要。它基本上是说,如果认为写入成功,需要多少副本来确认写入。ISR的默认值为1。因此,只有一个副本必须保持同步以便考虑写入成功。


    另一方面,生产者配置也很重要。如果您使用
    acks=1
    写入消息,则只有当前领导才会确认写入。因此,请尝试使用类似于
    acks=all
    或在您的情况下
    acks=2

    您的日志是否存储在/tmp中?它们是。更改该设置修复了该问题。谢谢。哦,是的,看起来标题中的重新启动vs重置导致谷歌遗漏了它。这并没有直接解决问题,但还是有帮助的。非常感谢。