一线大厂面试真题-Kafka如何保证消息不丢失

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

目录

问题解答

面试点评


问题解答

(如图)kafka一个用来实现异步消息通信的中间件,它的整个架构由Producer、ConsumerBroker组成。

一线大厂面试真题-Kafka如何保证消息不丢失,分布式消息队列面试题,面试,kafka,职场和发展

所以,对于kafka何保证消息不丢失这个问题,可以从三个方面来考虑和实现

首先是Producer端,需要确保消息能够到达Broker并实现消息存储,在这个层面,有可能出现网络问题,导致消息发送失败,所以,针对Producer端,可以通过2种方来避免消息丢失

1.   Producer默认是异步发送消息,这种情况下要确保消息发送成功,有两个方法

a.把异步发送改成同步发送,这样producer就能实时知道消息发送的结果。

b.添加异步回调函数来监听消息发送的结果,如果发送失败,可以在回调中重试。

2.   Producer本身提供了一个重试参数retries,如果因为网络问题或者Broker故障导致发送失败,Producer会自动重试。

然后是Broker端,Broker需要确保Producer发送过来的息不会丢失,也就是只需要把消息持久化到磁盘就可以了。

(如图)但是,Kafka为了提升性能,采用了异步批量刷盘的实现机制,也就是说按照一定的消息量和时间间隔来刷盘,而最终刷新到磁盘的这个动作,是由操作系统来调度的,所以如果在刷盘之前系统崩溃,就会导致数据丢失

一线大厂面试真题-Kafka如何保证消息不丢失,分布式消息队列面试题,面试,kafka,职场和发展

(如图)Kafka并没有提供同步刷的实现,所以针对这个问题,需要通过Partition的副本机制和acks机制来一起解决。

我简单说一下Partition副本机制,它是针对每个数据分区的高可用策略,每个partition副本集包含唯一的一个Leader和多个FollowerLeader专门处理事务类的请求,Follower负责同步Leader的数据”。

在这样的一种机制的基础上,kafka提供了一个acks的参数,Producer可以设置acks参数再结合Broker的副本机制来个共同保障数据的可靠性。

acks有几个值的选择

1.   acks=0,表示producer不需要等Broker的响应,就认为消息发送成功,这种情况会存在消息丢失。

2.   acks=1,表示Broker中的Leader Partition收到消息以后,不等待其他Follower Partition同步完,就给Producer返回确认,这种情况下Leader Partition挂了,存在数据丢失。

3.   acks=-1,表示Broker中的Leader Partition收到消息后,并且等待ISR列表中follower同步完成,再给Producer返回确认,这个配置可以保证数据的可靠性。

最后,就是Consumer必须要能消费到这个消息,实际上,只要producerbroker的消息可靠的到了保障,那么消费端是不太可能出现消息无法消费的问题,除非是Consumer消费完这个消息就直接提交了,但是即便是这个情况,也可以通过调整offset的值来重新消费。

面试点评

从高手的回答可以发现,任何的技术问题,是可以按照请求的顺序,或者调用关系来逐层推导去回答的。

当然,技术的底子要足够厚,至少像kafka里面这些副本、数据同步、分区、刷盘等功,至少都要有深度的思考和研究。

一线大厂面试真题-Kafka如何保证消息不丢失,分布式消息队列面试题,面试,kafka,职场和发展文章来源地址https://www.toymoban.com/news/detail-790299.html

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

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

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

相关文章

  • RocketMQ和Kafka的区别,以及如何保证消息不丢失和重复消费

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

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

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

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

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

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

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

    2024年04月09日
    浏览(34)
  • 消息中间件之八股面试回答篇:一、问题概览+MQ的应用场景+RabbitMQ如何保证消息不丢失(生产者确认机制、持久化、消费者确认机制)+回答模板

    目前主流的消息队列技术(MQ技术)分为RabbitMQ和Kafka,其中深蓝色为只要是MQ,一般都会问到的问题。浅蓝色是针对RabbitMQ的特性的问题。蓝紫色为针对Kafka的特性的问题。 MQ主要提供的功能为:异步 解耦 削峰 。 展开来讲就是 异步发送(验证码、短信、邮件…) MYSQL和Redi

    2024年01月24日
    浏览(44)
  • RabbitMQ 消息丢失的场景,如何保证消息不丢失?

    第一种:生产者弄丢了数据。生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。 第二种:RabbitMQ 弄丢了数据。MQ还没有持久化自己挂了 第三种:消费端弄丢了数据。刚消费到,还没处理,结果进程挂了,比如重启了。 1.针对生

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

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

    2024年02月15日
    浏览(29)
  • 如何保证Mq消息不丢失

    mq: rabbitmq, rocketmq, kafka 1.RocketMQ RocketMQ是如何最大限度的保证消息不丢失 生产阶段:消息在 Producer 发送端创建出来,经过网络传输发送到 Broker 存储端。 存储阶段:消息在 Broker 端存储,如果是主备或者多副本,消息会在这个阶段被复制到其他的节点或者副本上。 消费阶段:

    2023年04月09日
    浏览(33)
  • RabbitMQ如何保证消息不丢失

    观察整个 RabbitMQ 消息发送过程: 从上述流程我们可以得知:消息从生产者到达消费者,经过两次网络传输,并且在 RabbitMQ 服务器中进行路由。 因此我们能知道整个流程中可能会出现三种消息丢失场景: 生产者发送消息到 RabbitMQ 服务器的过程中出现消息丢失。 可能是网络波

    2024年02月21日
    浏览(29)
  • 如何保证 RabbitMQ 消息不丢失?

      第一种:生产者弄丢了数据。生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。 第二种:RabbitMQ 弄丢了数据。MQ还没有持久化自己挂了。 第三种:消费端弄丢了数据。刚消费到,还没处理,结果进程挂了,比如重启了。   方

    2024年02月08日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包