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

关于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.rhkb.cn/news/156359.html

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

相关文章

web3.0时代分布式网络协议的异同

Web3.0时代标志着分布式网络协议的兴起,其中IPFS(InterPlanetary File System)和NDN(Named Data Networking)是备受瞩目的项目。尽管它们都属于分布式网络协议领域,但在多个方面存在显著区别。以下是IPFS和…

Python- socket编程

Python中的socket模块为网络通信提供了基础API,使我们能够在应用程序中实现低级的网络交互。使用socket编程,可以创建TCP、UDP和RAW sockets来进行数据通信。 以下是Python socket 编程的简要概述: 1. 核心概念 Socket: 通信的端点&#x…

计算机毕业设计 it职业生涯规划系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

Centos (含Rocky-Linux) VSFTPD 简单设置

本文并非深入讨论vsftp配置的文章,仅以能连通为目的,适合那些临时需要上传点东西到服务器的场景。 一、安装 dnf -y updatednf -y install vsftpdsystemctl start vsftpdsystemctl enable vsftpd二、防火墙 开放21端口: firewall-cmd --zo…

按键中断小灯蜂鸣器风扇

按键1实现小灯亮灭&#xff0c;按键2实现蜂鸣器&#xff0c;安静3实现风扇 src/key_it.c #include"key_it.h"void key3_it_config() {//RCC使能GPIOF时钟RCC->MP_AHB4ENSETR | (0x1<<5);GPIOF->MODER & (~(0x3<<16));EXTI->EXTICR3 &…

RustDay03——记录刷完Rust100题

刷了两三天Rust&#xff0c;终于把Rust100题刷完了&#xff0c;小小记录一下 明天白天的时候重开账户开题写答案

ThreeJS-3D教学七-交互

在threejs中想要选中一个物体&#xff0c;点击或者鼠标悬浮&#xff0c;又或者移动端的touch事件&#xff0c;核心都是通过new THREE.Raycaster完成的。这里用到了一个概念&#xff0c;即我们点击时的 屏幕坐标 转换为 three中的3D坐标。 先看效果图&#xff1a; 代码是&#…

2023全国大学生软件测试大赛开发者测试练习题99分答案(ScapegoatTree2023)

2023全国大学生软件测试大赛开发者测试练习题99分答案(ScapegoatTree2023) 题目详情题解代码(直接全部复制到test类中即可)提示:该题只需要分支覆盖得分即可,不需要变异得分 题目详情 题解代码(直接全部复制到test类中即可) package net.mooctest;import static org.…

Zabbix安装出现必要条件检查失败

问题描述 今天在某朋友部署新环境的Zabbix时&#xff0c;系统出现如下的检查失败情况。此环境的基础部分不是我负责&#xff0c;而是其它项目共存的PHP环境&#xff0c;也是挺奇怪的。一般来说&#xff0c;不应该将zabbix与其它系统部署在一起&#xff0c;没有条件哪怕时Docke…

在服务器上解压.7z文件

1. 更新apt sudo apt-get update2. 安装p7zip sudo apt-get install p7zip-full3. 解压.7z文件 7za x WN18RR.7z

OpenCV4(C++)—— 直方图

文章目录 前言一、计算直方图二、归一化三、直方图均衡化四、直方图匹配 前言 直方图(Histogram)最开始在统计学中被提出&#xff0c;由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型&#xff0c;纵轴表示分布情况。在图像领域&#xff0c;直方…

旅游网站HTML

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>旅游网</title> </head> <body><!--采用table编辑--> <!--最晚曾table,用于整个页面那布局--><table width&q…

Java I/O 的 OutputStream 输出流相关知识点详解

Java 17 的 I/O 基础 OutputStream 篇 对于 OutputStream 主要是字节流类型的输出流。 OutputStream OutputStream 抽象类是所有字节输出流类的超类。输出流接受输出字节并将它们发送到某个接收器中。 同样该抽象类需要一个子类来继承实现始终提供至少一种写入一个字节输出的…

es6(二)——常用es6说明

ES6的系列文章目录 es6&#xff08;一&#xff09;——var和let和const的区别 文章目录 ES6的系列文章目录一、变量的结构赋值1.数组的结构赋值2.对象的结构赋值 二、模板字符串三、扩展运算符1.字符串的使用2.数组的使用 四、箭头函数1.普通函数的定义2.箭头函数的定义3.箭头…

简单大方的自我介绍 PPT 格式

自我介绍是展示自己的机会&#xff0c;同时也是展现自信和魅力的重要时刻。通过简单大方的PPT格式&#xff0c;可以更好地展示自己的个性和才华。下面是一些建议&#xff0c;帮助你在自我介绍中展现自信和魅力。 1. 打造简洁而有吸引力的PPT布局&#xff1a; - 选择简洁大方的背…

数据库常见面试题--MySQL

梳理面试过程中数据库相关的常见问题&#xff0c;需要说明的是&#xff0c;这篇文章主要是基于MySQL数据库&#xff0c;其他类型的数据库还请自行参考使用。 数据库概述 为什么使用数据库 1、数据库增删改查更方便 2、提供了事务的能力 本质是更好的管理数据。 数据库体系结…

(部署服务器系列一)虚拟机模拟部署服务器

1、下载安装vmware 15 &#xff08;win7最高支持版&#xff09; 2、下载安装CentOS 配置2核2g&#xff08;最少&#xff09;磁盘100g&#xff08;不会实际占有&#xff09;选择时区-上海配置分区&#xff1a;https://blog.csdn.net/qq_35363507/article/details/127390889 &a…

借助PLC-Recorder,汇川中型PLC(AM、AC系列,CODESYS平台)2ms高速采集的方法

高速数据采集要保证速度&#xff0c;也要保证时刻的准确性。在windows系统里&#xff0c;时间稳定性是个很难的问题。如果PLC发送的数据里带有时间信息&#xff0c;则可以由PLC来保证采样周期的稳定性。 从V2.12版本开始&#xff0c;PLC-Recorder软件可以处理发送电文里的时间…

Ubuntu输入正确密码重新跳到登录界面

Ubuntu输入正确密码重新跳到登录界面 问题描述 输入正确的密码登录后闪一下又回到锁屏界面 输入正确的密码后还是回到这个界面 产生的原因 /etc/profile或者/etc/enviroment出现了问题,导致无法正常登录 该错误产生的原因不止一个 这里是因为/etc/profile或者/etc/enviromen出…

收银系统商品定价设计思考

一、背景 因为门店系统里商品总共也就几万款&#xff0c;一直以来都是根据条码由总部统一定价销售&#xff0c;现在有加盟店&#xff0c;各门店也有进行各自促销活动的需求&#xff0c;这就需要放开门店自主定价权&#xff0c;所以近段时间系统在商品定价上做了扩展。 二、商…