Java面试题-kafka
1.讲一下kafkakafka是一个分布式流处理平台也是一个消息中间件。kafka基于生产者-消费者模型可以实现应用的解耦。主要有以下几个核心概念消息messagekafka的数据单位。主题topickafka中的消息都是以主题进行归类的。分区partition一个主题可以包含多个分区每一个分区都是有序且不可变的消息序列。生产者producer生产者向kafka发送消息负责将数据写入kafka。消费者consumer消费者从kafka获取消息负责从kafka读取消息。broker一个kafka节点就是一个broker。offset消息在分区中的位置索引。2.kafka为什么需要分区负载均衡消息通过指定的分配策略分配到不同的broker上避免单个broker成为性能瓶颈。容错性kafka会将分区数据复制到多个broker上提高系统容错性保证数据的可用性。顺序消费生产者按照顺序发送到同一个分区的消息消费者也会按照这个顺序进行消费。可扩展性当主题数量不断增长时可以增加分区分散负载不需要对系统进行大规模重构。3.kafka如何保证顺序消费发送到单个分区生产者按照顺序将消息发送到单个分区一个分区的数据只能被一个消费者实例消费。单线程消费消费者组中只有一个消费者实例但是实际项目中基本不存在这种情况。kafka事务可以使用kafka的事务严格的进行生产和消费。但是这会牺牲性能和吞吐量。4.如何保证kafka的消息发送到指定的分区在生产消息时直接指定分区号。自定义分区通过实现 Partitioner 类自定义逻辑分区。默认的分区策略基于key进行哈希计算然后与分区数取模得到分区号。5.kafka中消费者提交消费位移时提交的是当前消费到的最新消息的offset还是offset1在kafka中消费者提交的是最新的一条消息唯一也就是offset1。主要是为了保证消费者在下次启动时从未消费的消息开始读取防止重复消息。6.kafka中有哪些情况会造成重复消费没有正确的提交位移会造成重复消费。当消费者组内成员数量发生变化时会触发再平衡。再平衡的过程中如果消息已经被处理但是还没有提交位移就会造成重复消费。生产者在发送消息时比如网络问题没有收到broker的确认会重试发送消息。那么消费者在消费时可能就会重复消费。7.那么如何防止重复消费手动提交位移确保消息处理成功后再提交。变更消费者组成员数量时确保没有消息在消费。配置 enable.idempotencetrue 生产者会自动进行去重确保消息只被写入一次。通过kafka事务保证原子性也可以避免消息重复消费。8.说一下acks参数对消息持久化的影响acks 0生产者发送消息后不需要等待broker的确认就认为消息已经发送成功。这种情况下如果broker宕机可能会造成消息的丢失。acks 1生产者发送消息后会等待broker的确认broker返回后消息发送成功。但是broker的返回只是leader副本确认后就返回所以如果leader副本在同步follower副本时发生故障也会造成消息丢失。acks -1/all生产者的消息在所有副本都接收到才会收到broker的确认。这种设置提供了最高的持久化保证即使某个broker发生了故障消息也不会丢失。9.kafka中哪些情况会造成消息漏消费如果消费者进行消费时发生了异常没有正确的处理位移可能会导致消息漏消费。消费者消费能力不足时会导致消息堆积。当堆积的消息超过一定数量或者时间限制时会触发清理机制导致消息被清理继而漏消费。10.kafka的文件存储机制是怎么样的kafka的每个分区对应一个文件夹文件夹中包含两部分文件数据文件和索引文件。数据文件保存着实际的消息数据索引文件保存着消息的偏移量和物理位置的对应关系可以快速的查找某个消息的位置。11. kafka如何保证消息的可靠性分区复制kafka将每个分区的数据副本分布在多个broker上即使某个broker宕机数据仍然能够通过其他broker获取。ISR机制kafka使用ISR机制只有在所有副本已经同步到最新数据时才会将消息标记为已提交这样能够保证所有副本的数据都是一致的。持久化kafka将消息持久化到磁盘中即使出现故障也能够快速恢复。消息重试kafka允许生产者在发送消息时进行重试保证消息不会丢失。消费者位移消费者位移用来记录已经消费的消息位置确保消息不会被重复消费。12.kafka的消息传递机制是pull还是pushkafka采用的是pull模式也就是消费者从broker中主动拉取数据。这样消费者可以自己控制消费的速度和位置避免了消息积压和消费者压力过大。并且可以通过设置重复消费一些消息也保证了消息的一致性和可靠性。13.kafka如何防止如果broker没有可供消费的消息将导致consumer不断在循环中轮询消费者在调用poll()方法消费数据时可以加上timeout参数当返回空数据的时候会在Long Polling中进行阻塞等待timeout再去消费直到数据到达。14. kafka中多个消费者组消费同一个主题会造成重复消费吗正常情况下不会因为每个分区同一时间只会被一个消费者消费。并且因为消费位移的存在处理完消息之后会提交位移其他消费者会根据位移位置开始消费不会重复消费。异常情况下会比如消费者组重新平衡kafka会重新分配分区一些消息可能会被分配给新的消费者造成重复消费。或者消费时发生异常没有正确的提交位移也会导致重复消费。15.kafka为什么性能好、吞吐量大集群架构kafka是一个分布式的集群系统可以将数据分散到不同的节点上进行存储和处理从而实现横向扩展提高系统的处理能力。磁盘存储kafka使用磁盘存储消息存储数据的容量不再受限于内存的大小。批量发送kafka可以将多个消息批量发送到broker上这样可以减少网络传输开销提高系统吞吐量。零拷贝技术kafka适合用零拷贝技术来避免数据拷贝的过程减少了cpu的开销提供系统性能。压缩算法kafka支持多种压缩算法可以对消息进行压缩减少网络传输开销提高系统吞吐量。16.kafka的高可用是怎么实现的kafka分区可以有多个副本副本分为leader副本和follower副本。leader副本负责处理分区的所有读写请求。生产者向分区发送消息时实际上是发送到leader副本消费者从分区读取消息时也是从leader副本读取。follower副本则被动地从leader副本复制数据不处理来自客户端的请求。它们的存在是为了在leader副本出现故障时能够有一个副本可以被提升为新的leader继续提供服务。follower副本会不断地从leader副本拉取消息以保持与leader副本的数据同步。这个过程是通过网络通信实现的。当follower副本成功地复制了一条消息后它会向leader副本发送一个确认消息表示已经成功复制了该消息。leader副本会跟踪所有副本的同步状态以确定哪些副本已经跟上了最新的消息。17.kafka中 leo(log end offset)和hw(high watermark)是什么LEO表示分区中最后一条消息的偏移量即消息在分区中的存储位置。当 Producer 向 Partition 中写入消息时LEO 会不断增加表示消息的写入位置当 Consumer 从 Partition 中拉取消息时LEO 会不断变化表示消息的读取位置。HW表示分区中已经被 Consumer 消费的消息偏移量即消息在 Partition 中的消费位置。当 Consumer 从 Partition 中拉取消息时HW 会不断增加表示已经消费的消息的偏移量当 Consumer 向 Kafka Broker 提交位移时HW 会被更新为提交的位移表示消费者已经消费了该位移之前的所有消息。LEO 和 HW 的关系如下1.LEO HW表示 Partition 中还有未被消费的消息Consumer 可以继续消费这些消息2.LEO HW表示 Partition 中已经没有未被消费的消息Consumer 无法继续消费消息除非有新的消息写入到 Partition 中。LEO 和 HW 的作用如下1.LEO 表示消息的存储位置可以用于监控 Partition 中消息的写入情况2.HW 表示消息的消费位置可以用于监控 Consumer 消费消息的情况以及实现消息传输语义的控制。例如At Least Once 语义中Consumer 可以将 HW 作为提交位移的参考避免消息的重复消费。18.消息被消费后什么时候会进行删除没有及时删除会造成空间占满吗消息被消费后不会立马进行删除而是根据配置的策略进行清除。kafka消息的清除有两种策略一种基于时间一种基于分区大小。没有及时删除当生产者的速度远大于消费者速度时可能会造成空间占满。19.kafka默认的主题有哪些分别做什么用的__consumer_offsets存储消费组的偏移量信息每个消费组消费到每个分区的位置。__transaction_state支持 Kafka 事务功能存储事务的状态信息比如如事务开始、提交、中止等。20.kafka为什么要抛弃zookeeperkafka在3.3.0版本2022 年 6 月发布中正式抛弃了zookeeper使用KRaft模式进行替代。zookeeper本质时一个分布式的协调工具它有一个特点就是强一致性。当集群中的某个节点发生变化时需要通知其他节点进行更新需要等待大多数节点更新完成后才算成功这样性能就有了瓶颈。当kafka集群很大分区很多的时候zookeeper的元数据也会很多性能就差了。并且zookeeper也是需要选举的而且发生选举的这段时间不提供服务。21.kafka消费的时候消费失败怎么办延迟重试机制对于消费失败的消息进行异常捕获利用指数退避策略进行延迟重试。死信队列超过最大重试次数后仍然失败放入死信队列DLQ中。指数退避策略通过指数级增加重试间隔时间核心思想是“失败次数越多下次重试等待时间越长”- 第一次失败后1秒- 第二次失败后2秒- 第三次失败后4秒- 第四次失败后8秒- 第N次失败后2^n-1秒22.如何处理死信队列利用监控工具对死信队列进行监控及时进行告警。判断消费失败的原因一般可能有JSON解析失败、字段类型错误、编码问题等。对消息进行处理后重新进行消费并及时的清理死信队列。23.什么是ISR机制ISR机制是kfaka用于保证数据一致性和可靠性的一种机制。基本原理是每一个分区都有一个leader副本处理读写其他的副本都是follower副本负责数据的备份。follower副本会定期从leader副本拉取最新数据ISR机制保证只有所有的副本都成功拉取到最新数据后消息才会被认为“已提交”。对于消费者因为消费者只能读取已提交的数据所以ISR机制能确保数据的一致性。24.什么情况下副本会被踢出ISR当follower副本无法在规定时间内拉取到leader副本的最新数据就会被踢出ISR。该时间由参数replica.lag.time.max.ms决定默认30秒。

