Kafka面试夺命连环30问(一)

1、kafka消息发送的流程?

  • Producer 创建并配置
  • 发送消息,消息被序列化,并通过配置的分区规则决定发送的分区。
  • Producer 发送请求,通过网络将消息发送到相应的 Broker。
  • Broker 存储消息,将消息写入分区日志。
  • Producer 等待 ACK 确认,根据 acks 配置等待响应。
  • 成功或失败,根据结果执行回调,消息成功则继续发送,失败则重试。

2、Kafka 的设计架构你知道吗?

  • Kafka 的设计架构以高吞吐量、高可用性和可扩展性为目标,采用分布式的方式通过分区、复制和消费者组等机制实现了这些目标。它通过结合 Producer、Broker、Consumer、ZooKeeper 等组件的协作,提供了一个强大的消息流处理平台。

3、Kafka 分区的目的?

  • 并行处理:通过分区实现多个生产者和消费者的并行工作,提高吞吐量。
  • 水平扩展:分区允许 Kafka 集群通过增加 Broker 来横向扩展,支持更多的存储和更高的处理能力。
  • 消息顺序保证:保证单个分区内的消息顺序,适用于有序数据处理场景。
  • 容错和高可用性:通过分区和副本机制保证数据在故障情况下的可用性。
  • 负载均衡:通过消费者组和分区的分配,实现负载均衡,防止资源浪费。
  • 存储管理:通过分区的存储策略灵活地管理消息的生命周期。

4、你知道 Kafka 是如何做到消息的有序性?

  • Kafka 的消息顺序性是 在分区内保证顺序 的,通过顺序写入、偏移量管理和领导者-追随者模式来确保每个分区内消息的顺序性。而 跨分区的顺序性 并没有保证,生产者可以通过合理的分区设计(例如使用消息键)来间接实现顺序控制。通过这种设计,Kafka 能在保证高吞吐量和高并发的同时,也确保了消息的有序性,尤其是在分区级别。

5、ISR、OSR、AR 是什么?

  • ISR(In-Sync Replicas):同步副本,它们与 Leader 副本保持数据一致并能参与 Leader 选举。
  • OSR(Out-of-Sync Replicas):非同步副本,它们的数据落后于 Leader 副本,不能参与数据一致性的保证。
  • AR(Available Replicas):可用副本,包括 Leader 副本和其他可以响应请求的副本,不论它们是否同步。

6、Kafka 在什么情况下会出现消息丢失

  • Producer 配置不当acks=0acks=1 配置)。
  • 消息未成功写入磁盘(磁盘故障或 Broker 崩溃)。
  • Leader 副本丢失,尤其是当副本未能及时同步数据。
  • 日志保留策略导致消息丢失(日志过期或覆盖)。
  • Broker 节点崩溃,尤其是当没有足够副本时。
  • 网络分区,导致副本不同步或 Leader 无法选举。
  • 生产者重试逻辑问题,导致消息未被成功发送。

7、怎么尽可能保证 Kafka 的可靠性

  • 生产者配置:确保 acks=all,配置合适的重试和超时策略。
  • Broker 配置:确保副本数设置为 3,使用 min.insync.replicas 配置保证至少有足够的副本同步数据。
  • 消费者配置:手动提交偏移量,禁用自动提交,配置合理的 max.poll.records 等。
  • 日志保留和写入策略:合理配置日志保留时间和写入刷新频率。
  • 硬件和网络:使用可靠的存储和网络系统,避免资源瓶颈和网络延迟。
  • 监控和自动故障转移:及时监控集群健康,自动化故障转移,确保服务可用性。

