当前位置: 首页 > news >正文

论文阅读笔记(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模型。

相关文章:

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

关于Disaggregating Persistent Memory and Controlling Them Remotely: An Exploration of Passive Disaggregated Key-Value Stores这篇论文的笔记 原文链接 提出背景 传统的分布式存储系统中,每个节点都会包含计算和存储两个部分,一个节点既可以访…...

大模型推理框架概述

从 ChatGPT 面世以来,引领了大模型时代的变革,除了大模型遍地开花以外,承载大模型进行推理的框架也是层出不穷,大有百家争鸣的态势。本文主要针对业界知名度较高的一些大模型推理框架进行相应的概述。 简介 vLLM是一个开源的大模…...

抖音商品详情数据接口,抖音商品详情API接口

抖音商品详情API接口获取数据,接口对接可获取到商品标题,商品价格,商品优惠价,优惠券信息,店铺昵称,sku信息,sku主图,视频链接,详情主图,库存,数量…...

睿趣科技:抖音开网店怎么开通

在当前的数字时代,电子商务已经成为一种主流的商业模式。抖音作为中国最大的短视频平台,也提供了这种能力,让商家能够在平台上开设自己的网店。那么,如何在抖音上开通网店呢?下面是详细的步骤: 注册抖音账号 首先&…...

体育场馆能源消耗监测管理平台,为场馆提供能源服务

随着能源问题的不断重视,体育场馆能源问题也被人们广泛的关注。为了让体育场馆的能源高效利用,体育场馆能源消耗监测管理平台应用而生。 该平台通过采集、监测场内数据,并对数据进行实时分析与反馈,从而帮助管理者了解到场内能源…...

前端本地存储方案-localForage-vue3中使用

前言 前端有多种本地存储方案可供选择,常见的有: Cookie:小型的文本文件,存储少量数据Web Storage :包括:localStorage和sessionStorage,存储数据有上限(5M)左右Indexe…...

vivo年度新“机皇”X100系列要来了!

据供应链消息,vivo X90系列为满足旺盛的市场需求,曾经两次加单生产。 X90系列发布至今已超过11个月,竟然还保持着如此火爆大卖的状态,,令行业关注。而X系列即将发布的下一代产品X100系列,则让中高端消费者们更加期待。…...

滴滴发布十一大数据:延边出行需求上涨280% 西部省份成旅游热点

今年十一假期适逢中秋佳节,在亲友团聚和长假出游的多重期盼下,超级黄金周展现强劲内需,带动多样化的消费趋势,出行热情也随之高涨。滴滴出行数据显示,打车需求相比去年同期上涨80%,高峰时段每分钟呼叫突破1…...

Allegro如何查看器件的管脚号?

Allegro在默认情况下,器件是不显示管脚号的。 Allegro默认情况下,器件不显示管脚编号。 在PCB布局时,有时候我们需要看器件的管脚号,然后才能方便布局。那如何查看器件的管脚号呢? 这里介绍两种查看器件的管脚编号的方法。 方法一: (1)选择菜单Display→Color/Visi…...

苹果电脑用什么清理软件比较好?

很多人都会有这样的误解:mac系统不用清理。实际上mac只是将系统垃圾隐藏了,并且需要通过特定的方式打开。但其实在我们日常工作不用这么麻烦,我们只需用苹果电脑专业的清理软件就好了。今天小编就给大家分享一下mac用什么清理软件好 一、mac用…...

被装超市管理系统-智被装DW-S305系统组成项目背景

项目背景 被装管理是JD后勤管理的一个重要组成部分,现在的被装管理的手工方式已不能适应被装管理现代化的需求,存在诸多问题,还需要依托大量的人力物力,对于一些品规较多、出入库频率较高的仓库,这样的管理方式显得捉…...

使用“Apple 诊断”测试你的 Mac(查看电池是否到达更换标准)

使用“Apple 诊断”测试你的 Mac “Apple 诊断”(以前称为“Apple Hardware Test”)可以检查你的 Mac 是不是存在硬件问题。 如果你认为你的 Mac 可能存在硬件问题,可以使用“Apple 诊断”来帮助确定可能存在故障的硬件组件。“Apple 诊断”…...

ElementUI增删改的实现及表单验证

文章目录 一、准备二、添加功能2.1 新增添加按钮2.2 添加弹出框2.3 data中添加内容2.4 methods中添加相关方法 三、编辑功能3.1 表格中添加编辑和删除按钮3.2 methods中添加方法3.3 修改methods中clear方法3.4 修改methods中的handleSubmit方法 四、删除书籍功能4.1 往methods的…...

基于Google‘s FCM实现消息推送

当然&#xff0c;下面是一个简单的示例&#xff0c;演示了如何使用 Service Worker 和 Googles Firebase Cloud Messaging&#xff08;FCM&#xff09;来实现 Web 推送通知。 1. HTML 文件&#xff08;index.html&#xff09; <!DOCTYPE html> <html> <head&g…...

若依微服务前后端部署启动流程(只记录)

若依官网&#xff1a;https://www.ruoyi.vip/ 若依源码下载&#xff0c;直接zip既可&#xff1a;RuoYi-Cloud: &#x1f389; 基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统&#xff0c;同时提供了 Vue3 的版本 下载解压&#xff0c;导入 idea&…...

docker创建nginx容器

前言&#xff1a;当直接run运行nginx容器时&#xff0c;如果命令带有-v 映射出配置文件目录&#xff0c;则会报错&#xff0c;提示无法初始化&#xff0c;原因是没有配置文件&#xff0c;docker会同步主机文件到容器内&#xff0c;而主机文件又是空白的&#xff0c;所以无法启动…...

nio 文件传输

transferto方法一次只能传输2个g的数据 文件大于2个g时...

2023-10-09 python-安装psd_tools-记录

摘要: 2023-10-09 python-安装psd_tools-记录 安装python3 yum install -y python3 yum install -y python3-devel psd-tools相关文档 psd-tools — psd-tools 1.9.28 documentation GitHub - psd-tools/psd-tools: Python package for reading Adobe Photoshop PSD files psd…...

【Python目标识别】目标检测的原理及常见模型的介绍

1 概述 目标检测&#xff08;Object Detection&#xff09;是计算机视觉领域的一个重要研究方向&#xff0c;其目的是在图像或视频中定位并识别出特定的物体。目标检测模型通常需要同时确定物体的位置和类别。在深度学习之前&#xff0c;目标检测算法主要基于传统计算机视觉方法…...

SpringCloud小项目——订单积分商城 使用Nacos、Open Feign、Gateway、Sentinel技术栈

目录 引出小项目要求创建极简数据库表订单表&#xff0c;订单明细表商品表积分表 相关微服务积分微服务产品微服务订单微服务调用积分和订单微服务 网关微服务登陆认证通过网关实现对外提供接口API走网关功能 sentinel相关使用Sentinel限流&#xff0c;流量整形Sentinel降级服务…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...