将Page Cache发挥的淋漓尽致
|
“引入 Cache 层的目标是为了进步 Linux 操纵体系对磁盘会见的机能。Cache 层在内存中缓存了磁盘上的部门数据。当数据的哀求达到时,假如在 Cache 中存在该数据且是最新的,则直接将数据转达给用户措施,免去了对底层磁盘的操纵,进步了机能。Cache 层也正是磁盘 IOPS 为什么能打破 200 的首要缘故起因之一。在 Linux 的实现中,文件 Cache 分为两个层面,一是 Page Cache,另一个 Buffer Cache,每一个 Page Cache 包括多少 Buffer Cache。Page Cache 首要用来作为文件体系上的文件数据的缓存来用,尤其是针对当历程对文件有 read/write 操纵的时辰。Buffer Cache 则首要是计划用来在体系对块装备举办读写的时辰,对块举办数据缓存的体系来行使。 行使 Page Cache 的甜头: I/O Scheduler 会将持续的小块写组装成大块的物理写从而进步机能 I/O Scheduler 会实行将一些写操纵从头按次序排好,从而镌汰磁盘头的移动时刻 充实操作全部空闲内存(非 JVM 内存)。假如行使应用层 Cache(即 JVM 堆内存),会增进 GC 承担 读操纵可直接在 Page Cache 内举办。假如斲丧和出产速率相等,乃至不必要通过物理磁盘(直接通过 Page Cache)互换数据 假如历程重启,JVM 内的 Cache 会失效,但 Page Cache 如故可用 Broker 收到数据后,写磁盘时只是将数据写入 Page Cache,并不担保数据必然完全写入磁盘。从这一点看,也许会造成呆板宕机时,Page Cache 内的数据未写入磁盘从而造成数据丢失。可是这种丢失只产生在呆板断电等造成操纵体系不事变的场景,而这种场景完全可以由 Kafka 层面的 Replication 机制去办理。假如为了担保这种环境下数据不丢失而逼迫将 Page Cache 中的数据 Flush 到磁盘,反而会低落机能。也正因云云,Kafka 固然提供了 flush.messages 和 flush.ms 两个参数将 Page Cache 中的数据逼迫 Flush 到磁盘,可是 Kafka 并不提议行使。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

