Kafka面试题

1.Kafka定义

Kafka是分布式的发布订阅消息系统,可划分的,冗余备份的持久性日志服务

2.Kafka的作用
  • 缓冲削峰
  • 解耦可扩展
  • 异步
  • 冗余(一对多的发送消息)
  • 健壮性(堆积请求,消费者可以短时间挂掉)
3.Kafka中ISR,AR表示什么?ISR伸缩是什么?
  • AR=ISR+OSR

  • ISR:副本同步队列

  • AR:所有副本

ISR由leader维护,如果其中一个副本的同步时间延迟与数据延迟达到一个阈值就会被踢出ISR,进入OSR,如果开启Unclean这个参数,副本leade挂掉就会从AR中选取新的leader,但这样就会有副本数据同步不一致的问题

4.kafka的数据同步(确认机制)
  • 0代表生产者发送了即commit
  • 1代表需要Leader确认收到
  • -1代表需要Leader及所有的副本都收到
5.kafka为什么快
  • 磁盘顺序写比内存随机读快
  • 0 Copy技术
  • 批量处理,合并小请求
  • pull模式,考虑消费者端的处理能力
  • PageCache缓存
6.优化打入速度
  • 增加线程
  • 增加producer实例
  • 增加分区
  • 增大副本同步线程
7.kafka的Message格式

固定的Header:magic (attribute:当magic=1) crc

不定长的Body:键值对

8.Kafka为什么不支持读写分离
  • 数据不一致
  • 数据同步带来的消耗
9.的偏移量是Offset+1
10.Kafka数据积压(限流)
  • 提高SparkStreaming的消费条数(maxperPartion)
  • 提高Kafka发送指定消费的条数
  • SparkStreaming的反压机制(动态设置参数,令牌桶算法)
11.Kafka数据丢失

​ 设置消息确认为-1,手动维护偏移量

12.Kafka数据重复

使用Redis进行数据去重

13.Kafka实现顺序消费(只能保证单分区)
  • 单topic,单分区(这种方式不使用,降低的高吞吐)

  • 重试机制会导致顺序的错乱,所以开启幂等性机制,比较Producer维护的序号和Broker维护的序号

14.Kafka的Leader选举
  • Broker的Leader(谁先连接上zookeeper)
  • 副本Leader(从AR中顺序选择一个在ISR中的副本)
  • 消息组的Leader(从维护的HashMap中取一个)
15.Kafka实现延迟队列

基于时间轮

image.png

若时间轮的tickMs=1ms,wheelSize=20,那么可以计算得出interval为20ms。初始情况下表盘指针currentTime指向时间格0,此时有一个定时为2ms的任务插入进来会存放到时间格为2的TimerTaskList中。随着时间的不断推移,指针currentTime不断向前推进,过了2ms之后,当到达时间格2时,就需要将时间格2所对应的TimeTaskList中的任务做相应的到期操作。此时若又有一个定时为8ms的任务插入进来,则会存放到时间格10中,currentTime再过8ms后会指向时间格10。如果同时有一个定时为19ms的任务插入进来怎么办?新来的TimerTaskEntry会复用原来的TimerTaskList,所以它会插入到原本已经到期的时间格1中。总之,整个时间轮的总体跨度是不变的,随着指针currentTime的不断推进,当前时间轮所能处理的时间段也在不断后移,总体时间范围在currentTime和currentTime+interval之间。

如果此时有个定时为350ms的任务该如何处理?直接扩充wheelSize的大小么?Kafka中不乏几万甚至几十万毫秒的定时任务,这个wheelSize的扩充没有底线,就算将所有的定时任务的到期时间都设定一个上限,比如100万毫秒,那么这个wheelSize为100万毫秒的时间轮不仅占用很大的内存空间,而且效率也会拉低。Kafka为此引入了层级时间轮的概念,当任务的到期时间超过了当前时间轮所表示的时间范围时,就会尝试添加到上层时间轮中。类似于钟表

16.Kafka事务
  • 保证幂等性
  • 设置一个TranscationId,保证只有一个生产者在处理事务
  • Producer5个事务方法:initTransactions()方法用来初始化事务;beginTransaction()方法用来开启事务;sendOffsetsToTransaction()方法为消费者提供在事务内的位移提交的操作;commitTransaction()方法用来提交事务;abortTransaction()方法用来中止事务,类似于事务回滚
  • 消费者端可以设置事务可见级别isolation.level
  • 消费者会缓存消息,直到生产者端提交事务,然后再发送送应用处理
17.O COPY技术

传统发送方式

image.png

Kafka的发送方式


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358