美团面试真题:如何保证Kafka消息不丢失?

2022Java最新真实面试题汇总 一、面经 适当夸夸面试官(或所在公司)不会有坏处 如果某个问题完全不会(或稍微懂点),直接承认(或略作回答)并把话题引导向类似话题(redis集群的槽机制 -> 一致性哈希) 第二条如果完全不会,可以在表达自己不会之后给与面试官一点反问,表现出自己的求知欲与关注度 所有话题都可以适当性的发散,不要太发散以免显得有备而来 所有问题(熟悉或不熟悉)的回答不要太快,给面试官反应与打断的时间,同时方便自己梳理逻辑,显得沉稳;回答太快容易显得有备而来 一定要乐观向上(至... 阅读详情

一位工作了5年的小伙伴去美团面试以后,跟我反馈说,被问到一个“如何保证Kafka消息不丢失?”的问题,不知道如何回答。其实,这道题真的很基础。

很多小伙伴可能只会回答说,消息要持久化,添加消息确认机制。如果,你只是这样回答,那就和普通的程序员没什么区别。要想让面试官感觉你确实有不一样的理解,就应该从多个方面更全面地来分析和回答这个问题。今天,我来给大家讲明白。

1、解决思路

首先第一个是服务器端。设置broker中的配置项unclean.leader.election.enable = false,保证所有副本同步。同时,Producer将消息投递到服务器的时候,我们需要将消息持久化,也就是说会同步到磁盘。注意,同步到硬盘的过程中,会有同步刷盘和异步刷盘。如果选择的是同步刷盘,那是一定会保证消息不丢失的。就算刷盘失败,也可以即时补偿。但如果选择的是异步刷盘的话,这个时候,消息有一定概率会丢失。网上有一种说法,说Kafka不支持同步刷盘,这种说法也不能说是错的。但是可以通过参数的配置变成同步刷盘,比如,这样的配置:

当达到下面的消息数量时,会将数据flush到日志文件中。默认10000

#log.flush.interval.messages=10000

当达到下面的时间(ms)时,执行一次强制的flush操作。interval.ms和interval.messages无论哪个达到,都会flush。默认3000ms

#log.flush.interval.ms=1000

检查是否需要将日志flush的时间间隔

log.flush.scheduler.interval.ms = 3000

同样可以达到同步刷盘的效果。

第二个,就是生产者Producer,使用带回调通知的send(msg,callback)方法,并且设置acks = all 。它的消息投递要采用同步的方式。Producer要保证消息到达服务器,就需要使用到消息确认机制,也就是说,必须要确保消息投递到服务端,并且得到投递成功的响应,确认服务器已接收,才会继续往下执行。那如果,Producer将消息投递到服务器端,服务器来没来得及接收就已经宕机了,那投递过来的消息岂不是丢失了,怎么办呢?大家不要慌,在Producer投递消息时,都会记录日志,然后再将消息投递到服务器端,就算服务器宕机了,等服务器重启之后,也可以根据日志信息完成消息补偿,确保消息不丢失。

第三个,就是消费者Consume。设置enable.auto.commit为false。在Kafka中,消息消费完成之后,它不会立即删除,而是使用定时清除策略,也就是说,我们消费者要确保消费成功之后,手动ACK提交。如果消费失败的情况下,我们要不断地进行重试。所以,消费端不要设置自动提交,一定设置为手动提交才能保证消息不丢失。

2、总结

Kafka要严格意义上保证消息不丢失,需要从三个方面来设置,

第一个服务器端持久化设置为同步刷盘、第二个生产者设置为同步投递,第三个消费端设置为手动提交。

以上就是对Kafka保证消息不丢失的解决方案,听懂的小伙伴,关注点个赞,下次不迷路。

Amesim管路仿真进阶:如何用阻力管实现不规则管路的高精度模拟 本文深入探讨了在Amesim仿真中,如何利用阻力管(Orifice with Table)元件,特别是TFORT0子模型,实现对不规则管路的高精度模拟。通过直接输入基于测试或CFD的流量-压降数据,该方法能有效弥补标准管路模型在复杂流道、内部结构复杂等场景下的不足,为液压、热管理等系统仿真提供精准可靠的部件模型。 阅读详情

相关推荐

SAP 接口测试操作-业务顾问

业务顾问测试接口操作

weixin_43657667的博客 5156

Kafka数据存储流程和log日志介绍-初级入门(六)

Kafka 采取了分片和索引机制,将每个partition分为多个segment,每个segment对应2个文件 log 和 index

点滴记忆,分享成长之路 777

Zabbix7.4监控系统在Rocky Linux10.0上的完整部署流程(含MariaDB配置)

本文详细介绍了在Rocky Linux 10.0操作系统上部署企业级监控系统Zabbix 7.4的完整流程,并重点阐述了与MariaDB数据库的深度集成与性能优化配置。内容涵盖从系统环境准备、数据库安装与安全加固、Zabbix核心组件部署,到服务配置、Web界面初始化以及生产环境高级调优的全方位实战指南,旨在帮助用户构建稳定高效的监控平台。

weixin_29200741的博客 328

在配置文件中对它们进行注释时,Kafka log.flush.interval.messages和log.flush.interval.ms的缺省值

http://kafka.apache.org/documentation.html#configuration log.flush.interval.messages = Long.MaxValue log.flush.interval.ms = Long.MaxValue

大叶子不小的博客 1531

jetson agx orin开箱及接口介绍

jetson agx orin开箱及接口介绍

qq_58728069的博客 1万+

VMware VSAN 高级参数介绍(测试用)

VSAN 的策略驱动让我们看到了VSAN无穷的潜力,其设计思路相当新颖,在一个基础资源池上使用策略就能实现不同对象的区分服务,而目前没有其他厂家能到VMware这样的高度。 VSAN 呈现给用户配置很简单,但实际上设计及后台比较复杂。笔者无意间发现了VSAN的隐藏高级参数设置,有很多好玩的选项想分享出来。这些参数全部是针对每主机进行设置的。VSAN 中有很多默认设置,这些设置应该都是研发人员多次测试得出的最优值,修改可能导致环境异常,并不建议修改! 目录 参数1:全闪配置下 SSD 写缓存最大.

山水牧羊 2030

Kafka配置文件server.properties详解

Kafka启动通常都会通过配置文件的方式启动,也就是通过server.properties文件启动,里面是kafka的broker端的一些配置,那么这些配置都是什么意思呢?下面准备记录一下。 -----------------------------系统相关配置------------------------------------------------------------------------------------------------------- #这个表示当前broker在集群中的一个唯

Cc的博客 4048

51单片机也能玩转GC9A01彩屏?超详细移植指南与性能优化技巧

本文详细介绍了如何在51单片机上高效驱动GC9A01彩屏,包括硬件连接优化、SPI模拟驱动、内存管理策略及高级刷新技术。通过分段缓冲、颜色压缩和差异化刷新等技巧,显著提升显示性能,使51单片机也能流畅运行240x240分辨率的彩色TFT屏幕。

hp777的博客 189

rocketmq和kafka的对比

Producer发送消息到broker, 若消息发送出去后,未达到broker,就通知业务消息发送成功,若此时Broker宕机,则会导致消息丢失,从而导致业务出错。发送消息的Producer通常是用Java语言,缓存过多消息,GC是个很严重的问题。而kafka是一个topic下分区,分区又分为segment 每个segment会包含一个log数据文件和一个索引文件。Producer通常为分布式系统,且每台机器都是多线程发送,通常来说线上单Producer产生的消息数量不会过万。万每秒,适用于日志类消息。

qq_42042621的博客 1023

deepstream车道线检测自定义插件化,其中要注意pipeline的配置,如果插件位置配置不对,会报input format should be RGBA when using blur-obje

以上代码中,我们先从对象池中获取一个 DsUserMeta 对象,然后使用 get_lane_line_from_frame 函数获取车道线检测结果,并使用 add_lane_line_meta 函数将其添加到 DsUserMeta 对象中。注意,上述代码中的 get_lane_line_from_frame 函数和 add_lane_line_meta 函数需要你自己实现,用于从视频帧中提取车道线检测结果,并将其添加到 DsUserMeta 中。

pvmsmfchcs的博客 690

YOLOv11-seg改进系列 | 引入CMTFNet(TGRS2023)+TransNeXt(CVPR2024)的C3k2_MSMHSA_CGLU模块,多尺度空洞注意力扩大感受野,增强复杂背景下

本文提出一种改进YOLOv11分割模型的C3k2_MSMHSA_CGLU模块,融合多尺度多头自注意力(MSMHSA)和卷积门控线性单元(CGLU)。MSMHSA通过多尺度空洞卷积提取不同感受野特征,生成跨尺度注意力,降低计算量同时保留全局上下文。CGLU采用卷积门控机制增强特征变换能力。实验表明,改进后模型参数量仅增加7.8%,GFLOPs增加4.2%,显著提升了多尺度目标检测性能,尤其适用于遥感图像等复杂场景。该模块有效解决了原始C3k2感受野有限、缺乏全局建模能力的问题。

qq_44224801的博客 200

3.kafka如何保证消息的可靠性

kafka应答原理 0:生产者发送过来的数据,不需要等数据落盘应答 如下图,生产者发送了信息之后,不需要等待kafka回复,如果kafka上的节点挂了后,这个消息就丢失了。 1:生产者发送过来的数据,Leader收到数据后应答。 如下图,可能leader收到消息后,还没同步leader挂了,消息丢失了 -1(all):生产者发送过来的数据,Leader和ISR队列里面的所有节点收齐数据后应答。 如下图,需要等leader和ISR队列中的所有follower都收到后才应答。 什么

qq_42008471的博客 1828

小卫星多普勒频偏MATLAB代码

多普勒频偏是由于发射机和接收机之间的相对运动而引起的频率变化。对于小卫星,由于其速度和高度的变化,多普勒频偏会变得更加明显。本文将探讨小卫星多普勒频偏的原理、影响因素以及补偿方法。多普勒频偏的原理当发射机和接收机之间存在相对运动时,接收到的信号频率会发生变化。这种频率变化称为多普勒频偏。其原理可以描述如下:设发射机和接收机之间的距离为 d,发射信号的频率为 f0,发射机和接收机的相对速度为 v。则接收到的信号频率 f 为:其中 c 为光速。

qq_59747472的博客 244

美团面试真题,如何保证Kafka消息不丢失?

【Java面试】‘如何保证Kafka消息不丢失?’,只会回答,消息要持久化?添加信息确认机制?今天带你彻底搞明白 一位工作了5年的小伙伴去美团面试以后,跟我反馈说,被问到一个“如何保证Kafka消息不丢失?”的问题,不知道如何回答。其实,这道题真的很基础。 很多小伙伴可能只会回答说,消息要持久化,添加消息确认机制。如果,你只是这样回答,那就和普通的程序员没什么区别。要想让面试官感觉你确实有不一样的理解,就应该从多个方面更全面地来分析和回答这个问题。今天,我来给大家讲明白。 【导航条:解决思路

Tom弹架构 784

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

得物面试:Kafka消息0丢失,如何实现?

Consumer 程序有个“位移”(/位点)的概念,表示的是这个 Consumer 当前消费到的 Topic Partion分区的位置。下面这张图来自于官网,它清晰地展示了 Consumer 端的位移数据。enable.auto.commit=false 关闭自动提交位移,消息处理完成之后再提交offsetconsumer端需要为每个它要读取的分区保存消费进度,即分区中当前消费消息的位置,该位置称为位移(offset)。

架构师尼恩 2154

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

美团Java面试实录:从Spring Cloud到Kafka的那些坑

在电商平台中,订单服务需要与支付服务、库存服务协同。:用过Prometheus和Grafana,把每个服务的指标暴露出来,然后做可视化展示。:(突然安静)那个...我们用过Elasticsearch做日志分析,不过数据量不算太大。:(小声)知道点,比如用Seata做TCC模式,不过实际项目里更多用的还是本地事务加消息补偿...:我们用的是Eureka,每个服务启动时会注册到服务中心,其他服务通过REST模板调用...:用Kafka做异步处理,每个服务把日志发到topic,然后有一个专门的消费者处理...

杨不易呀 377

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java工程师的进阶之路-Kafka篇(一,整理了3家面试问题:美团+字节+腾讯

可恢复性: 系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。 顺序保证: 在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。(Kafka 保证一个Partition 内的消息的有序性) 缓冲: 有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。 异步通信: 很多时候,用户不想也不需要立.

m0_60722379的博客 255

20171114美团面试题

14号正好是周二,按照约定上午十点半去美团总部面试,公司位于望京,出了地铁口步行800多米就到了。来到总部大楼,映入眼帘的是《美团点评集团综合指挥部》,好吧,够霸气。 二楼签完到,接着去5楼签到,接待人员都很热情,签完到坐了7分钟左右,由人事MM过来通知我开始面试,把我领到类似于休息区的地方,这里有很多独立的小圆桌,后来又陆陆续续来了好多面试者,坐在不同的白色圆桌上等待着面试官的到来。 不一会

雪夕阳 3690

两个月面试6家(美团、搜狐)已拿滴滴18k*16薪offer

文章目录前言美团一面二面三面四面滴滴一面二面三面四面360一面二面题外话新浪一面二面三面完美世界一面二面HR面总裁面搜狐一面二面三面最后 前言 两个月面了美团、滴滴、360、新浪网、完美世界、搜狐六家公司,其中两个公司面的都是Java研发,美团三面面试官说是做外卖机器人(类似无人驾驶车),个人比较感兴趣,如果发offer,就签约美团了。找工作这几个月,自己也看了很多的面经,收藏了一系列的面试资料,为了回馈帮助过或给我带来信心和失落时鼓励的你们,特将美团、滴滴、360、新浪网、完美世界、搜狐的面试经历记录一

程序媛小琬的博客 1502

通关kafka之Kafka面试题

kafka kafka说说它的特性,客户端offset宕机后,同一个topic客户端能不能接上它消费? 不能,只能客户端本地记录offset。 kafka 各个模块概念 kafka 高水位(不会) 17、Kafka 选主怎么做的? 18、kafka 与 rabbitmq区别; 19、kafka 分区怎么同步的? 20、kafka 怎么保证不丢消息的?kafka partition broker consumer consumer group topic 等都是啥关系? 21、kafka 为什么可以扛

微瞰技术的博客 726

来自粉丝的阿里、美团、腾讯的Java开发岗P7面试真题分享

jvm结构负载均衡器的四层和七层负载均衡原理场景题:设计一个高可用高并发的电商系统腾讯kafka生产端怎么实现幂等的kafka如何实现分布式消息kafka的slave的同步机制kafka怎么进行消息写入的ack为什么实现equals必须先实现hash方法一个对象new出来后的结构,怎么保存的讲一讲类加载的过程redis的hash数据结构和如何扩容mysql快照读怎么实现的msyql 的事务隔离级别,不可重复读和幻读区别YYJVM调优思路。

2303_77877769的博客 748

想去BAT、美团、京东和字节面试?那你必须懂他们的面试套路!

这篇文章简单给大家来聊一个互联网大厂的Java面试题:如果让你设计一个消息中间件,你会怎么做? 这个问题本质就是面试官在考察一个高级以上的Java工程师的系统设计能力

石杉的架构笔记 392

美团面试复盘 | 面试题复习

BRAC模型实现权限管理怎么做的?项目用redis储存了什么数据?redis5种基本数据类型?-StringString数据类型能自增吗?incrby 命令可以实现String自增操作。在自增的时候,因为 Redis 没有专用的整数类型,所以key 内储存的字符串被解释为十进制 64 位有符号整数来执行 INCR 操作。本操作的值限制在64 位(bit)有符号数字表示之内。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。多线程在共同更新该数据,怎么保证其原子性?加锁。

cyming_的博客 217

Java各类技能知识点学习链接大全:九、消息队列

以下内容大多是学习链接,他人整理,个人收藏以便复习,同时归纳分享出来(如有不妥,原作者可随时联系本人删除,感谢!) 九、消息队列 1、消息中间件部署及比较:rabbitMQ、activeMQ、zeroMQ、rocketMQ、Kafka、redis: https://juejin.cn/post/6844903626171760653 2、Kafka如何保证消息的顺序性 https://www.cnblogs.com/windpoplar/p/10747696.html 3、Kafka如何保.

小哥骑单车 256

阿里、腾讯、美团等P7岗位面试题

来自朋友最近阿里、腾讯、美团等P7岗位面试题 程序员小灰昨天 以下文章来源于艾小仙,作者艾小仙 艾小仙 2本学渣,阿里P7,9年码龄,纵观半生,产品运营,开发测试,app游戏,大厂小厂,雨露均沾,创过业,亏过钱,沉下心,从头淦。 来自年初和最近朋友的大厂面试题。 阿里巴巴 对象如何进行深拷贝,除了clone happen-before原则 jvm调优的实践 单例对象会被jvm的gc时回收吗 redis如果list较大,怎么优化 tc..

b_just的博客 1238

Kafka 基础教程 — 无消息丢失配置

作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬。

smart_an的专栏 989
上一篇: 当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮
下一篇: 第十篇|Flink的时间与watermarks详解
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值