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

这篇具有很好参考价值的文章主要介绍了【Kafka面试】Kafka如何保证消息不丢失?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

kafka丢消息可以避免吗,Kafka,kafka

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

1. 设置异步发送

kafka丢消息可以避免吗,Kafka,kafka

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

2. 设置消息重试机制

kafka丢消息可以避免吗,Kafka,kafka

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

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

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

kafka丢消息可以避免吗,Kafka,kafka

1. 发送确认机制acks

kafka丢消息可以避免吗,Kafka,kafka

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

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

一个Kafka集群是由多个broker(Kafka实例)组成,在每一个broker中存在不同的topic,且
1个topic可能存在多个分区(partition),分区也可能存在不同的broker中。

kafka丢消息可以避免吗,Kafka,kafka

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

kafka丢消息可以避免吗,Kafka,kafka

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

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

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

kafka丢消息可以避免吗,Kafka,kafka

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

四、小结

kafka丢消息可以避免吗,Kafka,kafka

五、模拟面试

kafka丢消息可以避免吗,Kafka,kafka文章来源地址https://www.toymoban.com/news/detail-769600.html

到了这里,关于【Kafka面试】Kafka如何保证消息不丢失?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文彻底搞懂Kafka如何保证消息不丢失

    Producer:生产者,发送消息的一方。生产者负责创建消息,然后将其发送到 Kafka。 Consumer:消费者,接受消息的一方。消费者连接到 Kafka 上并接收消息,进而进行相应的业务逻辑处理。 Consumer Group:将多个消费者组成一个消费者组,一个消费者组可以包含一个或多个消费者。

    2024年04月22日
    浏览(43)
  • RocketMQ和Kafka的区别,以及如何保证消息不丢失和重复消费

    性能(单台) 语言 多语言支持客户端 优缺点 RocketMQ 十万级 java java 模型简单、接口易用,在阿里有大规模应用 文档少,支持的语言少 Kafka 百万级 服务端scala,客户端java 主流语言均支持 天生分布式、性能最好,常用于大数据领域 运维难度大,对zookeeper强依赖,多副本机制

    2024年01月16日
    浏览(48)
  • 【kafka面试题2】如何保证kafka消息的顺序性

    如何保证kafka消息的顺序性呢,其实整体的策略就是:我们 让需要有序的消息发送到同一个分区Partition。 为什么说让有序的消息发送到同一个分区Partition就行呢,,下面我们来详细分析一下子。 首先 ,我们知道kafka消息的收发是基于Topic(主题),消息通过Topic进行分类。单

    2024年02月13日
    浏览(43)
  • Kafka怎么保证消息发送不丢失

    Kafka发送消息是异步发送的,所以我们不知道消息是否发送成功,所以会可能造成消息丢失。而且Kafka架构是由生产者-服务器端-消费者三种组成部分构成的。要保证消息不丢失,那么主要有三种解决方法: 生产者(producer)保持同步发送消息 服务器端(broker)持久化设置为同

    2024年02月04日
    浏览(54)
  • 使用 Kafka 保证消息不丢失的策略及原理解析

    ✨✨祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心!✨✨  🎈🎈作者主页: 喔的嘛呀🎈🎈 目录 一、引言 二. 持久化存储 2.1持久化存储原理: 2.2使用示例: 1. 安装 Kafka: 2. 生产者代码: 3. 消费者代码: 三. 消息确认机制 3.1消息确认机制原理: 3.2使用示

    2024年04月09日
    浏览(51)
  • 大数据面试题:Kafka怎么保证数据不丢失,不重复?

    面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答:Kafka如何保证生产者不丢失数据,消费者不丢失数据? 参考答案: 存在数据丢失的几种情况 使用同步模式的时候,有3种状态保证消息被安全生产,在配置为1(只保证写入leader成功)的话,

    2024年02月15日
    浏览(41)
  • kafka如何保证数据不丢失?

    生产者生产数据有两种模式:一种是同步模式,一种是异步模式。 同步模式:生产者生产一条数据,就保存一条数据,保存成功后,再生产下一条数据,能够保证数据不丢失,但是效率太低了。 异步模式(采用ack机制): 在producer端开启一块buff缓冲,用来缓存数据,缓存一批

    2023年04月27日
    浏览(36)
  • kafka如何保证数据不丢失

    1.1 生产者如何保证数据不丢失 ACK机制: 当生产者将数据生产到Broker后, Broker应该给予一个ack确认响应, 在kafka中, 主要提供了三种ack的方案:     ack=0 : 生产者只管发送数据, 不关心不接收Broker给予的响应     ack=1 : 生产者将数据发送到Broker端, 需要等待Broker端对应的Topic上对应

    2024年02月06日
    浏览(40)
  • kafka消息丢失面试题,RocketMQ消息丢失场景及解决办法

    互联网行业更新换代非常快,行业常态便是不断学习,因此这些主流技术你一个都不能落下! ①并发编程 Java并发编程是整个Java开发体系中最难以理解,但也是最重要的知识点之一,因此学习起来比较费劲,从而导致很多人望而却步,但是无论是职场面试还是高并发高流量的

    2024年03月17日
    浏览(45)
  • kafka是如何保证数据不丢失的

    Kafka通过一系列机制来确保数据不丢失,这些机制涵盖了生产者、Broker和消费者等关键环节。以下是Kafka保证数据不丢失的主要方式: 生产者生产数据不丢失: 同步方式:生产者发送数据给Kafka后,会等待Kafka的确认。如果在一定时间内(如10秒)没有收到Broker的ack响应,生产

    2024年04月25日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包