MinIO Enterprise Cache:实现超性能的分布式 DRAM 缓存

随着计算世界的发展和 DRAM 价格的暴跌,我们发现服务器配置通常配备 500GB 或更多的 DRAM。当您处理大型部署时,即使是那些具有超高密度 NVMe 驱动器的部署,这些服务器上的服务器数量乘以 DRAM 也会迅速增加,通常达到几 TB。该 DRAM 池可以配置为分布式共享内存池,非常适合需要大量 IOPS 和吞吐量性能的工作负载。

因此,我们为 Enterprise Plus 和 Enterprise Lite 客户构建了 MinIO Enterprise Object Store Cache 功能。MinIO Enterprise Cache 允许我们的客户通过缓存经常访问的对象来利用此共享内存池。MinIO Enterprise Cache 将进一步提高核心 AI 工作负载的性能。

差异化点

MinIO Enterprise Cache 与通用缓存服务的区别在于它了解数据源(即 MinIO Enterprise Object Store)。

通用缓存旨在与任何数据源一起使用。因此,如果在缓存中找不到项目,他们能做的最好的事情就是返回“未找到”响应。从那里,调用方必须提取数据并将其提交到通用缓存服务进行缓存。

另一方面,MinIO 的企业缓存功能是专门为缓存 MinIO 对象而构建的。如果在对象的现有缓存中找不到对象,则它将自动检索该对象,缓存该对象以供将来的请求使用,并将该对象返回给调用方。

另一个区别点是 MinIO Enterprise Cache 使用一致哈希算法将缓存的对象数据分散到缓存节点集群(称为对等节点)中。一致的哈希可确保对象可以根据其密钥轻松定位。它还确保节点包含相同数量的数据,以便在其他节点空闲时不会过载。然而,更重要的是,它以这样一种方式将对象分散开来,如果添加或删除节点,则只需进行最小的洗牌即可使系统对齐。这会导致对象的键值与保存缓存对象的节点之间建立一对一关系。

在本文后面,我将更深入地介绍这两个差异化功能。现在,让我们更好地了解 MinIO 的企业缓存中可用的选项,以及它如何与 MinIO 企业对象存储集成。

设置 MinIO Enterprise 缓存

设置 MinIO Enterprise Cache 非常简单,只需在 MinIO Enterprise Object Store 控制台中启用服务并指定需要缓存的存储桶即可。如果之前未配置缓存,则控制台中的“缓存”对话框将类似于下面的屏幕截图。要激活缓存服务,请单击“激活缓存”按钮。

启用缓存服务后,您需要指定将使用缓存的存储桶。如下面的屏幕截图所示。首先,指定最大内存设置。这是将用于跨所有存储桶进行缓存的最大内存量。接下来,指定每个需要缓存的存储桶以及每个存储桶要使用的内存量。如果希望缓存终结点使用 TLS,请指定 CA 路径、公钥路径和私钥路径。

让我们仔细看看将 MinIO Enterprise Cache 服务与其他缓存服务区分开来的功能。

为 MinIO 构建的缓存

如果通用缓存服务要与 MinIO Enterprise Object Store 一起使用,则请求对象的应用程序需要先检查缓存服务,然后再调用 MinIO。由于 MinIO 缓存是专门为 MinIO 企业对象存储构建的,因此它在后台工作。应用程序和服务在不了解 MinIO 缓存的情况下调用 MinIO。如果请求的对象被缓存,则 MinIO 将从缓存中检索该对象。如果它没有被缓存,而它应该被缓存,那么 MinIO 将检索对象,缓存它,并将其返回到调用服务。

当缓存作为存储解决方案的扩展构建时,缓存维护会更有效。例如,如果更新了缓存的对象,则 MinIO Enterprise Object Store 可以使缓存中的对象失效或更新缓存。此外,MinIO 缓存使用滚动缓存将缓存的总大小保持在 MinIO 缓存配置中指定的限制内。如果添加新对象将导致缓存大小超过指定的限制,则将根据指示上次请求对象的时间戳删除一个或多个对象。

要了解 MinIO 缓存对需要对象存储的应用程序或服务的好处,让我们考虑一下将通用缓存服务与 MinIO 一起使用时将发生的流程。如下所示。所有网络请求都用红色箭头表示,进程间调用用黑色箭头表示。

现在考虑 MinIO 缓存使用的流。如下图所示。对于请求对象数据的应用程序,MinIO Cache 实现的逻辑更易于使用。使用任何 MinIO SDK 的应用程序发出请求的方式与完全未设置缓存时相同。缓存是一项幕后操作 - 不需要协调对第三方缓存服务的调用。

