上周客串了一下面试官,在这里就简单记录一下期间我问到的一些关于 Kafka 的面试题目,这些都是我平时在学习 Kafka 的一些总结要点。

  • 谈谈你对 kafka 的整体认识?

问这个问题主要是想知道面试者对 Kafka 的整体认识如何,能够大致了解清楚面试者对 Kafka 的相关概念的熟悉程度,比如消息、topic、partition、replica、offset、重平衡、leader/follower、ISR 等等。

  • 谈谈 Kafka 吞吐量为何如此高?

多分区、batch send、kafka Reator 网络模型、pagecache、sendfile 零拷贝、数据压缩。

  • 谈谈你对生产者储水池机制的理解

sender 线程工作机制、ByteBuffer 缓冲区的作用等等:

  • 如何提高kafka吞吐量?

生产端调整 batch.size、linger.ms 参数,以及主题分区数合理分配等。

  • 生产者producer是线程安全的吗?多线程实例还是单线程实例优缺点?

  • 消费者 consumer 是线程安全的吗?多线程实例、单线程实例、单 consumer + 多 worker 线程的优缺点?

  • 消息拉取时,什么情况下会造成消息重复消费?谈谈你对位移提交的理解?

理解消息交付语义:

最多一次(atmostonce):消息可能丢失也可能被处理,但最多只会被处理一次;

至少一次(atleastonce):消息不会丢失,但可能被处理多次;

精确一次(exactlyonce):消息被处理且只会被处理一次。

假若消费者在消费前提交位移,那么就是“最多一次”,若在消费后提交位移,那么就是“最少一次”,如果能够保证消费和提交位移同在一个事务中执行,就可保证“精确一次”。__consumer_offsets的一些理解。

  • 什么时候会产生消费组重平衡以及重平衡会涉及到哪些相关参数、频繁重平衡会造成哪些后果?

消费组成员变更、主题数量变更、订阅信息变更;session.timeout.ms、max.poll.interval.ms、hearbeat.interval.ms;

相关文章:Kafka重平衡机制

  • kafka默认不支持自动分区重分配,那么如果让你来执行分区重分配,有哪几个步骤,以及在重分配过程中kafka会有哪些动作?

RAR、OAR、AR、RAR-OAR、OAR-RAR 相关概念,

相关文章:记一次 Kafka 线上扩容Kafka 分区重分配源码分析

  • 谈谈你对 Preferred leader 选举的理解?

在 broker 挂掉之后,分区 leader 会变更,久而久之就会变得不均衡,Kafka 默认序号最小的副本为 Preferred leader,在 broker 重启回来后,Kafka 会重新调整分区的 Preferred leader 成为 leader,Preferred leader 选举分为手动选举和自动选举,涉及参数 auto.leader.rebalance.enable,还有个默认允许 10% 不均衡策略等等。

  • 谈谈你对 ISR 副本同步的理解?ISR副本同步的缺陷有哪些?

相关文章:Kafka ISR 副本同步机制

  • 谈谈你对水印备份机制的理解?LEO 更新机制、HW 更新机制?

相关文章:图解:Kafka 水印备份机制

  • 水印备份机制的一些缺陷?数据丢失、数据离散?如何解决的(leader epoch)

相关文章:图解:Kafka 水印备份机制

  • 谈谈你对 controller 机制的理解?controller 主要有哪些功能?

更新集群元数据信息、创建主题、删除主题、分区重分配、preferred leader 副本选举、主题分区扩展、broker 加入集群、broker 崩溃、受控关闭、controller leader 选举。

  • Kafka 的日志存储机制?

每个分区拥有单独的日志(partition log)、顺序写、到一定大小分成日志段文件(log segment file)、每个 log 文件对应一个索引文件(.index .timeindex)等等。

  • Kafka 分区数越多性能就越好吗?为什么?

我的理解:

  1. 每个分区数都对应一个 log 文件,log 文件是顺序写的,但如果有非常多分区同时刷盘,就会变相成乱序写了,我猜想这也是为什么 RocketMQ 一个 broker 只会拥有一个 CommitLog 的原因之一吧;
  2. 客户端会为每个分区调用一条线程处理,多线程并发地处理分区消息,分区越多,意味着处理的线程数也就越多,到一定程度后,会造成线程切换开销大;
  3. 其中一个 broker 挂掉后,如果此时分区特别多,Kafka 分区 leader 重新选举的时间大大增加;
  4. 每个分区对应都有文件句柄,分区越多,系统文件句柄就越多;
  5. 客户端在会为每个分区分配一定的缓冲区,如果分区过多,分配的内存也越大。

    更多精彩文章请关注作者维护的公众号「后端进阶」,这是一个专注后端相关技术的公众号。
    关注公众号并回复「后端」免费领取后端相关电子书籍。
    欢迎分享,转载请保留出处。

