kafka常见面试题

kafka是什么?

Kafka是LinkedIn开源的一款分布式消息发布和订阅系统,它的特点是高性能、高吞吐量。


kafka有什么特点?

(1)高吞吐、低延迟:kafka能达到每秒几十万的吞吐量,延迟只有几毫秒

(2)持久化:可持久化到普通磁盘上

(3)容错性:多副本

(4)横向扩展:kafka支持热扩展

(5)高并发:支持上千个客户端同时读写


kafka有哪些应用场景?

日志收集

消息系统

流式处理


kafka包含哪些组件?

broker

topic

partition

segement

offset

producer

consumer


kafka为什么这么快?

多分区

磁盘顺序写

页缓存

零拷贝

批量读写


kafka如何保证数据可靠性?

(1)副本数据同步策略

(2)ISR机制

ISR:同步副本,和leader保持同步的follower集合。如果follower长时间没有向leader同步数据,则该follower会被踢出ISR;当leader发生故障时,会从ISR中选举出一个新的leader。

(3)ack应答机制:

acks=0:不等待borker的ack, 直接返回,当borker故障时,有可能导致数据丢失。

acks=1:等待partition的leader返回ack

acks=-1(all):等待partition的leader和follower都落盘返回ack

(4)故障处理:LEO、HW

LEO:每个副本的最后一个Offset

HW:所有副本中最小的LEO

a、当follower发生故障时,follower将log文件高于HW的内容截断,从HW开始从leader同步

b、当leader发生故障时,会从ISR里选举一个follower作为新的leader,其它follower先将各自高于HW的部分截取掉,然后从新的leader同步数据


kafka能保证消息的顺序性吗?

kafka只能保证单个partition内部有序,kafka写数据时可以指定partition,将相同的key发送到同一个partition里,保证业务相同的key有序


kafka如何做性能优化?

Broker优化:

(1)配置多个不同磁盘的目录

(2)使用G1垃圾回收器

(3)网络、io操作线程数

(4)log文件刷盘时间间隔

(5)日志保留策略

Producer优化:

(1)调整写缓冲区大小

(2)消息压缩

(3)调整每批次发送request数:batch.size

(4)设置acks值

Consumer优化:

(1)调整消费的并发度

(2)每次拉取得消息大小


kafka 哪些分区策略?

写入分区策略:

(1)直接指定分区

(2)如果key不为null,则根据key的hash值选择分区

(3)如果key为null, 2.4版本之前采用的是轮训策略,2.4版本之后是采用的是黏性分区器(选择单个分区batch写满,再选择另一个)

(4)自定义分区器,实现org.apache.kafka.clients.producer.Partitioner接口


消费分区策略:

通过参数partition.assignment.strategy设置,可取值为:range、roundrobin


kafka底层存储机制?

一个partition对应一个目录,可以包含很多segment(默认大小为500M),每个segment包含两个文件:.log结尾的数据文件, .index结尾的索引文件。如:

0000000.log

0000000.index



推荐阅读

自我介绍

hr常问的几道面试题

JVM面试题,看这一篇就够了?

Mysql面试题,看这一篇就够了?

Redis常见面试题

HashMap常考的几个问题

Java8 有哪些新特性


更多面试题尽在“BAT笔试面试”公众号


加小编微信(备注:java)

拉你入“java学习交流群”


更多精选文章
标签: kafka、leader、follower、hw、partition
一个创业中的苦逼程序员
笔试题


刷题


简历模板


AI算法


大数据


内推


推荐阅读:
阿里巴巴笔试面试大全
腾讯笔试面试大全
百度笔试面试大全
今日头条笔试面试大全
网易笔试面试大全
Google笔试面试大全
更多笔试面试大全
隐藏