论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统)

news2024/10/2 1:38:32

关于Disaggregating Persistent Memory and Controlling Them Remotely: An Exploration of Passive Disaggregated Key-Value Stores这篇论文的笔记

原文链接

提出背景

传统的分布式存储系统中,每个节点都会包含计算和存储两个部分,一个节点既可以访问本地的存储部分也可以访问远端的存储部分。传统的存储部分是由SSD或者HDD组成,但随着非易失性内存(PM:persistent memory)的提出,越来越多的存储系统采用了这种存储介质。形成的组织架构如下图所示:

传统模式

存在的问题

  • 在单个节点中,计算和存储之间存在着处理速度方面的差异,无法发挥最佳的性能

  • 可扩展性差

  • 存在数据一致性与可靠性方面的问题

分离模式

针对传统分布式存储系统存在的问题,人们提出了将计算和存储分离的模式,这种模式相比于传统的模式在资源管理、可扩展性等方面表现得更好,现在的许多数据中心和云服务平台都正在采用这种模式。

此外,有一种称为RDMA(Remote Direct Memory Acces)的网络技术正在应用于分布式系统中,这种技术能够允许跨过CPU直接访问远端节点的内存,因此具有低延迟和低CPU利用率的特点,采用这种技术能够大大提高分布式系统的性能。

既然分离出了计算和存储节点,那么就需要在其中一种节点上安装管理程序以维护这个系统,根据管理程序所在的节点,结合PM存储介质和RDMA传输技术,提出了两类模型:aDPM(active disaggregated PM)和pDPM(passive disaggregated PM)。其中,主动(active)和被动(passive)是指对数据的管理模式。

aDPM

aDPM的架构如下图所示

aDPM

可以看到,在aDPM中,将管理程序安装在存储节点,采用这种方式可以降低延迟,但是为了维持较大的网络带宽,在存储节点需要有较高的处理能力,由此会产生较大能耗。此外,如果该系统采用了RDMA技术,那么在这种情况下,需要事先通过管理层才能到达内存,并没有发挥RDMA直达内存的优点。

pDPM

由于aDPM还存在着一些不足,于是考虑将管理程序放在计算节点,从而组成了pDPM模型。pDPM的架构如下图所示:

pDPM

采用这种模式有效地解决了aDPM中RDMA无法发挥作用的不足,在这种模式下,只需要在存储节点安装支持RDMA的智能网卡,就能实现对存储节点内存的直接访问。但在这种模式下,存储节点失去了处理能力,接下来的问题就是在哪里处理与管理数据。从这点出发,提出了三种模式:pDPM-Direct,pDPM-Central和Clover

pDPM-Direct

直观的想法是在计算节点进行数据的管理,计算节点通过单向的RDMA对存储节点进行读写操作,它的架构如下所示:

pDPM-Direct

以下简要介绍这种架构在读写方面的实现:

对于一条数据,它在存储节点中的形式是一个KV条目,每个KV条目包含已提交和未提交数据,同时这些数据需要有校验码保证可靠性。

  • 当进行读操作时,读取对于KV条目中的已提交数据,并进行校验,如果校验失败,需要重新读取。

  • 当进行写操作时,首先对要写的KV条目加锁,再先后将数据写入未提交和已提交数据中,最后释放锁。

可以看到,采取这种方式存在的问题有:

  • 写操作时较慢

  • 一条数据需要复制为两份保存,会造成空间的浪费。

pDPM-Central

pDPM-Direct采用的方式相当于将数据的处理分散到每一个计算节点上,那么相对应的另一种思路是将数据的处理集中在一个调度器,这个调度器位于计算节点和存储节点之间,这就是pDPM-Central采用的方法。它的架构如下所示:

pDPM-Central

以下简要介绍这种架构在读写方面的实现:

在调度器中的PM保存着一张映射表,每个条目保存的是一条数据所在的地址。

  • 当进行读操作时,计算节点会向调度器发送一个RPC请求,调度器会给对应得映射表条目加锁,然后调度器从存储节点读取数据并返回给计算节点,最后释放条目上的锁

  • 当进行写操作时,计算节点会向调度器发送一个RPC请求,此时调度器需要为这条数据在存储节点中分配空间,然后调度器将数据写入分配的空间中,最后更新内部的映射表(需要加锁)

可以看到,采取这种方式存在的问题有:

  • 由于中间经过调度器,读操作的速度下降

  • 调度器本身的CPU使用率非常高,需要处理计算节点的RPC请求、分配存储节点的空间等

  • 调度器成为了该系统的一个瓶颈

Clover

