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

这篇具有很好参考价值的文章主要介绍了论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

原文链接

提出背景

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

论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统),# 存储行业趋势研究,数据存储

存在的问题

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

  • 可扩展性差

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

分离模式

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

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

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

aDPM

aDPM的架构如下图所示

论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统),# 存储行业趋势研究,数据存储

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

pDPM

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

论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统),# 存储行业趋势研究,数据存储

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

pDPM-Direct

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

论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统),# 存储行业趋势研究,数据存储

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

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

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

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

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

  • 写操作时较慢

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

pDPM-Central

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

论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统),# 存储行业趋势研究,数据存储

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

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

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

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

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

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

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

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

Clover

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

论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统),# 存储行业趋势研究,数据存储

数据层

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

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

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

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

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

论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统),# 存储行业趋势研究,数据存储

元数据层

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

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

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

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

论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统),# 存储行业趋势研究,数据存储

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

论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统),# 存储行业趋势研究,数据存储

小结

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

到了这里,关于论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于区块链的分布式存储系统开发论文研究

    论文引用:[1]蔡维德,郁莲,王荣,刘娜,邓恩艳.基于区块链的应用系统开发方法研究[J].软件学报,2017,28(06):1474-1487. 1. 区块链介绍   区块链是由多独立节点参与的分布式数据系统,也可以理解为分布式账簿(distributed ledger technologt,简称DLT),由这些节点共同维护,它的特点是

    2024年02月12日
    浏览(60)
  • 云存储、云计算与分布式存储、分布式计算是一回事吗?

    随着互联网的蓬勃兴起,大数据、人工智能、物联网、云计算与云存储等这些专业词汇在大众视野内出现的频率越来越高,再加上近几年分布式技术异军突起,更使得分布式存储、分布式计算等成为热词。然而,很多人对这些名词都一知半解,所以本文将主要和大家聊一聊,

    2024年01月25日
    浏览(62)
  • 【ElasticSearch】 ElasticSearch serverless架构介绍(查询写入分离,计算存储分离)

    ElasticSearch 推出了全新的serverless架构,将查询(search)和写入(indexing)分离,将计算(computing)和存储(storage)分离,极大提高了 ES 的可运维性,降低了学习成本。本文将先介绍下serverless含义,再介绍ElasticSearch serverless架构。 在serverless架构下,用户只需关注业务逻辑,无需管理服务

    2024年01月24日
    浏览(48)
  • 论文阅读:Vary论文阅读笔记

    论文:Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models Paper | Github | Demo 许久不精读论文了,内心一直想找个专门的时间来细细品读自己感兴趣的论文。现在想来,无异于是自己骗自己了,因为根本就不存在那个专门的时间。所以改变最好的时候就是现在。 因为自己一

    2024年01月19日
    浏览(46)
  • 存储、计算、分布式存储篇(收集整理适合小白)

    存储分类 块存储 需要格式化,将文件直接保存到磁盘上 文件存储 应用程序通过调用操作系统将文件保存到块存储进行持久化 Object对象存储 基于对象的存储,也可以被称为云存储,在对象存储系统中,文件没有多层级的文件结构,而是以存储空间的概念,文件被拆分为多个

    2024年02月05日
    浏览(55)
  • 论文阅读:Vary-toy论文阅读笔记

    论文:Small Language Model Meets with Reinforced Vision Vocabulary Paper | Github | Demo 说来也巧,之前在写论文阅读:Vary论文阅读笔记文章时,正好看到了Vary-toy刚刚发布。 这次,咱也是站在了时代的前沿,这不赶紧先睹为快。让我看看相比于Vary,Vary-toy做了哪些改进? 从整体结构来看,仍

    2024年01月25日
    浏览(59)
  • 云计算基础-存储虚拟化(深信服aSAN分布式存储)

    分布式存储是利用虚拟化技术 “池化”集群存储卷内通用X86服务器中的本地硬盘,实现服务器存储资源的统一整合、管理及调度,最终向上层提供NFS、ISCSI存储接口,供虚拟机根据自身的存储需求自由分配使用资源池中的存储空间。 每秒钟的IOPS数,该指标主要用于评价小块

    2024年02月19日
    浏览(39)
  • 字节跳动 ByteHouse 云原生之路 – 计算存储分离与性能优化

    01 起源 ByteHouse 的故事从字节跳动对于先进数据处理和分析的需求开始,这一需求随着公司业务规模的迅速扩张而日益增长,起源是对开源数据库管理系统 ClickHouse 的改造和增强。面对数据处理的高延迟、大规模数据操作的复杂性以及数据存储和处理成本的上升,字节跳动的

    2024年01月21日
    浏览(43)
  • Ceph分布式存储笔记

    1、Ceph概念 分布式存储 是指一种独特的系统架构,它由一组网络进行通信、为了完成共同的任务而协调工作的计算机节点组成;分布式系统是为了用廉价的、普通的机器完成单个计算无法完成的计算、存储任务;其目的是利用更多的机器,处理更多的数据。 Ceph是一个统一【

    2023年04月08日
    浏览(55)
  • [论文阅读笔记18] DiffusionDet论文笔记与代码解读

    扩散模型近期在图像生成领域很火, 没想到很快就被用在了检测上. 打算对这篇论文做一个笔记. 论文地址: 论文 代码: 代码 首先介绍什么是扩散模型. 我们考虑生成任务, 即encoder-decoder形式的模型, encoder提取输入的抽象信息, 并尝试在decoder中恢复出来. 扩散模型就是这一类中的

    2023年04月08日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包