相关新闻

如何清理C盘?最全保姆级教程来啦!!!

如何清理C盘?最全保姆级教程来啦!!!

目录 前言 准备工作 一、清理C盘缓存 1.使用杀毒软件进行清理C盘缓存(推荐) 2.使用dism清理C盘 3.使用Windows系统进行清理 4.使用Windows清理建议进行清理 二、清理和设置Windows系统占用C盘空间的功能 1.设置和移动虚拟内存 2.关闭Windows睡…

2026/9/27 19:12:25 阅读更多 →
练词汇必看!最新老师推荐的单词学习APP

练词汇必看!最新老师推荐的单词学习APP

摘要:本文汇总老师推荐的靠谱单词学习APP,拆解英语怎么快速记单词的实用方法,附场景化实操技巧,覆盖初高中学生、英语学习者全人群需求,帮大家高效积累词汇。学生记单词常见痛点死记硬背遗忘率高,刷了几周词…

2026/9/23 19:42:30 阅读更多 →
宁夏iso14001环境管理体系认证机构有哪家

宁夏iso14001环境管理体系认证机构有哪家

在当今注重可持续发展与环境保护的大背景下,ISO14001 环境管理体系对于企业而言愈发重要。获得 ISO14001 认证不仅是企业履行社会责任的体现,更有助于提升企业的环境绩效、增强竞争力。今天,我们就来深入解读 ISO14001 标准框架、PDCA 逻辑以…