Clover采取的模式是对以上两种方式的混合,它将数据和元数据分离,分别采用不同的形式进行管理,其中对于数据的管理(称为数据层),采用的是pDPM-Direct中的方式,即将数据的读写操作分散在每个计算节点中;对于元数据的管理(称为元数据层),采用的是pDPM-Central中的方式,即将数据空间分配和垃圾回收等操作集中在一个元数据服务器(MS)中。它的架构如下图所示:

Clover

数据层

对于数据层,需要完成的基本操作是数据的读写操作,这里采用的是一种不需要加锁的数据结构,对于一条数据以链表的形式存储,链表的每个结点代表的是该数据的历史版本,不难看出,该链表的最后一个结点就是该数据的最新版本。同时在计算节点中保存着一个游标(类似指针),代表的是上一次访问该条数据时的版本(不一定是最新的)。

  • 当进行读操作时,根据计算节点中的游标找到该条数据对应链表中的位置,从该位置开始遍历直至找到链表末尾,得到该条数据的最新版本。

  • 当进行写操作时,需要在存储节点对应数据条目中添加一个新的结点,如果该链表只有一个结点,说明是新创建的数据,只需要在计算节点中添加新的指向该结点的游标;如果链表有多个结点,说明是对数据的更新,将代表上一版本的结点指向新创建的结点,最后更新执行写操作的计算节点中的游标。

可以看到,在读操作中当遇到链表很长而游标指向的历史版本过早时,存在遍历时间过长的情况。因此可以采取一种优化措施,在存储节点内部保存一类称为捷径(shortcut)的指针,它们会指向对应数据条目中尽量新的版本结点。在实际应用时,会并行采取遍历链表和使用捷径指针的方式,直到其中一种方式获得最新的数据。

数据层的组织形式如下图所示:

Data plane

元数据层

对于元数据层,它只与计算节点进行通信,进行空间管理、垃圾回收、负载均衡等操作。

对于空间分配的操作,在MS中将空闲空间打包为一个块(chunk),每个块的大小和数据缓冲区的大小一致,不同的块会有不同的大小,这些块会组成一个空闲队列。当计算节点需要进行写操作时,会在后台向MS请求分配一个对应的块,MS会在空闲队列中将这个块发送给计算节点。

对于垃圾回收操作,在写完成之后,计算节点可能需要淘汰一些历史版本结点,因此后台会给MS发送回收请求,收到回收请求的MS会将原来分配出去的块重新放回空闲队列中。

以上操作的组织形式如下图所示:

Metadata plane1

对于数据可靠性与负载均衡,一个数据条目的历史版本的副本可能存在于不同的存储节点上,一个版本结点可以指向多个下一版本结点,尽管它们存在不同的存储节点。大致思路如下图所示:

Metadata plane2

小结

在以上三种pDPM模型中,Clover尝试结合另外两种模型的优点,经过实验证明Clover的确具有读写延迟低、能耗低、成本低等优点,但也存在大量写冲突情况下性能变差的问题。总之,在设计分布式存储系统时可以考虑采用pDPM中的Clover模型。

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

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

相关文章

分割等和子集

题目链接 分割等和子集 题目描述 注意点 数组 nums 非空数组 nums 只包含正整数 解答思路 最初想到的是根据回溯剪枝解决本题,如果数组大小小于2,则肯定不能找到分割等和子集,除此以外,如果数组之和sum不能被2整除&#xff0…

VMvare虚拟机安装国产麒麟V10桌面操作系统

一、系统下载 进入银河麒麟官网:https://www.kylinos.cn/ 选择桌面操作系统,然后进入操作系统版本选择页面,选择银河麒麟桌面操作系统V10 选择后,进入系统介绍页面,然后点击申请试用 点击后进入申请页面&#xf…

Apache Solr9.3 快速上手

Apache Solr 简介 Solr是Apache的顶级开源项目,使用java开发 ,基于Lucene的全文检索服务器。 Solr比Lucene提供了更多的查询语句,而且它可扩展、可配置,同时它对Lucene的性能进行了优化。 安装 下载 : 下载地址解压 : tar -zxv…

uniapp apple 苹果登录 离线本地打包

