如何避免缓存击穿?超融合常驻缓存和多存储池方案对比

news2024/12/27 13:26:31

作者:SmartX 解决方案专家 钟锦锌

很多运维人员都知道,混合存储介质配置可能会带来“缓存击穿”的问题,尤其是大数据分析、数据仓库等需要频繁访问“冷数据”的应用场景,缓存击穿可能会更频繁地出现,影响业务运行。除了更换为全闪存储,目前一些主流厂商可通过“常驻缓存”和“多存储池”这两种技术方案来避免缓存击穿,帮助用户降低成本、提升业务连续性。这两种方案有什么区别?哪个方案更有优势?以下,我们将深入解读常驻缓存和多存储池如何避免缓存击穿,以及它们在成本、性能和管理方面的优劣势。如您有更多观点补充,欢迎在评论区留言。

重要结论

  • 常驻缓存和多存储池方案对缓存击穿的应对思路不同,实际效果也会有些差异。
  • 多存储池可确保全闪业务和混闪业务的充分隔离,在性能要求苛刻的业务场景可能更具优势,但这类场景在实际部署时更偏向采用性能相同但可用性更高的多集群(全闪集群+混闪集群)建设方案。
  • 多存储池方案整体优势不明显,而常驻缓存方案在成本上有较明显的优势,且管理更加简单、通用性更强。

点击下方链接下载《超融合技术原理与特性解析合集》,通过三册电子书,了解更多超融合技术知识与产品性能。

SmartX 超融合技术原理与特性解析合集(一)虚拟化与存储icon-default.png?t=O83Ahttps://mobile.smartx.com/p/7d3913

SmartX 超融合技术原理与特性解析合集(二)管理与运维icon-default.png?t=O83Ahttps://mobile.smartx.com/p/8cb16

SmartX 超融合技术原理与特性解析合集(三)全栈能力icon-default.png?t=O83Ahttps://mobile.smartx.com/p/73d10

为什么会出现缓存击穿?

在集中式存储、分布式存储或者超融合基础架构的使用场景中,很多用户都会配置混合存储介质。混合介质存储是指配置固态硬盘(SSD)作为缓存加速 I/O 读写、配置机械硬盘(HDD)作为容量空间,形成“层次存储”以降低存储的整体成本(相比全部使用 SSD 作为存储介质的全闪方案)。

其中,“层次存储”的最常见的数据分层策略是:新写入或经常访问的数据会优先存放在高性能介质(SSD)中,而存在时间较长或不经常访问的数据会被交换到低成本存储介质(HDD)中。

通常的情况下,新产生的数据短时间内被重复访问的概率也比较高,属于热数据;而生成时间比较长的数据通常被再次访问的几率比较低,属于冷数据。当业务系统运行一段时间后,企业中的冷数据会明显多于热数据。因此,这种情况下系统通过 SSD 缓存满足少量热数据的快速响应需求,并将大量冷数据存放在大容量、低成本的 HDD 的机制是有效的。但在一些特殊场景下,这样的缓存机制会受到挑战:

  • 当系统缓存空间不足,可能导致数据被迫直接写入 HDD。
  • 当冷数据从 SSD 交换到 HDD 后,系统再次请求读取或修改 HDD 上的数据。

上述两种情况都有可能引起”缓存击穿“ 的情况发生:由于数据需要直接读/写 HDD 才能完成 I/O 操作,对应的 I/O 延时将大幅度上升;当击穿的情况频繁发生,存储的整体性能也会出现较大程度的下降。

另外,现实中有部分业务场景并不遵循上述的冷、热数据访问规律,从而特别容易触发“缓存击穿”。如:

  • 数据仓库系统:多个数据库服务器会定期将最新的数据同步至数据仓库,属于频繁覆盖写的场景;当中会存在大量“冷数据”需要被读取,并在修改后重新写入存储。
  • 大数据分析系统:大数据分析业务场景经常需要遍历访问所有数据(不区分冷、热),甚至更偏重历史数据的访问,因而产生大量的“冷数据”的访问需求。

企业如果将大数据分析、数据仓库等业务数据存放在“层次存储”中,频繁的“缓存击穿”可能会造成业务系统响应变慢、处理能力急速下降等问题。很明显,通过单一的缓存机制是无法满足此类需求的(业务实际上需要全闪存储,才能保证访问所有数据都能保持一致的响应速度)。

不过,仅为少数几个业务系统而更换为全闪存储,对用户成本又会造成较大的挑战。能否既兼顾存储成本,又能满足个别业务系统的性能要求(不触发击穿)?答案是可以的,针对用户的需求,不同厂商提供的方案不尽相同,但大体可分为两个类别:在混合存储介质部署基础上增加常驻缓存(Pin SSD)多存储池的支持。