2026/9/23 12:14:37 阅读更多 →

最新新闻

Word高效办公:从多级编号到VBA自动化,30个技巧填平职场文档的坑

Word高效办公:从多级编号到VBA自动化,30个技巧填平职场文档的坑

前阵子给一家企业做Office内训,课间有个学员翻着标书吐槽:“我们部门同一份投标文件,三个人改了三个样,最绝的是多级编号,改完一级标题,后面三级编号直接罢工。”这种场景我太熟了。所谓“职场Word高手&…

2026/9/29 8:47:33 阅读更多 →
Claude Opus 5.5 极速接入指南:2分钟跑通CLI与开发流

Claude Opus 5.5 极速接入指南:2分钟跑通CLI与开发流

1. 为什么“2分钟接入”这件事值得单独写一篇先说结论:把 Claude Opus 5.5 接进自己的开发流,真正花时间的从来不是模型本身,而是环境准备、鉴权链路、CLI 与编辑器的衔接这三件事。很多人卡在“装完了但跑不起来”“能跑但每次都要手动贴 ke…

2026/9/29 8:47:33 阅读更多 →
Qt Creator项目全流程:从编译、发布到跨平台移植的实用指南

Qt Creator项目全流程:从编译、发布到跨平台移植的实用指南

接上一篇的节奏,这篇把Qt Creator里项目从“新建文件”到“能交付”的整条链路一次讲透。标题里定了五件事:建立、编译、运行、发布、移植。看起来是五个动作,实际上是一条流水线,每个环节之间都有坑,稍不留神就会浪费…

