Kafka高性能核心——pageCache与zeroCopy

PageCache与ZeroCopy

PageCache即页面缓存,它是操作系统实现的一种主要的磁盘缓存,它的目的就是减少对磁盘IO的操作。
具体来说,就是把磁盘中的数据缓存到内存里,然后把对磁盘的访问变成对内存的访问。
目前很多一些主流的框架或者架构设计,为了弥补性能上的差异,基本上都是用“磁盘”做缓存的,也就是说可以把所有内存当做磁盘用。
相信很多做过高并发项目的一些小伙伴们都会知道,我们一开始最早期可能会读关系型数据库,关系型数据库一旦压力大了,大家可能就会想到的策略是分库分表,分库分表也可能不满足我们的需求,就有可能会用一些非关系型数据库,或者remote cache,比如redis这种,那么像一些入口级别流量非常非常高的话,可能你的redis都扛不住,这个时候我们就可能借助于内存。

比如在我们的磁盘中有一个1.txt,我们想把它读到应用程序里,那对于OS级别做了哪些事情呢?

当一个进程准备去读取磁盘上内容的时候,操作系统首先不会去准备读磁盘文件,而是先检查在PageCache中是否存在,如果存在那就说明是命中了,直接把数据返回,这样就减少对物理盘的IO操作。如果缓存页不存在,那么这时候才会发起一次IO请求,然后把读取到的数据先加入缓存页,最后再返回给进程,这个也可以理解为就是一个空间换时间。

读数据是这样做的,那么如果是写呢?
如果有一个文件,我想写入磁盘中,那同样操作系统也会检查这个数据是否存在缓存页中,如果不存在它就会在缓存页中添加相应的页,然后把数据写到页里面,然后修改过的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值