美文网首页
Kafka怎么保证消息不丢失?

Kafka怎么保证消息不丢失?

作者: jecyhw | 来源:发表于2024-06-18 10:29 被阅读0次

    哪些情况会发生消息丢失

    从生产端到消费端都有可能发生消息丢失的情况,也就是在Producer生产者、Broker服务端、Consumer消费者都会发生这个消息丢失

    怎么保证消息不丢失

    Producer生产者

    1. 生产者会有自己的应答确认配置acks:acks=0代表无需任何响应,只管发不管发送是否成功,最容易丢失数据,性能最好;acks=1(生产者默认配置)代表服务端leader收到消息无需等副本同步之后立即响应,如果leader挂了就会丢失数据;ack=1代表服务端leader收到消息并且ISR副本收到消息之后再响应,可以保证消息不丢失,但是性能最差。
    2. 生产者发送失败会有重试机制

    Broker服务端

    1. 消息持久化:Broker服务端收到消息之后会持久化到磁盘,消息会先写入page cache,然后定期刷盘,kafka不支持同步刷盘
    2. 副本复制机制:副本会从leader复制消息,当leader挂掉之后,会从副本中选出一个新的leader

    Consumer消费者

    Consumer消费者只可能是消费失败但是仍然提交了offset才会导致消息丢失。可以把消费者的自动提交关闭,手动进行提交。另外对程序进行异常捕获,发生异常可以重试消费或者人工兜底等手段避免消息丢失

    相关文章

      网友评论

          本文标题:Kafka怎么保证消息不丢失?

          本文链接:https://www.haomeiwen.com/subject/bdjfcjtx.html