关于 Kafka 的一些面试题目的更多相关文章

  1. 2020阿里Java面试题目大汇总,看看你离阿里还有多远,附答案!

    前言 首先说一下情况,我大概我是从去年12月份开始看书学习,到今年的6月份,一直学到看大家的面经基本上百分之90以上都会,我就在5月份开始投简历,边面试边补充基础知识等.也是有些辛苦.终于是在前不久拿 ...

  2. HTML/CS3相关面试题目

    一.HTML/CS3基本面试题目. 1. 常用那几种浏览器测试? 1.1浏览器:IE,Chrome(谷歌),FireFox(火狐),Safari(苹果计算机的最新操作系统Mac OS X中的浏览器,使 ...

  3. PHP面试题目搜集

    搜集这些题目是想在学习PHP方面知识有更感性的认识,单纯看书的话会很容易看后就忘记. 曾经看过数据结构.设计模式.HTTP等方面的书籍,但是基本看完后就是看完了,没有然后了,随着时间的推移,也就渐渐忘 ...

  4. 总结CSS面试题目的考察点及常见布局问题整理

    整理网上流传的若干份面试题目,突发奇想,总结关于CSS面试题目的考察点,发现问题大多围绕几个属性和几种题目,水平有限,仅供参考. 写这个博文内心有种莫名奇妙的自我谴责感,实在不应该把面试层叠样式“应试 ...

  5. 【转】asp.net c# 网上搜集面试题目大全(附答案)

    asp.net c# 网上搜集面试题目大全(附答案) http://www.cnblogs.com/hndy/articles/2234188.html

  6. 2016年Web前端面试题目汇总

    转载: 2016年Web前端面试题目汇总 以下是收集一些面试中经常会遇到的经典面试题以及自己面试过程中未解决的问题,通过对知识的整理以及经验的总结,重新巩固自身的前端基础知识,如有错误或更好的答案,欢 ...

  7. 33条C#、.Net经典面试题目及答案

    33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如".NET中类和结构的区别"."ASP.NET页面之间传递值的几种方式? ...

  8. 33条C#、.Net经典面试题目及答案[zt]

    33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如“.NET中类和结构的区别”.“ASP.NET页面之间传递值的几种方式?”,并简明扼要的给出了答案,希 ...

  9. C/C++ 笔试、面试题目大汇总 转

    C/C++ 笔试.面试题目大汇总 这些东西有点烦,有点无聊.如果要去C++面试就看看吧.几年前网上搜索的.刚才看到,就整理一下,里面有些被我改了,感觉之前说的不对或不完善. 1.求下面函数的返回值( ...

随机推荐

  1. ArcGIS API For Javascript :如何动态生成 token 加载权限分配的地图服务?

    一.需求 项目中我们通常会遇到为外协团队.合作友商提供地图服务的需求,因此对地图服务的权限需要做出分配. 二.现状 主流的办法是用用户和角色来控制,通常使用代理方式和用户名密码的方式来实现. 三.思路 ...

  2. UML:类图关系总结

    UML类图几种关系的总结,泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Reali ...

  3. MySQL索引长度限制

    索引 TextField是不支持建立索引的 MySQL对索引字段长度有限制 innodb引擎的每个索引列长度限制为767字节(bytes),所有组成索引列的长度和不能大于3072字节 myisam引擎 ...

  4. [FPGA]Verilog实现JK触发器组成的8421BCD码十进制计数器

    目录 概述 电路分析 代码实现 参考文献 概述 本文以异步时序计数器为例,用Verilog实现以\(JK\)触发器组成的8421BCD码十进制异步计数器,并用ModelSim软件进行仿真验证. 电路分 ...

  5. SpringCloud Alibaba微服务实战 - 基础环境准备

    Springcloud Aibaba现在这么火,我一直想写个基于Springcloud Alibaba一步一步构建微服务架构的系列博客,终于下定决心从今天开始本系列文章的第一篇 - 基础环境准备. 该 ...

  6. 数据库求闭包,求最小函数依赖集,求候选码,判断模式分解是否为无损连接,3NF,BCNF

    1.说白话一点:闭包就是由一个属性直接或间接推导出的所有属性的集合. 例(1):   设有关系模式R(U,F),其中U={A,B,C,D,E,I},F={A→D,AB→E,BI→E,CD→I,E→C} ...

  7. yum运行报错:File "/usr/libexec/urlgrabber-ext-down", line 28

    [root@sdw1 bin]# vim /usr/libexec/urlgrabber-ext-down 再次执行yum命令,正常下载

  8. 4k图片爬取+中文乱码

    4k图片爬取+中文乱码 此案例有三种乱码解决方法,推荐第一种 4k图片爬取其实和普通图片爬取的过程是没有本质区别的 import requests import os from lxml import ...

  9. MySQL主从扩展知识

    6月29/7月2日任务 说明:这两天无新课,主要是扩充知识面注意:这两天的任务,需要回专贴.需要你们通过看这些东西总结成自己的心得. 不能照搬,必须要自己理解,能看多少就看多少,看不完也没有关系,但一 ...

  10. c 程序之 最大公约数 和 最小公倍数

    1.最大公约数     30  10  -> 10 #include<stdio.h> /* 求最大公约数 辗转相减法 36 --16 4 */ int main(){ int a, ...