Kafka常见面试题(一)

1、Kafka 可以脱离 zookeeper 单独使用吗?为什么?

kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafka 的节点服务器。

2、kafka 有几种数据保留的策略?

kafka 有两种数据保存策略:基于过期时间和基于存储的消息大小。

3、什么情况会导致 kafka 运行变慢?

cpu 性能瓶颈
磁盘读写瓶颈
网络瓶颈

4、Kafka中的分区器、序列化器、拦截器的处理顺序是什么?

拦截器->序列化器->分区器

5、Kafka为什么不支持读写分离?

如果支持了读写分离,就意味着可能的数据不一致,或数据滞后。

这其实是分布式场景下的通用问题,因为我们知道CAP理论下,我们只能保证C(可用性)和A(一致性)取其一,如果支持读写分离,那其实对于一致性的要求可能就会有一定折扣,因为通常的场景下,副本之间都是通过同步来实现副本数据一致的,那同步过程中肯定会有时间的消耗。

Leader/Follower模型并没有规定Follower副本不可以对外提供读服务。很多框架都是允许这么做的,只是 Kafka最初为了避免不一致性的问题,而采用了让Leader统一提供服务的方式。不过,自Kafka 2.4之后,Kafka提供了有限度的读写分离,也就是说,Follower副本能够对外提供读服务。

6、Java Consumer 为什么采用单线程来获取消息?

首先,Java Consumer是双线程的设计。其中一个线程是用户主线程,负责获取消息;另一个线程是心跳线程,负责向Kafka汇报消费者存活情况。将心跳单独放入专属的线程,能够有效地规避因消息处理速度慢而被视为下线的“假死”情况。

单线程获取消息的设计能够避免阻塞式的消息获取方式。单线程轮询方式容易实现异步非阻塞式,这样便于将消费者扩展成支持实时流处理的操作算子。因为很多实时流处理操作算子都不能是阻塞式的。

另外一个可能的好处是,可以简化代码的开发。多线程交互的代码是非常容易出错的。


7、Kafa consumer 是否可以消费指定分区消息?

可以。Kafa consumer 消费消息时,向 broker 发出"fetch"请求去消费特定分区的消息,consumer
指定消息在日志中的偏移量(offset),就可以消费从这个位置开始的消息,customer 拥有
了 offset 的控制权,可以向后回滚去重新消费之前的消息,这是很有意义的


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

Kafka 遵循了一种大部分消息系统共同的传统的设计:producer 将消息推送到 broker,consumer 从 broker 拉取消息

9、Kafka中的ISR、AR代表什么?ISR的伸缩又指什么?

ISR:In-Sync Replicas 副本同步队列
AR:Assigned Replicas 所有副本
ISR是由leader维护的,follower从leader同步数据有一些延迟,如果延迟超过阈值就会把follower剔除出ISR, 存入OSR(Outof-Sync Replicas)列表,新加入的follower也会先存放在OSR中。AR=ISR+OSR。

10、kafka follower如何与leader同步数据?

Kafka的复制机制既不是完全的同步复制,也不是单纯的异步复制。完全同步复制要求All Alive Follower都复制完,这条消息才会被认为commit,这种复制方式极大的影响了吞吐率。而异步复制方式下,Follower异步的从Leader复制数据,数据只要被Leader写入log就被认为已经commit,这种情况下,如果leader挂掉,会丢失数据。

kafka使用ISR的方式很好的均衡了确保数据不丢失以及吞吐率。Follower可以批量的从Leader复制数据,而且Leader充分利用磁盘顺序读以及send file(zero copy)机制,这样极大的提高复制性能,内部批量写磁盘,大幅减少了Follower与Leader的消息量差。

#学习路径#
全部评论

相关推荐

04-09 20:11
已编辑
快手_Java(实习员工)
日期: 二面(4.9)岗位:后端开发实习生地点:北京背景:  双非科班、两段实习经历面试官全程微笑,体验非常好,除了中间我自己把自己引入坑之外都挺好1. 自我介绍,可以讲讲你学习和成长的经历,不仅限于大学期间(闲聊)2. 对于一个网盘设计,除了本地文件存储,还有其他方案吗?3. 现在有一万份简历,如果我想根据你的名字找到你的简历,有什么比较好的方案吗?(这里回答不知道怎么提到了ElasticSearch,后来问AI是能用ES实现,但是我没用过ES)4. 有用过ES吗?(没有)ES搜索的底层原理是怎么实现的知道吗?(??)5. ES和ClickHouse有什么区别呢?6. 你在大学期间还参与了哪些项目,可以介绍一下7. 问数学建模经历8. 不论是在实习期间还是你自己做项目期间,哪个项目是你觉得比较有趣的9. Kafka保证消息不丢失有做哪些设计?10. 刚才说消息确认可以等到所有的follwer都确认,但这会不会影响到性能?怎么去折中这个事情?11. 你自己在什么项目中有用过Kafka吗?12. Kafka里面怎么保证消息是有序的?13. Kafka本地磁盘存储耗尽了怎么办?14. 你在AutoMQ实习的一段时间对你有哪些帮助?在支持这么多云的情况下有哪些功能是需要适配的?15. 你的项目中用到了SSE,这个使用场景是什么?还有其他方式吗?WebSocket和SSE的区别是什么?16. 在自己的学习或工作中有用到AI吗?17. 自己做项目有遇到什么不符合预期的场景吗,怎么解决的?18. 你自己对后续的职业规划是怎么想的?19. 反问业务(电商 + AI),几轮面试(3-4轮)#万物心选#
查看18道真题和解析
点赞 评论 收藏
分享
04-11 19:52
西南大学 后端
查看28道真题和解析
点赞 评论 收藏
分享
评论
点赞
43
分享

创作者周榜

更多
牛客网
牛客企业服务