Kafka高效读写数据原理

Kafka能够实现高效的数据读写,主要是有下面一些原因:

顺序写磁盘

  当kafka接收到生产者传递过来的消息后,kafka是直接将数据追加到log文件中的,属于顺序写文件,对于同样的磁盘来说顺序写文件的效率要大大高于随机写文件。

应用Pagecache

  kafka将数据直接持久化到pagecache中,其实就是内存中,这样有几个优点:

  • I/O Scheduler可以将多个小块的写组装成大块的写操作,降低了I/O次数
  • 利用空闲内存(非JVM内存),这样可以减少JVM的GC操作
  • 消费者可以直接从pagecache中消费数据,如果生产和消费的速率相同,甚至可以不走磁盘来交换数据

  由于副本机制的存在,数据持久化到pagecache中也不用担心数据丢失。

零拷贝技术

在这里插入图片描述
  kafka需要将本地磁盘的数据通过网络发送给消费者,传统方式通过网络发送数据需要将文件先加载入内核态的pagecache中,然后加载入程序application cache中,程序决定将数据发送给哪台机器,将文件加载入socket cache中,然后将数据通过网卡发送出去。这种方式一个文件会被拷贝三份才能发送出去。
  零拷贝则是文件只需要经过pagecache就可以直接发送出去了。这样就极大的增加了发送数据的效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值