您的位置:首页 > 职场人生

Kafka32道经典面试题

2020-08-31 09:59 931 查看

1、Kafka 都有哪些特点?
高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。
可扩展性:kafka集群支持热扩展
持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
高并发:支持数千个客户端同时读写

2、请简述下你在哪些场景下会选择 Kafka?
日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、HBase、Solr等。

消息系统:解耦和生产者和消费者、缓存消息等。

用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。

运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。

流式处理:比如spark streaming和 Flink

3、Kafka 的设计架构你知道吗?


Kafka 架构分为以下几个部分
Producer :消息生产者,就是向 kafka broker 发消息的客户端。
Consumer:消息消费者,向 kafka broker 取消息的客户端。
Topic:可以理解为一个队列,一个 Topic 又分为一个或多个分区。
Consumer Group:这是 kafka 用来实现一个 topic 消息的广播(发给所有的 consumer)和单播(发给任意一个 consumer)的手段。一个 topic 可以有多个 Consumer Group。
Broker :一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个 topic。
Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker上,每个 partition 是一个有序的队列。partition 中的每条消息都会被分配一个有序的id(offset)。将消息发给 consumer,kafka 只保证按一个 partition 中的消息的顺序,不保证一个 topic 的整体(多个 partition 间)的顺序。
Offset:kafka 的存储文件都是按照 offset.kafka 来命名,用 offset 做名字的好处是方便查找。例如你想找位于 2049 的位置,只要找到 2048.kafka 的文件即可。当然 the first offset 就是 00000000000.kafka。

4、Kafka 分区的目的?
分区对于 Kafka 集群的好处是:实现负载均衡。分区对于消费者来说,可以提高并发度,提高效率。

5、你知道 Kafka 是如何做到消息的有序性?
kafka 中的每个 partition 中的消息在写入时都是有序的,而且消息带有offset偏移量,消费者按偏移量的顺序从前往后消费,从而保证了消息的顺序性。但是分区之间的消息是不保证有序的。

6、Kafka 的高可靠性是怎么实现的?
kafka通过分区的多副本机制来保证消息的可靠性1. 每个分区可以设置多个副本,这些副本分布在不同的broker上;2. 相同partition的多个副本能动态选举leader来对外服务和管理内部数据同步。这样,即使有broker出现故障,受影响的partition也会在其他broker上重新选举出新的leader来继续服务
Kafka 的分区多副本架构是 Kafka 可靠性保证的核心,把消息写入多个副本可以使 Kafka 在发生崩溃时仍能保证消息的持久性。

7、请谈一谈 Kafka 数据一致性原理
一致性就是说不论是老的 Leader 还是新选举的 Leader,Consumer 都能读到一样的数据。

8、ISR、OSR、AR 是什么?

9、LEO、HW、LSO、LW等分别代表什么

10、Kafka 在什么情况下会出现消息丢失?
生产者写入kafka时有可能会发生消息丢失,但这里有个生产者写入数据到kafka的可靠性策略 ack机制,当ack = 0 或者1 时,kafka有可能会丢失数据;当ack = -1时,kafka不会丢失数据
ack =0
ack =1 有一个副本成功持久化
ack = -1 所有副本全部成功同步

in synchronized replication

11、怎么尽可能保证 Kafka 的可靠性

12、消费者和消费者组有什么关系?

13、Kafka 的每个分区只能被一个消费者线程,如何做到多个线程同时消费一个分区?

14、数据传输的事务有几种?

15、Kafka 消费者是否可以消费指定分区消息?

16、Kafka消息是采用Pull模式,还是Push模式?

17、Kafka 消息格式的演变清楚吗?

18、Kafka 偏移量的演变清楚吗?

19、Kafka 高效文件存储设计特点

20、Kafka创建Topic时如何将分区放置到不同的Broker中

21、Kafka新建的分区会在哪个目录下创建

22、谈一谈 Kafka 的再均衡

23、谈谈 Kafka 分区分配策略

24、Kafka Producer 是如何动态感知主题分区数变化的?

25、Kafka 是如何实现高吞吐率的?

26、Kafka 监控都有哪些?

27、如何为Kafka集群选择合适的Topics/Partitions数量

28、谈谈你对 Kafka 事务的了解?

29、谈谈你对 Kafka 幂等的了解?

30、Kafka 缺点?

31、Kafka 新旧消费者的区别

32、Kafka 分区数可以增加或减少吗?为什么?

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: