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.rhkb.cn/news/352551.html

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

相关文章

【电脑日常问题】关于“已经安装了该产品的另一个版本”解决方法

问题描述: 在安装应用或者某游戏时弹出该窗口,虽然游戏已经安装完成,但是游戏无法正常运行。 原因分析: 出现这个问题,大概率可能是某次游戏安装完成,点击开始游戏的时候会自动安装一个软件,但是点了取消,以致于这个程序安装中断,但是已安装的部分还残留,目前是P社的…

Redis常见数据类型及其常用命令详解

文章目录 一、Redis概述二、Redis常用命令1.通用命令1.1 KEYS:查看符合模板的所有 key1.2 DEL:删除一个指定的 key1.3 EXISTS:判断 key 是否存在1.4 EXPIRE:给一个 key 设置有效期,有效期到期时该 key 会被自动删除1.5…

Ubuntu乌班图安装VIM文本编辑器工具

系列文章目录 Ubuntu-24.04-live-server-amd64安装界面中文版 Ubuntu-24.04-live-server-amd64启用ssh Ubuntu安装qemu-guest-agent 文章目录 系列文章目录前言一、安装VIM?二、VIM基本设置总结 前言 从centos转到Ubuntu发现默认安装没有vi 一、安装VIM&#xff1…

SpringBoot Vue Bootstrap 旅游管理系统

SpringBoot Vue 旅游管理系统源码,附带环境安装,运行说明 源码地址 开发环境 jdk1.8,mysql8,nodejs16,navicat,idea 使用技术springboot mybatis vue bootstrap 部分功能截图预览

vue3的基本使用方法

【 vue3实例 】 【 0 】对象、方法和属性 对象(Object): 对象是编程中的一个数据结构,它可以包含多种数据类型,包括数字、字符串、布尔值、数组、其他对象等。对象通常由一系列属性和方法组成。在面向对象编程&…

【python】OpenCV—Segmentation

文章目录 cv2.kmeans牛刀小试 cv2.kmeans cv2.kmeans 是 OpenCV 库中用于执行 K-Means 聚类算法的函数。以下是根据参考文章整理的 cv2.kmeans 函数的中文文档: 一、函数功能 cv2.kmeans 用于执行 K-Means 聚类算法,将一组数据点划分到 K 个簇中&…

C#调用OpenCvSharp和SkiaSharp绘制图像直方图

最近在B站上学习OpenCv教程,学到图像直方图,后者描述的是不同色彩在整幅图像中所占的比例(统计不同色彩在图像中的出现次数),可以对灰度图、彩色图等计算并绘制图像直方图。本文学习OpenCvSharp中与计算直方图相关的函…

Enhancing CLIP with GPT-4: Harnessing Visual Descriptions as Prompts

标题:用GPT-4增强CLIP:利用视觉描述作为提示 源文链接:Maniparambil_Enhancing_CLIP_with_GPT-4_Harnessing_Visual_Descriptions_as_Prompts_ICCVW_2023_paper.pdf (thecvf.com)https://openaccess.thecvf.com/content/ICCV2023W/MMFM/papers/Manipara…

基于深度学习网络的USB摄像头实时视频采集与手势检测识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 系统架构 4.2 GoogLeNet网络简介 4.3 手势检测 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 训练过程如下: 将摄像头对准手势,然后进行…

html入门综合练习

综合练习 通过实际项目练习可以更好地理解和掌握HTML、CSS和JavaScript。以下是几个综合练习项目的建议: 项目1:个人简历网页 创建一个包含以下内容的个人简历网页: 个人简介(姓名、照片、联系方式)教育背景工作经…

物联网网关和飞鸟物联平台如何助力其实现智能化升级,提升生产效率-天拓四方

随着工业4.0时代的到来,物联网技术逐渐成为推动工业转型升级的关键力量。物联网网关作为连接工业设备与网络的核心枢纽,在工业自动化、数据收集与分析等方面发挥着越来越重要的作用。本案例将围绕一家知名制造企业,展示物联网网关和飞鸟物联平…

英语恶补ing

ing的词组都有停下来做某事的感觉了。 second hand是形容词了。 wouldnt buy这里的would是情态动词,也是助动词 助动词不能单独使用,要搭配实义动词,这样才能构成谓语 情态动词(modals)在英语中有多种作用&#xff…

Nginx + KeepAlived高可用负载均衡集群

目录 一、Keepealived脑裂现象 1.现象 2.原因 3.解决 4.预防 二、实验部署 1.两台nginx做初始化操作并安装nginx 2.四层反向代理配置 3.配置高可用 4.准备检查nginx运行状态脚本 5.开启keepalived服务并测试 一、Keepealived脑裂现象 1.现象 主服务器和备服务器都同…

哈尔滨等保测评驱动下的智慧城市建设思考

面对滚滚而来的大数据时代,信息安全等级保护测评(简称等保测评)对城市发展的推动作用不容忽视。作为黑龙江省的省会,哈尔滨在智慧城市建设上的积极探索和实践,必须以完善的等保测评体系为前提,确保信息的安…

交友系统定制版源码 相亲交友小程序源码全开源可二开 打造独特的社交交友系统

交友系统源码的实现涉及到多个方面,包括前端页面设计、后端逻辑处理、数据库设计以及用户交互等。以下是一个简单的交友系统源码实现的基本框架和关键步骤: 1.数据库设计:用户表:存储用户基本信息,如用户ID、用户名、密码、头像、性别、年龄、地理位置…

PBC密码库安装及使用教程

文章目录 1.PBC库介绍2.PBC库安装3.PBC库使用4.相关API4.1 配对的初始化和释放4.2 元素的初始化和释放4.3 元素的赋值4.4 哈希4.5 元素的常用运算4.6 元素的幂运算4.7 元素的比较4.8 从群中随机选取一个元素(常用)4.9 配对的运算4.10 小结 5.Some exampl…

App端接口用例设计方法和测试方法

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 前言 接口测试作为测试的重要一环,重点关注的是数据层面的输入输出,今天…

超高清图像生成新SOTA!清华唐杰教授团队提出Inf-DiT:生成4096图像比UNet节省5倍内存。

清华大学唐杰教授团队最近在生成超高清图像方面的新工作:Inf-DiT,通过提出一种单向块注意力机制,能够在推理过程中自适应调整内存开销并处理全局依赖关系。基于此模块,该模型采用了 DiT 结构进行上采样,并开发了一种能…

【MATLAB】- 随笔 :如何检测一个字符串数组中是否包含自己想要的序列

1. 问题重述 比如我现在有一个 strArray [“a”, “1”, “2”, “b”]; 我想确定里面是否包含[“1”, “2”]; ,由于MATLAB基础库中没有现成的函数可以直接检查连续子数组或连续多个元素的序列,下面给出自定义函数来实现这一功能。 2. 自定义函数 2…

phpcms仿蚁乐购淘宝客网站模板

phpcms仿蚁乐购网站模板,淘宝客行业模板免费下载,该模板网站很容易吸引访客点击,提升ip流量和pv是非常有利的。本套模板采用现在非常流行的全屏自适应布局设计,且栏目列表以简洁,非常时尚大气。页面根据分辨率大小而自…