上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

【Kafka面试】Kafka如何保证消息不丢失?

guduadmin11天前

使用Kafka时,在消息的收发过程中都有可能会出现消息丢失。

【Kafka面试】Kafka如何保证消息不丢失?,在这里插入图片描述,第1张

一、生产者发送消息到broker过程中丢失

1. 设置异步发送

【Kafka面试】Kafka如何保证消息不丢失?,在这里插入图片描述,第2张

  • 同步发送:会产生阻塞,一般使用异步发送。
  • 异步发送:实现回调方法,消息发送失败时记录日志,或者重新发送,最终确保消息能够成功发送。

    2. 设置消息重试机制

    【Kafka面试】Kafka如何保证消息不丢失?,在这里插入图片描述,第3张

    • 由于网络抖动问题,很快就会恢复正常,造成的消息丢失。

      二、消息在broker中存储过程中丢失

      Kafka中提供了一种发送确认机制,当生产者发送的消息到broker中,这些消息会存储在分区中。分区又分为leader和follower两种副本角色,其中,leader只有1个,follower可能有多个。分区收到消息后,首先保存到leader副本中,然后由leader副本把数据同步到follower副本中。

      【Kafka面试】Kafka如何保证消息不丢失?,在这里插入图片描述,第4张

      1. 发送确认机制acks

      【Kafka面试】Kafka如何保证消息不丢失?,在这里插入图片描述,第5张

      • acks=all:在所有的分区副本保存之后,才会发送确认,可以保证消息不丢失;这也是性能最低的一种。
      • 在实际的生产环境中,最低也要设置acks=1,起码能让leader副本保存数据。

        三、消费者从broker接收消息过程中丢失

        一个Kafka集群是由多个broker(Kafka实例)组成,在每一个broker中存在不同的topic,且

        1个topic可能存在多个分区(partition),分区也可能存在不同的broker中。

        【Kafka面试】Kafka如何保证消息不丢失?,在这里插入图片描述,第6张

        • 1个消费者组中可能存在多个消费者,它们都是消费同一个topic,每个消费者会去消费该topic下不同分区中消息。
        • 每个分区都是按照偏移量(offset)来存储数据的,每个分区都是有顺序的、不可变的消息队列,且可以持续的添加消息。
        • 分区中的消息都配备了一个序列号,称之为偏移量
        • 同一个topic是由不同的消费者组去消费数据的,消费者去消费数据时也会按照偏移量去消费。

          【Kafka面试】Kafka如何保证消息不丢失?,在这里插入图片描述,第7张

          • 默认情况下,每个消费者每个5秒自动提交一次消费偏移量
          • 如果消费者组出现重平衡情况,可能会重复消费或者消息丢失
          • 重平衡:消费者组中某个消费者宕机,其负责消费的分区,交给组内其他消费者,重新分配消费分区过程中可能会出现重复消费或者消息丢失。
          • 重复消费:某个消费者宕机时,当前消费偏移量是3,提交到Kafka的偏移量是1,导致重平衡后组内消费者重复消费某些数据。
          • 消息丢失:某个消费者宕机时,当前消费偏移量是1,提交到Kafka的偏移量是3,导致重平衡后组内消费者重复消费某些数据。

            1. 禁用自动提交偏移量,改为手动

            导致这个原因就是消费者自动提交偏移量,提交的偏移量不准确,造成重复消费或者消息丢失。可以设置手动提交偏移量,消费多少就提交多少偏移量,如果宕机就不提交偏移量,这样偏移量就准确了。

            【Kafka面试】Kafka如何保证消息不丢失?,在这里插入图片描述,第8张

            • 同步提交:会阻塞
            • 异步提交:如果消费失败,可能导致消费偏移量不准确
            • 同步+异步组合提交:最佳方式

              四、小结

              【Kafka面试】Kafka如何保证消息不丢失?,在这里插入图片描述,第9张

              五、模拟面试

              【Kafka面试】Kafka如何保证消息不丢失?,在这里插入图片描述,第10张

网友评论

搜索
最新文章
热门文章
热门标签