Kafka消息在主人身上损坏但副本看起来不错

Dhy*_*yan 5 apache-kafka kafka-consumer-api

卡夫卡版:0.9

我们有一个试图从Kafka读取的java应用程序.但我们看到kafka消息中的数据损坏

以下是Java应用程序的错误:

    org.apache.kafka.common.KafkaException: Error deserializing key/value for partition varnish_raw_logs-31 at offset 568565
Caused by: org.apache.kafka.common.record.InvalidRecordException: Record is corrupt (stored crc = 1835858402, computed crc = 4025136930)
Run Code Online (Sandbox Code Playgroud)

所以我决定看看哪个节点拥有分区31,并使用kafka dump log util查看数据的外观.从下面看,分区31由node-4拥有,node-2拥有其副本.

Topic: varnish_raw_logs Partition: 31   Leader: 4       Replicas: 4,2   Isr: 4,2
Run Code Online (Sandbox Code Playgroud)

现在,当我使用dump util查看来自节点4和节点2的日志时.我看到数据在副本节点(节点-2)中有效,但在主节点中已损坏.

左边是腐败大师,右边是副本

所以我的问题是:master(node-4)进入这种状态的根本原因是什么?虽然您可以争辩我们应该跳过特定于事件的错误.我不想错过这些消息,因为我在复制品中有一个好消息.