常驻缓存 vs 多存储池:解决思路的区别

常驻缓存

常驻缓存功能是在保留原有的缓存机制不变的前提下,可动态地将部分缓存空间(SSD)划分给特定的业务系统作为容量层使用,从而使得处于常驻缓存中的数据不再被交换到低性能硬盘(HDD),并确保业务系统不会发生“缓存击穿”导致性能下降的情况发生。也可以理解为,常驻缓存功能可为特定业务提供全闪的存储空间;因此,除了避免缓存击穿,常驻缓存功能还可为关键业务提供稳定的高性能、低时延。

多存储池

多存储池是指在同一个集群内根据存储介质设备的类型、性能,将存储资源划分为多个池;每个存储池可以对应不同的存储介质。如:集群中选择一定数量的 SSD 组建全闪存储池,另外一部分 SSD 和 HDD 则组建混合存储池。多存储池功能使得同一个集群里面可同时存在全闪和混闪存储池,用户可以根据业务对存储的性能需求,决定业务数据放置到哪个存储池更合适。

常驻缓存 vs 多存储池:成本、性能与管理的对比分析

常驻缓存和多存储池两种方案都可以解决因特定业务产生的“缓存击穿”问题,但两者解决问题的思路是不同的,实际效果会有一定差异。下面我们将以超融合基础架构场景为例,对比常驻缓存与多存储池方案在成本、性能和管理方面的优劣势。

硬件成本对比

常驻缓存和多存储池方案共同的需求出发点就是降低存储成本,因此硬件成本是一个核心关注点。

硬件要求对比
多存储池:
  • 构建多存储池通常需要以主机为单位,每个存储池至少包含 3 台主机,组建 2 个存储池则至少需要 6 台主机。对于小规模起步的用户有一定的成本压力。
  • 多存储池要求全闪池的每个主机至少包含 2 块 SSD;而混闪池主机至少包含 2 块 SSD。
常驻缓存:
  • 启用常驻缓存对最低主机数量没有特定要求,与普通集群要求一致(最小集群规模 3 台主机)。
  • 启用常驻缓存功能,理论上不需要增加 SSD 的数量,只需要确保缓存空间足够(同时满足常驻缓存和常规缓存的空间需求)。
模拟配置对比

我们根据以下需求进行模拟配置:

  • 数据仓库虚拟机(全闪)的容量需求为 20TB,其他普通业务虚拟机(混闪)的容量总需求为 120 TB 。
  • 服务器参考规格:2U 机箱,前面板满配 12 个硬盘插槽。
多存储池模拟配置:

常驻缓存模拟配置(3 节点集群满足业务需求):

常驻缓存模拟配置(6 节点集群提供更多容量空间):

从模拟配置对比中可以看到:

  • 多存储池的最小规模需要 6 台服务器,相比常驻缓存需要额外增加 3 台服务器硬件成本。
  • 集群规模同样是 6 台服务器的情况下,常规缓存方案可提供更多的可用存储空间。

性能对比

多存储池:
  • 多存储池方案中,全闪池的 SSD 与混闪池的缓存 SSD 是隔离的,性能上不会互相影响。
  • 当全闪存储池的 SSD 数量足够多时,性能上限会比混闪池更高,但造价也会相应地增加。
常驻缓存:
  • 常驻缓存与普通缓存共享一组 SSD,有一定几率发生资源争抢的情况。

从性能上对比,多存储池方案中不同的存储池之间是天然隔离的,可以确保全闪池的业务不会受到混闪池的影响,相对常驻缓存在一定优势;而常驻缓存存在缓存盘资源争抢的可能,但也可以通过存储 QoS* 和扩展缓存盘来消除资源争抢的风险。

*存储 QoS:指可以为虚拟机整机或者指定的虚拟卷设置存储 IOPS 或者带宽上限,避免单一应用占用过多性能资源,可一定程度上避免资源争抢的情况发生。

管理难度对比

多存储池:

由于全闪池与混闪池之间是完全隔离的,数据无法实现共享访问。多个存储池在超融合环境下会带来一些限制。

  • 虚拟机存储位置:当集群存在多个存储池,用户需要设置一些策略去明确定义哪些业务或者虚拟机放置到哪一个存储池当中;当业务虚拟机的需求发生变化时(如最初在混闪池,后续业务规模、重要性提升,要求转移到全闪池运行),需要人工介入,执行存储迁移操作。
  • 虚拟机在线迁移:在全闪存储池里面的虚拟机无法通过主机在线迁移的方式移动到混闪存储池所在的主机。如果要实现上述的迁移目标,需要同时执行存储数据和主机的迁移,迁移过程会涉及大量的数据复制,使得迁移时间变得很长,同时对网络带宽占用也比较高。

