【问题标题】:Kafka-streams corrupt message-handling semanticsKafka-streams 破坏了消息处理语义
【发布时间】:2018-09-05 23:14:30
【问题描述】:

我注意到 Kafka 记录有一个 CRC 字段。如果日志文件中的记录损坏(例如,消息中间的一个位被翻转),我希望在以下情况下在流应用程序中看到什么:

  • 主题被复制
  • 主题未复制

由于我们使用的是 Avro,我可以想象会发生以下情况之一:

  • 底层基础架构检测到 CRC 错误并从另一个代理获取它
  • DeserializationExceptionHandler 启动
  • 根据策略发生其他一些错误,拓扑崩溃或消息被跳过

【问题讨论】:

    标签: apache-kafka apache-kafka-streams corruption


    【解决方案1】:

    对于 CRC 错误,当您的 Streams 应用程序尝试对记录进行反序列化时,应该会引发异常。因此,DeserializationExceptionHandler 启动了。

    在 Kafka 中,所有读/写都由分区领导者处理,追随者代理仅在后台被动复制数据,不提供来自客户端的任何读/写。

    【讨论】:

    • 谢谢。你知道 Avro 反序列化器是否在反序列化之前主动检查 CRC 吗?否则,明天将围绕代码进行挖掘:)
    • AFAIK,在应用反序列化器之前,消费者会检查 CRC。所以检查 CRC 不是反序列化器的责任——消费者会自动检查。
    猜你喜欢
    • 2017-07-28
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 2017-09-30
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    相关资源
    最近更新 更多