当需要填充缓存时,使用 MinIO 缓存还可以减少网络跃点。(4 个网络调用。当缓存服务(如 MinIO 缓存)了解数据源时,它可以在之前未缓存数据的情况下代表请求者检索数据。这导致网络利用率降低 20%(4 个网络调用对 5 个)。这也意味着对象始终返回到请求应用程序。

最后,MinIO 缓存利用控制器中的热内存缓存来处理频繁请求的对象,因此无需为这些对象向节点发出网络请求。

一致的哈希处理,实现复原能力

一致哈希是一种算法,用于根据对象的名称(或键)确定哪个节点包含(或应该包含)缓存对象,该名称(或密钥)随每个请求传递给 MinIO 缓存。这样做的优点是,无需使用必须与每个请求一起搜索的大型查找表。一致哈希还以这样一种方式将对象分散到节点集群中,从而最大限度地减少在节点发生故障或添加节点(集群横向扩展)时移动对象的需要。

让我们通过一致哈希算法的简单应用来了解它的工作原理和它提供的价值。使用可以将字符串转换为数字的哈希算法,在不维护表的情况下确定对象应驻留的节点非常简单。创建此数字后,Consistent Hashing 会获取它并将其映射到圆的边缘。最简单的方法是使用 360 通过模运算符运行哈希数。示例:370 模 360 等于 10。模运算返回除法运算的余数和另一个数字。最小可能值 0 对应于零的角度,最大可能值对应于近 360 度的角度(或 2π 弧度),所有其他哈希值将线性拟合介于两者之间。当对三个对象完成时,圆可能如下所示:

现在我们对节点做同样的事情。我们通过对它们的 IP 地址或 URL 应用相同的算法将它们放在圆圈的边缘。现在,我们的圈子看起来像这样:

要确定对象应驻留在哪个节点上,请从圆上的对象开始,逆时针行进,直到到达节点。

现在,作为一个思想实验,假设一个节点失败了,其他节点必须吸收额外的工作。您会注意到,不需要移动现有对象,并且最接近故障节点的节点将获得额外的工作,直到故障节点恢复。接下来,假装添加了一个额外的节点。结果是相似的。新节点将缓慢获取对象,从而减少最近对象的负载。这个简单的例子说明了一致哈希的效率。实际上,这种算法更复杂;如果您感兴趣,请在此处内容。

一致哈希是一种分布式哈希方案,它通过在抽象圆上为它们分配一个位置来独立于参与算法的服务器或对象的数量来运行。这允许服务器和对象在不影响整个系统的情况下进行扩展。

总结

MinIO Cache 是一种缓存服务,它使用内存来缓存经常访问的对象。MinIO Cache 专为 MinIO 企业对象存储构建,是 MinIO 的最佳缓存服务,与不了解 MinIO 对象存储的通用缓存服务不同。如果从 MinIO 缓存请求对象,并且缓存中不存在该对象,则 MinIO 缓存将为您获取该对象并将其放入缓存中以供后续请求使用。

此外,MinIO 缓存利用“一致哈希”方案在节点横向扩展操作和节点故障期间进行高效的对象管理。

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

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

相关文章

详细分析Oracle日期和时间的基本命令

目录 1. 基本类型2. 常用函数3. Demo 1. 基本类型 Oracle支持不同的日期格式模型,其中包括: ISO 8601: YYYY-MM-DDTHH:MI:SS,例如2024-06-20T14:30:00Oracle内部格式: DD-MON-YYYY HH:MI:SS AM,例如20-JUN-2024 02:30:00 PM DA…

【Golang - 90天从新手到大师】Day11 - 包的管理

系列文章合集 Golang - 90天从新手到大师 Go语言中包的使用 Go语言使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java 、python等语言相比,这算不上什么创新,但与C传…

大型语言模型在AMD GPU上的推理优化

Large language model inference optimizations on AMD GPUs — ROCm Blogs 大型语言模型(LLMs)已经改变了自然语言处理和理解,促进了在多个领域中的众多人工智能应用。LLMs在包括AI助手、聊天机器人、编程、游戏、学习、搜索和推荐系统在内的…

Linux管道与重定向

管道 是进程通信的方法之一,在Linux中用命令1|命令2的形式表示,将前一个命令的结果作为后续命令的参数进行输入,也有tee管道,可以进行多次筛选,即多次使用|过滤命令。 重定向 文件描述符FD Linux中输入输出分为三种…

基于AT32_Work_Bench配置AT32工程

基于AT32_Work_Bench配置AT32工程 ✨AT32_Work_Bench工具是用来给AT32 MCU快速构建外设初始化工程软件,类似STM32的STM32CubeMX工具软件。 📍AT32 TOOL系列工具下载地址:https://www.arterytek.com/cn/support/index.jsp?index4&#x1f3f7…

INFINI Labs 助力开源与教育:免费许可证计划全面升级

在数字化浪潮席卷全球的今天,INFINI Labs 深刻认识到开源项目和教育机构在技术创新与人才培养中的核心作用。因此,我们郑重推出全新升级的免费许可证计划,旨在全球范围内为开源社区和教育界提供有力支持,共同推动软件生态的繁荣与…

什么是数据库?从零开始了解数据库基础概念

什么是数据库?从零开始了解数据库基础概念 相信大家在日常生活中都听到过大数据,数据这个东西越来越火,比如交通大数据、旅游大数据等,,,数据成为了企业决策和业务运作的关键元素。而管理这些庞大而复杂的…

nginx出现504 Gateway Time-out错误的原因分析及解决

nginx出现504 Gateway Time-out错误的原因分析及解决 1、查看公网带宽是否被打满 2、查看网络是否有波动(可以在nginx上ping后端服务,看是否有丢包情况) 3、查看服务器资源使用情况(cpu、内存、磁盘、网络等) 4、查看nginx日志,具体到哪个服务的哪个…

如何利用AI大模型设计电机本体?

一、背景 AI在电机本体设计中的应用正逐渐成为提升设计效率、优化性能和降低成本的重要手段。通过深度学习、机器学习、计算机辅助设计(CAD)和仿真技术的结合,AI能够帮助工程师更快速准确地完成电机的设计与优化工作。以下是AI在电机本体设计…

02_02_SpringMVC基于注解的应用

一、请求处理 1、常用注解 RequestMapping 作用:用来匹配客户端发送的请求(用来处理URL映射,将请求映射到处理方法中),可以在类或者方法上使用。 用在类上,可以将请求模块化,避免请求方法中的…

网络编程(二)TCP编程 TCP粘包问题

文章目录 一、TCP网络编程(一)流程(二)相关函数1. socket2. bind3. listen4. accept5. connect 二、收发函数(一)send函数(二)recv函数 三、TCP粘包问题(一)将…

详细分析Matplotlib 绘制三维曲线图的细节(附Demo)

目录 前言1. 基本知识2. Demo 前言 对于Matplotlib的基本知识推荐阅读:python之Matplotlib详细分析(附代码) 1. 基本知识 Matplotlib 是 Python 中常用的绘图库,可以用于生成各种类型的图表,包括三维曲线图 在三维…

Shiro721 反序列化漏洞(CVE-2019-12422)

目录 Shiro550和Shiro721的区别 判断是否存在漏洞 漏洞环境搭建 漏洞利用 利用Shiro检测工具 利用Shiro综综合利用工具 这一篇还是参考别的师傅的好文章学习Shiro的反序列化漏洞 上一篇也是Shiro的反序列化漏洞,不同的是一个是550一个是721,那么这…

【node】启动本地打包文件的方式

前言 … 目标 1 初始化node文件 2 将打包文件通过node发布到本地 3 系列文件 【node】创建本地接口 一 node方式 1 在新建一个空的文件夹node 进入空文件夹在,文件夹的地址栏输入cmd回车,会自动跳转到命令行工具里 2 配置初始化文件 在命令行输入命令npm init,生成pac…

驾校OBD接入CAN总线数据大众朗逸仪表网关位置

在汽车的复杂电路网络中,仪表网关扮演着信息枢纽的角色。对于驾校使用大众朗逸车主而言,了解仪表网关的位置不仅有助于日常维护,更是故障诊断和车辆升级的关键所在。 大众朗逸作为一款深受消费者喜爱的车型,凭借其稳定的性能和经…

C#.net6.0语言+前端Vue,Ant-Design开发的智慧医院手术室麻醉管理平台源码 什么是手术麻醉临床信息管理系统?

C#.net6.0语言前端Vue,Ant-Design开发的智慧医院手术室麻醉管理平台源码 什么是手术麻醉临床信息管理系统? 手术麻醉临床信息管理系统涵盖了手术进程管理、自动排班、手术记录、术前评估与麻醉记录等功能,强调了系统如何通过技术架构和数据集成提高工作…

44、基于深度学习的癌症检测(matlab)

1、基于深度学习的癌症检测原理及流程 基于深度学习的癌症检测是利用深度学习算法对医学影像数据进行分析和诊断,以帮助医生准确地检测癌症病变。其原理和流程主要包括以下几个步骤: 数据采集:首先需要收集包括X光片、CT扫描、MRI等医学影像…

JAVA-线程

先上图,有点长,比较碎,有xmind文件......,详细内容均在图片里介绍了,提供了PDF文件 1.线程简介 进程是操作系统中正在执行的不同的应用程序,例如:我们可以同时打开Word和记事本 线程是一个应用…

Java——IDEA使用

一、IDEA介绍 IntelliJ IDEA 是 JetBrains 公司开发的一款功能强大的集成开发环境(IDE),主要用于 Java 编程语言,但也支持多种其他语言和框架。由于其强大的功能和灵活性,IntelliJ IDEA 被广泛应用于软件开发领域&…

海外盲盒小程序搭建过程的最大挑战:文化差异与本地化

一、引言 随着全球化的深入发展,跨境电商和海外市场的拓展成为许多企业的重要战略方向。盲盒小程序作为一种新兴的消费模式,也在海外市场展现出巨大的潜力。然而,在海外搭建盲盒小程序并非易事,文化差异与本地化问题是其搭建过程…