前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解析存储资源盘活系统的三种缓存模式

解析存储资源盘活系统的三种缓存模式

原创
作者头像
存储小白
发布2023-03-30 18:43:08
2650
发布2023-03-30 18:43:08
举报
文章被收录于专栏:存储知识存储知识

缓存,是利用局部性原理,将高频操作的数据存放到访问速度更快的介质中,后续读取相同数据时无需再访问慢速设备,从而可以显著降低操作延时,提高读写速度。局部性原理有两种:

  • 空间局部性:一个位置的数据被访问后,在不久的将来该位置附近的数据很有可能也被访问。
  • 时间局部性:一个位置的数据被访问后,在不久的将来该部分数据很有可能被多次访问。

计算机存储体系中的缓存有多种形态,包括硬件实现(如寄存器、CPU高速缓存)、软件实现(如文件系统的Page Cache)。离CPU越近的存储缓存,访问速度越快,每单位容量的成本越高,因此容量也越小。

  • 寄存器:寄存器是 CPU 内部用来暂时存放指令、数据、地址以及其他运行时所需信息的部件。
  • CPU高速缓存: L1/L2/L3 Cache作为高速缓存,保存最近被使用的指令和数据。
  • Page Cache: 磁盘中的数据必须先被读到内存中才能被CPU访问,为了避免每次读写文件时都访问磁盘,Linux文件系统使用Page Cache机制对文件中的数据进行缓存。

存储资源盘活系统的缓存:将内存作为底层磁盘的缓存,利用时间局部性原理,将最近读写的数据存放到内存中。对于HA卷,利用强一致性算法,实现多个节点的缓存同步,避免单节点故障后导致缓存数据丢失。本文重点介绍缓存的写模式。

写模式决定了收到写请求后,缓存和底层存储介质中数据的更新方式。以存储资源盘活系统HBlock为例,支持三种缓存模式:

缓存模式1:Write Back

写请求的数据更新到写缓存后,即可向客户端返回成功。每次写请求只需要更新内存,完成写操作的延时很低,从而可以实现较高的写速度。缓存中的数据由后台线程同步到底层磁盘,触发同步的时机有两种:数据在缓存中的存放时间超过阈值、缓存中待同步的数据量超过阈值。后台线程在同步之前,会对缓存中数据进行合并,将客户端的小IO转换为对底层磁盘的大IO,避免以低效的方式访问磁盘,进一步提升了客户端的写性能。

这种模式的缺点是缓存中存在未落盘的数据时,若节点发生断电、宕机等故障,会导致缓存中的数据丢失。

缓存模式2:Write Through

写请求的数据更新到写缓存后,还需要等待数据被成功写入到底层磁盘后,才能向客户端返回成功。由于保证了缓存和底层磁盘中数据的一致性,因此不存在节点发生故障后数据丢失的问题。后续的读操作可以直接从缓存获取到数据,因此能为客户端提供较高的读性能。

这种模式的缺点是每次写请求的耗时较长,因此不适合于频繁写入的应用场景。

缓存模式3:Write Around

写请求的数据直接写入到底层磁盘后,向客户端返回成功。数据不再更新到缓存中,因此可以减少内存占用,避免与系统中其他服务争抢宝贵的内存资源。与Write Through模式类似,每次写请求的数据均落盘,不存在节点发生故障后数据丢失的问题。

与Write Through模式相比,不再将数据存放到缓存,因此后续若收到读请求则需要访问底层磁盘,读操作的延时会变长。这种模式适合于对数据安全性要求较高、读操作较少的应用场景。

我们可以将三种缓存模式总结成下表:

Write Back

Write Through

Write Around

写性能

读性能

安全性

占用内存

综上对比,Write Back模式适用于对读写性能要求较高,但对数据的安全性要求相对较低的场景。Write Through模式适用于对数据的安全性要求较高,写少读多的场景。Write Around模式适用于对数据的安全性要求较高,且写入的数据极少会被读取的场景。为了同时得到较高的读写性能与较好的数据安全性,可以使用Write Back模式,并启用卷的高可用特性,即可实现多节点之间的缓存同步,避免单节点故障导致的缓存数据丢失。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档