8、Kafka中如何做到数据唯一,即数据去重?

  • 启用生产者的 幂等性(enable.idempotence=true,保证即使在重试时,也不会出现重复消息。
  • 使用 事务,确保一批消息的原子性。
  • 使用 手动提交偏移量,避免因消费者失败导致重复消费。
  • 设计 幂等消费:通过唯一消息 ID 记录已处理的

9、生产者如何提高吞吐量?

  • 批量发送:配置 batch.sizelinger.ms,将消息批量发送。
  • 消息压缩:使用合适的压缩算法(如 snappy)减少网络带宽消耗。
  • 配置生产者的 acks:设置为 10 来提高吞吐量,但要考虑数据丢失的风险。
  • 调整生产者线程数和并行度:增加并发请求的数量(max.in.flight.requests.per.connection)。
  • 优化网络和硬件资源:确保网络带宽和磁盘 I/O 性能足够。
  • 高效的序列化方式:使用更高效的序列化格式(如 Avro 或 Protobuf

10、zk在kafka集群中有何作用

  • 在传统的 Kafka 集群架构中,Zookeeper 扮演着集群协调器的角色,负责管理 Kafka 集群的元数据、执行 Leader 选举、消费者组管理、配置管理以及分区副本同步等任务。Zookeeper 为 Kafka 集群提供了可靠的协调机制,确保了 Kafka 集群的高可用性和一致性。
  • 然而,随着 KRaft 模式(Kafka Raft)引入,Kafka 正在逐步减少对 Zookeeper 的依赖,并试图实现完全通过 Kafka 自身的协议进行协调管理。这一变化将进一步简化 Kafka 的架构并提高其可扩展性。

11、简述kafka集群中的Leader选举机制

  • Leader选举是Kafka保证数据一致性和高可用性的重要机制,Zookeeper协调每个分区的Leader选举,并通过副本同步保证数据的可靠性。通过这种机制,即使某个Broker故障,Kafka集群也能继续工作,并能快速恢复。

12、kafka是如何处理数据乱序问题的。

  • 保证同一分区内消息顺序。
  • 通过消息键来保证相同键的消息在同一分区内,保证顺序。
  • 通过生产者的幂等性和事务机制保证消息发送的一致性。
  • 在消费者端通过控制并发和分区来减少乱序。

13、kafka中节点如何服役和退役

  • Kafka集群中的节点服役和退役是通过Zookeeper和Kafka内部的控制器来协调和管理的。服役时,新节点通过Zookeeper注册并进行分区迁移,确保数据高可用性;退役时,节点会停止服务并触发分区副本迁移,确保集群的健康运行。在整个过程中,Kafka致力于最小化对集群性能的影响,并保证数据的安全和一致性

14、Kafka中Leader挂了,Follower挂了,然后再启动,数据如何同步?

  • Leader选举:当Leader挂掉时,Kafka会通过Zookeeper和控制器选举新的Leader,确保集群继续运行。
  • ISR(In-Sync Replicas):Kafka通过ISR列表确保只有同步的副本才会被选为Leader或提供服务。副本同步滞后太多时会被临时移除ISR列表。
  • 数据恢复与同步:恢复的Leader或Follower会从当前的Leader节点同步数据,直到其数据一致。
  • 副本数量:通过合理配置副本数量(通常为3个),可以提高集群的容错能力,减少数据丢失的风险。

15、kafka中初始化的时候Leader选举有一定的规律,如何打破这个规律呢?

  • 修改 auto.leader.rebalance.enablepreferred.leader.election.enable 配置,控制是否自动重新平衡 Leader。
  • 手动触发 Leader 选举,使用 kafka-leader-election.sh 工具。
  • 调整分区副本分配策略,通过自定义分区器改变副本的分配方式。
  • 改变 Broker 优先级,调整集群中不同 Broker 的优先级。
  • 使用自定义的控制器逻辑,但这种方式较为复杂。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/12782.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

比 PyTorch 更快的嵌入Python库:FastEmbed

嵌入生成 已成为自然语言处理(NLP)中不可或缺的一部分。 无论是智能推荐、文本相似度计算,还是聊天机器人,嵌入技术都扮演着重要角色。然而,我们常常会陷入繁重的库和庞大的模型中,耗时费力。 今天&#…

大模型部署解决方案之TorchServe+vLLM

TorchServe 是PyTorch 中将模型部署到生产环境的一个解决方案。它用HTTP 或HTTPS API 封装模型,可以处理多种任务,包括为部署模型分配workers、负责客户端和服务器之间通信等。 10月份发布的TorchServe 0.12 增加了对GenAI的支持,简化了大语…

博弈论(零和博弈)英文版题解

翻译: 假设我们有一个两人零和游戏,每个玩家有两种行动,行收益矩阵如下: 计算行和列玩家的最小最大最优策略以及游戏的价值。 X Y A a11 a12 B a21 a22 选项: 1. 行玩家&#x…

虚拟现实辅助工程技术应用于员工培训

你还在使用传统的入职方法吗,比如印刷指南、演示、课堂培训、讲座等等?是时候改变了。虚拟现实辅助工程技术提供了一个机会,可以让新员工的入职过程更高效、更有趣,也更令人兴奋。想象一下这样一个场景,新员工可以在第…

【健康警钟】胆已切除,生活调理有“胆”更精彩!必看指南!

在现代社会,由于生活习惯、饮食习惯等多种因素,一些人可能不得不面对胆囊切除手术。虽然手术能够有效解决胆囊结石、胆囊炎等问题,但胆囊作为人体的一部分,其功能的丧失无疑会对生活带来一定影响。那么,胆被割了之后&a…

windows NGIMX配置WebSocket反向代理

linux下 据说nginx是要有 stream的模块 Linux安装Nginx步骤之后续,带stream模块-CSDN博客 Nginx从1.3.13版本就开始支持WebSocket linux 下参考如下链接 配置 Nginx 反向代理 WebSocket - 哈喽哈喽111111 - 博客园 (cnblogs.com) SSL的配置参考 【Linux】采用…

三种读取配置文件的方式

在编写JDBC的util包以读取文件时,配置文件的位置会影响其读取方式。当前,默认配置文件直接放置在src文件夹下。 当读取.properties文件代码写法为: Properties props new Properties(); props.load(new FileInputStream("db.propertie…

丹摩征文活动|CogVideoX-2b:从安装到上线,轻松搞定全过程!

CogVideoX-2b:从安装到上线,轻松搞定全过程! CogVideoX简介 CogVideoX的推出标志着视频生成技术的一次重大突破。过去,如何在保持高效的同时提升视频质量一直是一个难题,但CogVideoX 通过其先进的3D变分自编码器&…

工位管理优化:Spring Boot企业级系统

3系统分析 3.1可行性分析 通过对本企业级工位管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本企业级工位管理系统采用SSM框架,JAVA作为开…

EMQX服务器的搭建,实现本地机和虚拟机之间的MQTT通信(详细教程)

前言 MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。 MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(…

Unity 热更新 之 一篇文章完全入门AssetBundle

本篇知识来源于unity官方手册以及siki学院的相关教程,链接如下,仅作学习分享 AssetBundle(创建打包)入门学习(基于Unity2017) - SiKi学院|SiKi学堂 - unity|u3d|虚幻|ue4/5|java|python|人工智能|视频教程|在线课程 目录 0.热更新是什么 1.AssetBundl…

图片怎么去水印?5个简单好用的图片去水印方法分享!

在日常生活中,图片水印的去除需求时常涌现,无论是出于个人兴趣还是工作需求,掌握去水印技巧能让我们更自由地利用图片资源。今天,我们为您精心挑选并介绍五种实用的图片去水印方法,让您轻松上手,即刻提升图…

半导体测试领域CP和KGD的区别

在半导体测试领域,KGD(Known Good Die)和 CP(Chip Probing 或 Chip Test)是两个重要的概念,它们分别代表了不同阶段的测试和验证过程。下面详细解释这两者的区别: CP(Chip Probing …

人机融合智能中的系统与还原

一、人工智能中的系统与还原 人工智能(AI)作为现代科技的重要组成部分和应用涉及多个学领域,包括计算机科学、学、神经科学等人工智能的研究中系统的概念至关重要。系统不仅仅是简单的组件集合,更多地体现为各个部分之间的相互作用…

这可能是2024年看过最全最详细的Java面试八股文

前言: 本文收集整理了各大厂常见面试题 N 道,你想要的这里都有内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈,希望大家都能找到…

010_SSH_Sqlserver多媒体技术与应用课程网(学习资料+前台考试)_lwplus87

目 录 摘 要... III Abstract V 第1章 概述... 1 1.1 课题背景... 1 1.2 课题意义... 2 1.3开发工具及技术... 2 1.3.1 MyEclipse. 2 1.3.2 Tomcat 2 1.3.3 SqlServer 3 1.3.4 JSP. 3 1.4国内外现状... 4 第2章 可行性分析及总体设计原则... 5 2.1可行性分析…

免费数字孪生平台打造物流数据可视化大屏,助力消费跑出加速度

在当今快速发展的时代,物流行业已成为连接生产与消费的重要桥梁。2024年,中国物流行业再次刷新纪录,8月13日,我国第1000亿件快递已顺利产生,比2023年提前了71天,这一速度令人惊叹。而在这背后,物…

Navict15 过期处理删除注册表

1.winR 注册表输入regedit 2.搜索输入HKEY_CURRENT_USER\Software\PremiumSoft\Navicat 3.输入HKEY_CURRENT_USER\Software\Classes\CLSID,找到只有一个info的,把包含info的这个文件夹删了。

计算机网络:运输层 —— TCP/IP运输层中的两个重要协议

文章目录 TCP 协议工作方式建立连接(三次握手)释放连接(四次挥手) 首部格式 UDP 协议首部格式适用场景 TCP 与 UDP 的对比无连接的UDP和面向连接的TCP对单播、多播和广播的支持情况对应用层报文的处理对数据传输可靠性的支持情况U…

OpenCV4.8 开发实战系列专栏之 13 - 图像翻转(Image Flip)

大家好,欢迎大家学习OpenCV4.8 开发实战专栏,长期更新,不断分享源码。 专栏代码全部基于C 与Python双语演示,专栏答疑群 请联系微信 OpenCVXueTang_Asst 本文关键知识点:图像翻转(Image Flip) 图像翻转的本质像素映…