16、kafka是如何做到高效读写
1)Kafka 本身是分布式集群,可以采用分区技术,并行度高
2)读数据采用稀疏索引,可以快速定位要消费的数据
3)顺序写磁盘
4)页缓存 + 零拷贝技术
17、Kafka集群中数据的存储是按照什么方式存储的?
Topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是Producer生产的数据。Producer生产的数据会被不断追加到该log文件末端,为防止log文件过大导致数据定位效率低下,Kafka采取了分片和索引机制,将每个partition分为多个segment。每个segment包括:“.index”文件、“.log”文件和.timeindex等文件。这些文件位于一个文件夹下,该文件夹的命名规则为:topic名称+分区序号,例如:first-0。
18、kafka中是如何快速定位到一个offset的。
在Kafka中,可以使用索引文件(index file)和日志文件(log file)的组合来快速定位一个偏移量(offset)。
19、简述kafka中的数据清理策略。
Kafka 中提供的日志清理策略有 delete 和 compact 两种。
1)delete 日志删除:将过期数据删除
log.cleanup.policy = delete 所有数据启用删除策略
(1)基于时间:默认打开。以 segment 中所有记录中的最大时间戳作为该文件时间戳。
(2)基于大小:默认关闭。超过设置的所有日志总大小,删除最早的 segment
compact日志压缩:对于相同key的不同value值,只保留最后一个版本。
log.cleanup.policy = compact 所有数据启用压缩策略
20、消费者组和分区数之间的关系是怎样的?
一个消费者组中的多个消费者,可以看作一个整体,一个组内的多个消费者是不可能去消费同一个分区的数据的,要不然就消费重复了。
21、kafka如何知道哪个消费者消费哪个分区?
生产者把数据发送给各个分区,每个broker节点都有一个coordinator(协调器),消费者组对分区进行消费,到底哪个消费者消费哪个分区呢?首先groupId对50取模,看最后的结果是哪个分区节点,假如是1分区,那么1分区的协调器就是本次消费者组的老大,消费者纷纷向该协调器进行注册,协调器从中随机选择一个消费者作为本次消费的Leader,然后把本次消费的具体情况发送给Leader,让其制定一个消费计划(就是哪个消费者消费哪个分区),然后Leader发送给协调器,协调器再进行群发,将计划公布,各个消费者按照这个计划进行消费。
22、kafka消费者的消费分区策略有哪些,默认是个?
Range、RoundRobin(轮训)、Sticky(粘性)、CooperativeSticky(配合的粘性)。 默认是range+CooperativeSticky
23、kafka中的消费者,他们的偏移量存储在哪里?
从0.9版本开始,consumer默认将offset保存在Kafka一个内置的topic中,该topic为__consumer_offsets
Kafka0.9版本之前,consumer默认将offset 保存在Zookeeper中。
kafka0.11 版本 高于 kafka 0.9
24、kafka中数据挤压太多,怎么办?(提高消费者的效率)
提高消费者一次拉取得的数据量得大小,增大一次拉取得记录数得大小,也可以增加分区数和消费者
25、Kafka中的数据在消费过程中,有漏消费和重复消费的情况,怎么办?
如果想完成Consumer端的精准一次性消费,那么需要Kafka消费端将消费过程和提交offset 过程做原子绑定。此时我们需要将Kafka的offset保存到支持事务的自定义介质(比 如MySQL)。这部分知识会在后续项目部分涉及。
26、kafka中的数据已经消费过的数据,是否可以再次消费?怎么做?
可以,指定其他消费者消费指定offest
kafka30题面试必问
最新推荐文章于 2024-11-06 00:13:23 发布
本文概述了Kafka的高效特性,如分区、稀疏索引、顺序写入和数据清理策略。讲解了数据存储机制、offset定位方法、消费者组与分区的关系以及处理漏消费和重复消费的策略。
摘要由CSDN通过智能技术生成