16、kafka是如何做到高效读写
1,kafka本身是分布式集群,可以采用分区技术,并行度高
2,读数据采用稀疏索引,可以快速定位要消费的数据
3,顺写磁盘
4,页缓存+零拷贝技术
17、Kafka集群中数据的存储是按照什么方式存储的?
kafka采取了分片和索引机制,将每个partition分为多个segment。每个segment包括:”.index“文件、”.log“文件和”.timeindex等文件“。这些文件位于一个文件夹下
18、kafka中是如何快速定位到一个offset的。
kafka提供了seek方法,可以让我们从分区的固定位置开始消费。
入参为seek (TopicPartition topicPartition,offset offset)。前面我们讲过TopicPartition这个对象里有2个成员变量。一个是Topic,一个是partition。再结合offset,完全就可以定位到某个主题、某个分区的某个leader副本的active日志文件的某个位置。
offset是指分区的消息偏移量
19、简述kafka中的数据清理策略。
1,基于时间的数据清理
2,基于大小的数据清理
3,日志清理策略
kafka提供了两种日志清理策略:delete和compact
delete它会删除所有过期的数据,如果segment中既有过期数据也有未过期数据,kafka会保留未过期的数据,删除过期的部分,这样可以保证数据的完整性
4,日志清理的触发
20、消费者组和分区数之间的关系是怎样的?
消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费
21、kafka如何知道哪个消费者消费哪个分区?
groupld对五十取模,看最后结果是哪个分区节点,假如是1分区,那么1分区的协调器就是本次消费者组的老大,消费者向该协调器注册,协调器从中随机选择一个消费者作为本次消费的leader,然后让leader制作计划,哪个消费者消费哪个分区
22、kafka消费者的消费分区策略有哪些,默认是个?
kafka有四种主流的分区分配策略:Range、RoundRobin(轮询)、Sticky(粘性)、CooperativeSticky(配合的粘性)。
默认情况下,Kafka使用的分区分配策略是
RangeAssignor
,即范围分配策略。