Kafka面试题(总结26面试题)

1.kafka是什么?

kafka是一种高吞吐量、分布式、基于发布/订阅的消息系统,最初由Linkedin公司开发,使用Scala语言编写,目前是Apache的开源项目。

1.broker:kafka服务器,负责消息存储和转发

2.topic:消息类别,kafka按照topic来分类消息

3.partition:topic的分区,一个topic可以包含多个partition,topic消息保存在各个partition上

4.offset:消息在日志中的位置,可以理解是消息在partition上偏印量,也是代表该消息的唯一序号

5.producer:消息生产者

6.consumer:消息消费者

7.consumer group:消息者分组,每个consumer必须属于一个group

8.zookeeper:保存着集群broker、topic、partition等meta数据;另外,还负责broker故障发生,partition leader选举,负载均衡等功能

2.partition的数据文件(offset,messagesize,data)

partition中的每条Message包含了以下三个属性:offset,messagesize,data,其中offset表示message在这个partition中的偏印量,offset不是该message在partition数据文件中的实际存储位置,而是逻辑上一个值,它唯一确定了partition中的一条message,可以认为offset是partition中message的id;messagesize表示消息内容data的大小;data为message的具体内容

3.数据文件分段segment(顺序读写、分段命令、二分查找)

kafka为每个分段后的数据文件建立了索引文件,文件名与数据文件的名字是一样的,只是文件扩展为.index。index文件中并没有数据文件中的每条message建立索引,而是采用了稀疏存储的方式,每隔一定字节得数据建立一条索引。这样避免了索引文件占用过多的空间,从而可以将索引文件保留在内存中

 

4.负载均衡(partition会均衡分布到不同broker上)

由于消息topic由多个partition组成,且partition会均衡发布到不同broker上,因此,为了有效利用broker集群的性能,提高消息的吞吐量,producer可以通过随机或者hash等方式,将消息平均发送到多个partition上,以实现负载均衡

 

5.批量发送

是提高消息吞吐量重要的方式,producer端可以在内存中合并多条消息后,以一次请求的方式发送了批量的消息给broker,从而大大减少broker存储消息的IO操作次数。但也一定程度上影响了消息的实时性,相当于以时延代价,换取更好的吞吐量

6.压缩(GZIP或Snappy)

producer端可以通过CZIP或Snappy格式对消息集合进行压缩。producer端进行压缩之后,在consumer端需要进行解压。压缩的好处就是减少传输的数据量,减轻对网络传输的压力࿰

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qinꦿ.๓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值