kafka的面试问题

image.png

image.png

image.png
image.png

kaka的特点
1 kafka主要做分布式消息处理平台,吞吐量非常的高,但是有发布订阅的功能,所有可以
作为消息队列处理
2 并不保证消息有序,保证topic中某个partition的消息有序,不同的partition不保证
消息有序,其他的mq保证先进先出
3 kafka提供了offset的管理,就是在日志文件中记录,如果不触发清理的机制,数据一致存在,可以重复消费,其他的mq消息消费后会被删除

kafka吞吐量大

image.png

parition机制实现同步发送机制
数据存入的时候会被压缩,批量发送接收节省网络传输的时间

kafka的底层原理之日志

image.png

image.png

image.png

每一条消息的组成结构


image.png

image.png

磁盘顺序读写有时候比内存读写快10-100倍有可能
image.png

image.png

image.png

image.png

image.png

image.png
image.png

当日志文件达到阈值的情况下,会分成新的segement

kafka零拷贝

image.png

使用了sendFile机制


image.png

使用这种机制把经过应用程序上下文切换去掉,
四步读取内容切换成2步骤
直接从内存缓冲区读取内容

消费者和消费者组

image.png

一个partition不能被多个消费者消费

producer客户端

image.png

会启动2个线程
1 守护线程
2 发送线程 网守护线程追加队列,由守护线程发送消息


image.png

Kafka消息发送流程

1. 简单流程概述

image

  A. 流程描述

a. producer先从zookeeper的"/brokers/.../state"节点找到该partition的leader
    b. producer将消息发送给该leader
    c. leader将消息写入到本地的log
    d. follower从leader拉取消息,写入本地的log后向leader发送ack
    e. leader收到ISR中的replica的ack后,增加HW(high watermark,最后commit的offset)并向producer发送ACK。

2. 消息发送的方式

Kafka的Producer发送消息采用的是异步发送的方式,且在新版的Kafka ApI中只有异步的发送方式。

但是可以通过异步发送的API达到同步的效果。

3. Kafka发送消息的具体流程

image

在消息发送过程中,涉及到两个线程,以及一个线程共享变量-RecordAccumulator.

两个线程:

一是主线程,负责将消息进行封装和加工发送给消息中间件(RecordAccumulator)

二是send线程,负责从消息中间件中拉取数据发送到主题(Topic)的对应分区(Partition)

A. 流程描述

main线程

a. 生产将要发送的数据封装成ProducerRecord对象,目的是发送到消息中间件

b. 中间要经过拦截器列表、序列化器和分区器将消息发送到消息中间件

c. RecordAccumulator中有多个队列,与topic的分区相对应。消息发送时直接发送到分区对应的RecordAccumulator队列中

sender线程

d. 当RecordAccumulator中攒够一批数据后,即达到指定量的数据之后,Sender线程将这一批数据拉取并发送给Topic。

控制参数:batch.size=>只有数据积累到batch.size之后,sender才会发送数据。

e. 同时,如果RecordAccumulator中队列迟迟到不到指定量的数据时,会等到一定时长时发送。

控制参数:linger.ms=>如果数据迟迟未达到batch.size,sender等待linger.time之后就会发送数据

4. Kafka的重试机制

image

消息的重试的实现需要在API的send方法中完成回调函数,回调函数会在producer收到ack时调用。

回调函数为异步调用,相当于另一个线程去实现。

该方法有两个参数,分别是RecordMetadata和Exception。

如果Exception为空,说明消息发送成功,如果Exception不为空,说明消息发送失败。

在回调函数中除了记录日之外,基本不能实现其他有意义的事情。

注意:消息发送失败会自动重试,不需要我们在回调函数中手动重试。

A. 流程描述

a. sender线程发送数据到Kafka Server,当Kafka处理数据结束后,会判断数据是否写入成功。

b. 如果数据处理成功,则返回给Producer相关RecordMetadata和Exception,此时Exception为空

c. 如果数据处理失败,则再次判定是否可以进行重发消息。

d. 如果消息可以重试,则再次放入到RecordAcumulater,进行消息的重发。

e. 如果消息不可进行重试,则将消息返回给Producer相关的RecordMetadata和Exception,此时Exception不为空。

kafka消息有序性的处理

image.png

单topic单partition 影响吞吐量和消费者数量
业务有序:订单系统,用户行为追踪(userID offset的前后顺序来区分用户行为的前后)

kafka topic的删除

image.png

在创建topic的时候会在zookeeper创建节点变化的监听器和气筒删除topic的线程
,当执行删除命令的时候,会添加节点/admin/delete_topics/topic_name,触发了节点变化监听器,此时阻塞并等待的删除线程会被唤醒,执行删除topic的操作


image.png

实际环境中,删除前最好停掉kafka的服务

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

推荐阅读更多精彩内容