【大数据面试题】29 Kafka 为什么读写那么快?

一步一个脚印,一天一道面试题。

Kafka 是热门的消息队列组件,在大数据中十分常见。Kafka是其成为热门组件的重要原因。
那么就来聊聊,Kafka 为什么那么快。

批量读写

  1. 生产端批处理:Kafka 允许生产端 Producer 批量处理。例如消息可以聚合在一起,一起发送。能节省每次发起任务时间。
    举例:丢垃圾的时候不是有一点垃圾就下楼扔,而是先放垃圾桶,满了再下楼扔。这样我们能节省反复上下楼的时间)
  2. 消费端批处理:与第 1 条类似。

零拷贝

常规的数据传输,是从系统磁盘,用户空间,内核空间,网络直接复制传输。多次的复制会消耗更多的CPU,内存资源。

Kafka 的零拷贝就是省去用户空间,减少数据的复制次数。
通过直接 sendFile 系统调用,直接从磁盘文件发送至网络接口,跳过用户态,减少复制次数。

以图片举例说明常规拷贝和零拷贝的区别:
常规数据传输
数一下图片里的箭头 →,有 4 次数据的传输复制。
常规拷贝
零拷贝数据传输
数一下图片里的箭头 →,仅有 2 次数据的传输复制。
零拷贝
复制的次数少了,自然的速度就快很多。

其它加速因素

  • 顺序写磁盘: Kafka 的消息是以分区为单位,顺序写磁盘。对比随机写入,不需要磁盘寻址,节省时间。磁盘寻址尤其在机械硬盘中占用时间多,是最费时间的部分。
  • 高效消息存储: Kafka 有特殊的数据结构来存储日志,存得更少,读得更快。(有机会后面再拓展)

我是近未来,祝你变得更强!

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值