因此,相比普通集群,多存储池的管理复杂度更高。

常驻缓存:
  • 启用常驻缓存后,统一存储池的属性没有改变,集群内虚拟机在任何情况下执行主机在线迁移操作,都不需要进行数据迁移,迁移速度快,不会大量占用网络带宽,并且支持并发迁移操作。
  • 用户不需要刻意区分虚拟机的存储位置,甚至可以在虚拟机运行一段时间后再决定是否启用常驻缓存。

因此,常驻缓存相对多存储池有更大的灵活度,而且不会增加管理的难度。

小结

根据上述对比可以看出,多存储池可确保全闪业务和混闪业务的充分隔离,在对性能要求比较苛刻的业务场景下可能更具优势;但这种情况下多存储池的节点规模需要在 6 个或以上,同样的节点规模已经满足组建多集群(全闪集群+混闪集群)条件,此时多集群与多存储池在性能上是基本一致的,但多集群的可用性会更强。因此,多存储池的整体优势并不明显。而常驻缓存方案在成本上有较明显优势,且管理更加简单,通用性更强。

目前,SmartX 超融合 6.1 和分布式存储 5.6 都支持用户开启常驻缓存功能,避免缓存击穿的同时为关键业务系统提供稳定的高性能、低时延保障。SMTX ZBS 5.6 还采用了全新的分层模式,用户可以使用纠删码等依赖存储分层模式的功能,同时读写缓存分区比例可以动态进行调整,优化缓存空间利用率并避免缓存击穿的风险,灵活应对不同业务 I/O 的性能需求。

您还可下载《超融合技术原理与特性解析合集》系列电子书,了解更多超融合虚拟化、存储、管理、运维、网络与安全、容器管理等方面的技术解读!

SmartX 超融合技术原理与特性解析合集(一)虚拟化与存储icon-default.png?t=O83Ahttps://mobile.smartx.com/p/7d3913

SmartX 超融合技术原理与特性解析合集(二)管理与运维icon-default.png?t=O83Ahttps://mobile.smartx.com/p/8cb16

SmartX 超融合技术原理与特性解析合集(三)全栈能力icon-default.png?t=O83Ahttps://mobile.smartx.com/p/73d10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2257552.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Scala的正则表达式二