2026/9/29 8:47:33 阅读更多 →
从提示词到Skills:AI编程技能包安装与自建实战指南

从提示词到Skills:AI编程技能包安装与自建实战指南

做AI编程和自动化工作流这两年,我越来越觉得,现在整个圈子讨论的核心已经悄悄变了。以前大家比的是谁的模型参数量大、谁的推理能力强,现在身边人聊得更多的反而是“skills”——你给AI装了什么技能,你的工作流里沉淀了哪些可复用…

2026/9/29 8:47:33 阅读更多 →
从零开始AI工程实践:数据、训练、部署与RAG系统落地

从零开始AI工程实践:数据、训练、部署与RAG系统落地

两年前我接到的第一个AI任务,不是训练模型,而是把一个同事写的推理脚本搬上服务器,让它稳定对外提供接口。那段脚本在作者笔记本上跑得飞快,到我机器上却花了一整天处理依赖冲突、Python版本不兼容、缺动态链接库这些破事。从那天…

2026/9/29 8:47:33 阅读更多 →
BPNN反向传播神经网络:从数学原理到NumPy手写实现

BPNN反向传播神经网络:从数学原理到NumPy手写实现

1. BPNN 到底是什么:从“自学成才”的智能算法说起很多朋友第一次接触反向传播神经网络(Back Propagation Neural Network,简称 BPNN)时,容易被那一堆公式和术语吓住。说实话,我刚入行那会儿也是这么过来的…

2026/9/29 8:46:33 阅读更多 →

日新闻

开源模型端侧落地实战:量化、推理加速与Agent上下文管理

开源模型端侧落地实战:量化、推理加速与Agent上下文管理

1. 从"追平"到"端侧落地":开源模型这波到底变了什么如果你最近半年一直在关注模型圈的动态,应该能明显感觉到一个拐点:开源模型和闭源旗舰之间的差距,正在从"代差"变成"身位差"。以前大家…

2026/9/29 0:00:05 阅读更多 →
AI Evals实战指南:从零搭建LLM应用评估体系与CI/CD集成

AI Evals实战指南:从零搭建LLM应用评估体系与CI/CD集成

1. 为什么AI Evals值得你花时间搞明白做LLM应用的人,迟早会撞上同一堵墙:模型输出飘忽不定,今天答得好好的,明天换个问法就胡说八道。你改了一版提示词,感觉好像好了点,但到底好了多少?说不清。…

2026/9/29 0:00:05 阅读更多 →
Java采购管理系统实战:从数据库设计到事务一致性

Java采购管理系统实战:从数据库设计到事务一致性

简介:这是一套面向Java Web初学者与课程设计者的采购管理系统完整源码,采用JSP技术搭建,配合MySQL数据库,用于解决企业采购信息的管理问题,适合作为毕业设计、课程大作业或进销存类项目的参考模板。系统实现了用户登录…

2026/9/29 0:00:05 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/28 9:47:26 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/28 16:55:15 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →