关于kafka-几道面试题

打印 上一主题 下一主题

主题 894|帖子 894|积分 2682

目次

1、kafka是如何做到高效读写
2、Kafka集群中数据的存储是按照什么方式存储的?
3、简述kafka中的数据清理策略。
4、消费者组和分区数之间的关系是怎样的?
5、kafka如何知道哪个消费者消费哪个分区?
6、kafka消费者的消费分区策略有哪些,默认是个?



1、kafka是如何做到高效读写


1)Kafka 本身是分布式集群,可以采取分区技能,并行度高
2)读数据采取稀疏索引,可以快速定位要消费的数据。
3)顺序写磁盘
Kafka 的 producer 生产数据,要写入到 log 文件中,写的过程是不停追加到文件末端, 为顺序写。官网有数据表明,同样的磁盘,顺序写的速度远大于随机写。这与磁盘的机械布局有关,顺序写之以是快,是因为其省去了大量磁头寻址的时间。
4)页缓存 + 零拷贝技能
零拷贝:Kafka的数据加工处置处罚操纵交由Kafka生产者和Kafka消费者处置处罚。Kafka Broker应用层不关心存储的数据,以是就不消 走应用层,传输服从高
PageCache页缓存:Kafka重度依靠底层操纵系统提供的PageCache功 能。当上层有写操纵时,操纵系统只是将数据写入 PageCache。当读操纵发生时,先从PageCache中查找,假如找不到,再去磁盘中读取。现实上PageCache是把尽大概多的空闲内存都当做了磁盘缓存来利用


2、Kafka集群中数据的存储是按照什么方式存储的?


每个partition对应于一个log文件,该log文件中存储的就是Producer生产的数据。Producer生产的数据会被不断追加到该log文件末端。每个partition分为多个segment。每个segment包括:".index"文件、".log"文件和".timeindex"等文件。
log:日志文件
index:记载偏移量索引的文件
timeindex:记载时间戳索引的文件


3、简述kafka中的数据清理策略。

1)delete 日志删除:将过期数据删除
log.cleanup.policy = delete 所有数据启用删除策略
(1)基于时间:默认打开。以 segment 中所有记载中的最大时间戳作为该文件时间戳。
(2)基于巨细:默认关闭。超过设置的所有日志总巨细,删除最早的 segment。
假如一个 segment 中有一部门数据过期,一部门没有过期的情况下:

2)compact 日志压缩(合并的意思,不是真的压缩)

compact日志压缩:对于类似key的不同value值,只保存最后一个版本。


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

消费者组,由多个consumer组成。形成一个消费者组的条件,使所有消费者的groupid类似。
• 消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费。
• 消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者


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


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


6、kafka消费者的消费分区策略有哪些,默认是个?

1)Range 以及再平衡 (默认)

2)RoundRobin(轮询) 以及再平衡

3)Sticky 以及再平衡

4)CooperativeSticky 的解释【新的kafka中刚添加的策略】

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

三尺非寒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表