验证用户名是否合法 规则 1.长度在6-12之间 2.不能数字开头 3.只能包含数字,大小写字母,下划线def main(args: Array[String]): Unit {val name1 "1admin"//不合法,是数字开头val name2 "admin123"//合法val name3 &quo…

【CKA】Kubernetes(k8s)认证之CKA考题讲解

CKA考题讲解 0.考试101 0.1 kubectl命令⾃动补全 在 bash 中设置当前 shell 的⾃动补全&#xff0c;要先安装 bash-completion 包。 echo "source <(kubectl completion bash)" >> ~/.bashrc还可以在补全时为 kubectl 使⽤⼀个速记别名&#xff1a; al…

导入kotlin

android studio 导入kotlin项目 android studio kotlin教程 或者直接拿一个kt文件进来&#xff0c;在顶部会显示一个config&#xff0c;然后设置version&#xff0c;点击OK就可以了自动导了

《CSS 知识点》大屏卡片布局思路:弹性布局 flex-grow

思路 大屏左右两侧高宽一致&#xff0c;内部卡片可按比例设置&#xff01; 使用弹性布局和属性 flex-grow 设置比例&#xff1b;间隔使用 margin-bottom 设置&#xff0c;最后一个卡片不设置&#xff1b; 效果如图 代码说明 CSS代码 26 - 30&#xff0c;左右两侧设置弹性布…

责任链模式的理解和实践

责任链模式&#xff08;Chain of Responsibility&#xff09;是行为型设计模式之一&#xff0c;它通过将多个对象连成一条链&#xff0c;并沿着这条链传递请求&#xff0c;直到有对象处理它为止。这个模式的主要目的是将请求的发送者和接收者解耦&#xff0c;使请求沿着处理链传…

如何在 Ubuntu 上安装开源监控工具 Uptime Kuma

简介 Uptime Kuma&#xff08;或简称 Kuma&#xff09;是一个开源监控工具&#xff0c;用于监控 HTTP、HTTPS、DNS 等协议的服务。Uptime Kuma 提供多种功能&#xff0c;如多语言支持、多个状态页面、代理支持等。 接下来&#xff0c;我将一步一步教大家如何进行安装和部署&am…

go语言zero框架对接阿里云消息队列MQ的rabbit的配置与调用

在 Go 语言中对接阿里云消息队列&#xff08;MQ&#xff09;的 RabbitMQ 配置与调用&#xff0c;首先需要安装和配置相关的 Go 库&#xff0c;并了解如何通过 RabbitMQ 与阿里云消息队列进行交互。 ### 步骤一&#xff1a;安装 RabbitMQ Go 客户端库 阿里云的消息队列&#x…

AttributeError: module ‘cv2.dnn‘ has no attribute ‘DictValue‘如何解决?

AttributeError: module cv2.dnn has no attribute DictValue如何解决&#xff1f; 出现场景出错原因解决方案 出现场景 当在代码中导入opencv的时候&#xff1a;import cv2&#xff0c;出现&#xff1a; 出错原因 查看大家出现的错误&#xff0c;发现是因为opencv版本问题…

京东e卡 h5st 4.96

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我删…

《探索视频数字人:开启未来视界的钥匙》

一、引言 1.1视频数字人技术的崛起 在当今科技飞速发展的时代&#xff0c;视频数字人技术如一颗璀璨的新星&#xff0c;正逐渐成为各领域瞩目的焦点。它的出现&#xff0c;犹如一场科技风暴&#xff0c;彻底改变了传统的视频制作方式&#xff0c;为各个行业带来了前所未有的机…

畅阅读微信小程序+ssm

摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

前缀和篇——繁星斗斗数字交织中,觅得效率明月辉光(3)

前言 本篇带来前缀和的最终部分&#xff0c;与之前相同&#xff0c;将结合难度进一步提升的题目进行详细分析讲解&#xff0c;以深化对该算法的理解运用。 一. 和可被k整除的子数组 1.1 题目链接&#xff1a;https://leetcode.cn/problems/subarray-sums-divisible-by-k/des…

【 C++ 入门基础】 —— 双壁传奇C语言和C++的爱恨情仇

C学习笔记&#xff1a; C 进阶之路__Zwy的博客-CSDN博客 各位于晏&#xff0c;亦菲们&#xff0c;请点赞关注&#xff01; 我的个人主页&#xff1a; _Zwy-CSDN博客 目录 1、从C语言到C的进化 1.1、历史渊源 1.2、语法层面的区别和联系 1.2.1、数据类型 1.2.2、函数定…

013路由协议-OSPF

OSPF具有更适用于规模较大的网络环境&#xff0c;收敛更快速、依据带宽来计算路径成本等。 计算方式&#xff1a; 100M/当前端口的带宽 如果小于1就按照1来计算 例如&#xff1a; 当前端口的带宽是1.54M 路径成本 100/1.54 65 当前端口的带宽是 1000M 路径成本 100/100 0.…

最新版Chrome谷歌加载ActiveX控件之金格iWebPDF2018控件

背景 金格iWebPDF2018控件是一款方便用户在线打开PDF文档的控件。 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它不仅可以实现ActiveX控件在现代浏览器上使用&#xff0c;而且集成也…

没有在 SCM 配置或者插件中的 Git 存储库配置错误

问题&#xff1a; jenkins 配置新项目后首次运行报错如下&#xff0c;同时git代码分支无法选择。 已返回默认值 没有在 SCM 配置或者插件中的 Git 存储库配置错误 选项"使用仓库"设置为:"http://xxxx.git 请检查配置 原因&#xff1a; 配置pipeline 脚本时指…

AI时代的开发新纪元:云开发 Copilot

AI时代的开发新纪元&#xff1a;云开发 Copilot 目录 引言&#xff1a;AI时代的开发新纪元低代码与AI的完美融合云开发 Copilot的革命性意义云开发 Copilot 的核心特性解析 快速生成应用功能低代码与AI的深度结合 实战演练&#xff1a;云开发 Copilot 的应用案例 从需求到实现…

微信小程序粘贴剪切板内容

wx.getClipboardData(Object object) 获取系统剪贴板的内容 wx.getClipboardData({success: function (res) {if (res.data) {// 获取成功...} else {wx.showToast({title: "没有粘贴内容",icon: "error",});}},fail: function (res) {wx.showToast({titl…

【PyQt5教程 四】Qt Designer 样式表(styleSheet)实现基本小部件的自定义动态效果和资源浏览器背景添加方法

目录 一、成果演示&#xff1a; 二、样式表的使用方法: &#xff08;1&#xff09;样式表语法和属性&#xff1a; &#xff08;2&#xff09;样式表代码示例&#xff1a; &#xff08;3&#xff09;伪类和状态&#xff1a; &#xff08;4&#xff09;复合选择器&#xff…

推荐系统里面的多任务学习概述

1. 概述 多任务学习&#xff08;multi-task learning&#xff09;&#xff0c;本质上是希望使用一个模型完成多个任务的建模&#xff0c;在推荐系统中&#xff0c;多任务学习一般即指多目标学习&#xff08;multi-label learning&#xff09;&#xff0c;不同目标输入相同的fe…