当前位置: 首页 > article >正文

Kafka面试题(五)--内含面试重点

文章目录

    • 1、简述kafka中的数据清理策略(面试重点)
    • 2、消费者组和分区数之间的关系是怎样的?
    • 3、kafka如何知道哪个消费者消费哪个分区?
    • 4、kafka消费者的消费分区策略有哪些,默认是什么?
    • 5、kafka中的消费者,他们的偏移量存储在哪里(偏移量存储机制)
    • 6、kafka中数据积压太多,怎么办?(提高消费者的吞吐量)(面试重点)
    • 7、Kafka中的数据在消费过程中,有漏消费和重复消费的情况,怎么办(面试重点)
    • 8、kafka中的数据已经消费过的数据,是否可以再次消费?怎么做?


1、简述kafka中的数据清理策略(面试重点)

Kafka 中提供的日志清理策略有 delete 和 compact 两种:

1、delete 日志删除:将过期数据删除,可以基于时间设置过期时间,默认是7天,也可以基于大小,默认是关闭
2、compact 日志压缩(合并的意思,不是真的压缩):对于相同key的不同value值,只保留最后一个版本,这种策略只适合特殊场景。

2、消费者组和分区数之间的关系是怎样的?

1、消费者组内每个消费者消费不同分区,一个分区不能由组内多个消费者消费
2、消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者

3、kafka如何知道哪个消费者消费哪个分区?

生产者把数据发送给各个分区,每个broker节点都有一个coordinator(消费者协调器),消费者组对分区进行消费,到底哪个消费者消费哪个分区呢?首先groupId对50取模,看最后的结果是哪个分区节点,假如是1分区,那么1分区的协调器就是本次消费者组的老大,消费者纷纷向该协调器进行注册,协调器从中随机选择一个消费者作为本次消费的Leader,然后把本次消费的具体情况发送给Leader,让其制定一个消费计划(就是哪个消费者消费哪个分区),然后Leader发送给协调器,协调器再进行群发,将计划公布,各个消费者按照这个计划进行消费。

4、kafka消费者的消费分区策略有哪些,默认是什么?

Kafka有四种主流的消费者分区分配策略:
Range、RoundRobin(轮询)、Sticky(粘性)、CooperativeSticky(配合的粘性),默认策略是Range + CooperativeSticky
每个消费者都会和消费者协调器保持心跳,默认是3s,一旦超过45秒没有响应,就会将该消费者移除,触发再平衡;或者消费者处理消息时长大于5分钟,也会触发再平衡。

5、kafka中的消费者,他们的偏移量存储在哪里(偏移量存储机制)

Kafka0.9版本之前,consumer默认将offset 保存在Zookeeper中
Kafka0.9版本之后,consumer默认将offset保存在Kafka一个内置的topic中,该topic为__consumer_offsets

6、kafka中数据积压太多,怎么办?(提高消费者的吞吐量)(面试重点)

如果是消费能力不足,则增加主题的分区数量,并且同时增大每个消费者组中的消费者数量,使得分区数=每个消费者组中的消费者数量
如果是数据处理不及时,则提高消费者每批拉取的数据量。

7、Kafka中的数据在消费过程中,有漏消费和重复消费的情况,怎么办(面试重点)

需要先了解两个概念:

重复消费:已经消费了数据,但是 offset 没提交。(自动提交 offset引起的)
漏消费:先提交 offset 后消费,有可能会造成数据的漏消费。(手动提交 offset 引起的)

需要将Kafka消费端的消费过程与提交offset 过程做原子绑定。此时我们需要将Kafka的offset提交到支持事务的自定义介质(比如MySQL)。

8、kafka中的数据已经消费过的数据,是否可以再次消费?怎么做?

java代码中,有一个非常重要的方法 seek,可以指定 offset 进行消费,其中需要指定需要消费的主题,分区以及偏移量


http://www.kler.cn/a/414311.html

相关文章:

  • 深度学习:代码预训练模型
  • Golang项目:实现生产者消费者模式
  • uniapp 安卓和ios震动方法,支持息屏和后台震动,ios和安卓均通过测试
  • 数据结构与算法(排序算法)
  • STM32-C语言基础知识
  • TheadLocal出现的内存泄漏具体泄漏的是什么?弱引用在里面有什么作用?什么情景什么问题?
  • 水母形状电池:助力机器人性能提升
  • 【西瓜书】决策树
  • 网络空间安全之一个WH的超前沿全栈技术深入学习之路(13-2)白帽必经之路——如何用Metasploit 渗透到她的心才不会让我释怀
  • 力扣刷题--42.接雨水【图文详解|超级详细】
  • JAVA项目-------医院挂号系统
  • 鸿蒙征文|鸿蒙技术分享:使用到的开发框架和技术概览
  • 一些k8s和docker的命令
  • javaweb-day03-前端零碎
  • golang 实现比特币内核:如何接入 RPC 后端获得特定交易的二进制数据
  • wxFormBuilder:可视化设计、学习wxWidgets自带UI控件的好工具
  • ML 系列:第 32节 — 机器学习中的统计简介
  • 33 基于单片机的智能窗帘控制系统
  • 分布式链路追踪系统
  • elasticsearch单节点模式部署