官方文档 uni-app官网 文档写的不全,没有写离线打包流程 加lib 签名里带 sign in with apple hbuilder开关 代码 测试代码,获取app里所有的provider uni.getProvider({service: oauth,success: function (res) {console.log(res.provider)uni.showT…

ctfshow-web4(文件包含日志注入)

像web3那样使用php伪协议,回显error 看了看提示:日志注入 文件包含 使用Wappalyzer查看一下,使用的中间件是Ngnix 日志包含漏洞的成因还是服务器没有进行严格的过滤 ,导致用户可以进行任意文件读取, 但是前提是服务器…

月报总结|Moonbeam 9月份大事一览

相信社区的小伙伴都过了一个圆满的中秋节,月圆人团圆,以月光代表生态的Moonbeam网络也如月亮一般,从始至终都在波卡。 9月,USDC上线波卡增加流动性、Moonbeam治理界面简化促进社区参与、Grant发放引爆Moonbeam Ignite再次回归、M…

QT基础入门——Qt事件(五)

前言: 事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等&#x…

(一)Apache log4net™ 手册 - 介绍

0、相关概念 Log4j 几乎每个大型应用程序都包含自己的日志记录或跟踪 API。根据这一规则,E.U. SEMPER 🌹项目决定编写自己的跟踪 API。那是在 1996 年初。经过无数次的增强、几个化身和大量的工作,API 已经发展成为 log4j —— 一个流行的 Ja…

开源音乐播放器!

导读音乐是生活的一部分。维基百科关于音乐发展历史的文章有这样一段不错的描述说:“全世界所有的人们,包括哪怕是最孤立、与世隔绝的部落,都会有自己的特色音乐……”好吧,我们开源人就构成了一个部落。我建议我们的“音乐形式”…

halcon 算子shape_trans

shape_trans 函数原型:shape_trans(Region : RegionTrans : Type : ) 函数作用:变换区域的形状 参数列表: Region(in):被变换的区域 RegionTrans(out):变换后的区域…

【SmartApi】内网局域网API调试开发工具下载使用说明-v1.0.1

最近的一些年经常在内网环境下进行开发工作,尤其是比较敏感的单位或者组织是有严格规定不能使用哪些软件或者是不能访问外网的。 但开发工作需要的各种软件工具又因为一些营销策略而要联网激活,这就和组织单位的要求相悖了。于是就萌发了开发内网局域网软…

Ajax跨域访问,访问成功但一直走error不走success的的问题解决

Ajax跨域访问,访问成功但一直走error不走success的的问题解决 通过搜索各种资料,终于解决啦,废话不多说了,还是老规矩直接上代码: 我这里用了jsonp,有想了解的点击 : jsonp 前端代码: $.ajax({type:post…

无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同

“/”应用程序中的服务器错误。 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Se…

第二证券:汽车产业链股活跃,恒勃股份、博俊科技“20cm”涨停

轿车产业链股9日盘中走势活跃,截至发稿,恒勃股份、博俊科技“20cm”涨停,德迈仕涨超17%,上声电子涨超14%,川环科技涨超10%,圣龙股份、科华控股、沪光股份、上海沿浦、日盈电子、赛力斯等均涨停。 工作方面…

Linux 部署 MinIO 分布式对象存储 配置为 typora 图床

前言 MinIO 是一款高性能的对象存储系统,它可以用于大规模的 AI/ML、数据湖和数据库工作负载。它的 API 与Amazon S3 云存储服务完全兼容,可以在任何云或本地基础设施上运行。MinIO 是开源软件,也提供商业许可和支持 MinIO 的特点有&#x…

30分钟快速搭建并部署一个免费的个人博客

1前言 现如今网上有许多完善的博客平台,如博客园、掘金、思否、知乎等。有人会说为什么现在网上有这么多成熟的博客平台,你还要浪费时间搭建一个自己的博客系统呢?首先我相信每一个程序员都会想要拥有一个属于自己的博客系统,其次…

算法备案一定要抓紧了!独立开发者群体观察笔记;关于大模型的36句内幕和真话;电子书-人工智能原理揭秘 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🔥 提个醒!算法备案的事情,要抓紧提上日程,以后审批会越来越紧 节前国内AI网站倒了一批又一批&#x…

一文读懂Base64

这几天在和第三方交互的时候,对方返回的数据是base64格式的数据,所以这两天又彻底捋了下Base64的来龙去脉。之前看过一篇文章说的非常好(再找到给加上链接),我在这不详细说明了,只说转换过程。 还是使用中…

ClickHouse进阶(二十二):clickhouse管理与运维-服务监控

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Kerberos安全认证-CSDN博客 📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情! 👍点赞:赞同优秀创作,你的点赞是对我创…

平凡工作也能创造奇迹:学习公文的写作逻辑和技巧

引言 如何把平凡的工作写出光环 📜 很多初入职场的人在撰写个人先进事迹材料时面临的最大问题是:他们认为自己做的工作都是琐碎且普通的,没有任何惊天动地的成就或值得称赞的成绩。因此,他们感到非常困惑,不知道该如何…