IonIa: High-Performance Replication for Modern Disk-based KV Stores——论文泛读

FAST 2024 Paper 论文阅读笔记整理

问题

键值存储在数据中心应用程序中发挥着核心作用,许多KV存储都是使用写优化索引(WOI)(如LSM[58])构建的,称为WO-KV存储。最近的WO-KV存储针对现代SSD进行了优化,可以利用其高带宽并提供低延迟[73]。

为了使其具有容错性至关重要,目前的常见方法是在许多机器上复制存储,并使用现成的复制协议,如MultiPaxos[43]、Raft[56]或Viewstamp replication(VR)[46]来协调对存储的写入和读取。

现有方法局限性

现有复制协议的问题:

  • 浪费了高写性能,只提供了较低的写吞吐量,因为必须在单个线程上顺序写入,以确保副本相同[66]。这也会导致高延迟,因为复制副本必须进行协调才能就写入顺序达成一致。

  • 较差的读性能。为了保持强一致性,将读取限制在只访问leader [38,52,55],其他副本的读取带宽未被使用。这对WO-KV存储尤其不利,因为它们的读写不对称[9]:读取比写入更昂贵,因此读取次数越多,性能就越差。

本文方法

本文提出IONIA,基于SSD的写优化键值(WOKV)存储的新型复制协议。通过其存储感知设计,IONIA利用了基于SSD的WO-KV存储的独特特性。

  • 利用接口特性将并行执行推迟到后台,从而实现高吞吐量的一次往返(RTT)写入。将所有写入转换为盲写入,以避免在写入之前执行慢速读取。当写入完成时,不返回执行结果,而只向客户端返回确认,因此无序协调。随后将排序和并行执行推迟到后台,实现高吞吐量和1RTT写入。

  • 利用基于SSD的KV存储的性能特性,在任何副本上进行可扩展读取,而无需强制写入所有副本,从而在不影响写入可用性的情况下提供可扩展性。对于基于SSD的存储,可扩展性可以与本地性脱钩:因为SSD是瓶颈(而不是网络),即使是发送额外消息的非本地读取也不会影响可扩展性,只要这些额外消息仅以内存状态(而非SSD)访问其他副本。因此IONIA仅复制到一个仲裁以获得可用性,同时允许从任何复制副本进行读取。为了处理滞后的从副本,对于每个从副本的读取,IONIA在主副本处执行检查(一个元数据查询),以验证从副本返回的结果。这种方法仍然可扩展,因为主副本以高吞吐量提供来自内存的元查询。IONIA利用SSD和DRAM之间的性能差距,将可扩展性与局部性解耦,实现可扩展读取。

  • 为了实现1RTT读取,IONIA将读取发送给从副本,同时将元查询并行发送给主副本。通过客户端一致性检查机制,主副本返回足够的关于正在读取的键的信息,而客户端则决定从副本结果是否为最新。

  • 由读取优化引入的问题是,如何确保元查询始终从主副本的内存中提供服务,IONIA维护最近修改密钥的紧凑历史记录而不是存储中的所有密钥。一个相关的挑战是如何确保主副本为历史中不存在的密钥的元查询返回正确的信息,IONIA返回这些密钥的稍微不准确的信息,但不会危及一致性。

对IONIA进行了广泛的评估。对于写,IONIA与并行执行协议的吞吐量相匹配,同时提供低延迟;IONIA还近似于未复制服务器的性能。对于读取,IONIA提供了线性扩展,使所有副本的读取带宽饱和,而元查询不会成为瓶颈。大多数读取都在1RTT中完成,这是通过小历史记录(例如50MB)实现的。对于YCSB,IONIA将吞吐量提高了16倍,比MultiPaxos提高了38倍。

实验

实验环境:将SplinterDB集成为所有基线中的状态机,使用4GB缓存。每个复制副本都使用Intel DC S3520 SATA SSD,使用具有24B密钥和100B值的670M KVpair数据集。

数据集:YCSB

实验对比:吞吐量、读写带宽、1RTT读占比

实验参数:读写比、副本数量、历史大小、崩溃影响

总结

针对写优化键值存储(WO-KV)的副本管理。现有复制协议:浪费了高写性能,只提供了较低的写吞吐量,因为必须在单个线程上顺序写入;较差的读性能,将读取限制在只访问主副本。本文提出IONIA,利用了基于SSD的WO-KV存储的独特特性优化复制协议。(1)利用接口特性将并行执行推迟到后台,从而实现高吞吐量的一次往返(RTT)写入。(2)在任何副本上进行读取,同时无需强制写入所有副本。为了处理滞后的从副本,对于每个从副本的读取,IONIA在主副本处执行检查(一个元数据查询),以验证从副本返回的结果。(3)为了实现1RTT读取,IONIA将读取发送给从副本,同时将元查询并行发送给主副本。通过客户端一致性检查机制,主副本返回足够的关于正在读取的键的信息,而客户端则决定从副本结果是否为最新。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python: import用法

目录 1.import1.1从当前文件夹下1.2从python库目录中导入库2.使用1.3 总结1.4 2.定义参考: 1.import 常用 1.1从当前文件夹下 1.2从python库目录中导入库 在控制台通过pip install 库名的命令安装库,库将被安装到python文件夹的库目录下。 2.使用 …

用 ChatGPT 帮自己修英文简历 — 程序员篇

写英文简历一直是许多人的痛处,怎么写得文法正确又吸引人,对于不是英文母语人士的人,是相当困难的。即使网路上有很多教学文,但看完之后还是不知道该怎么描述。导致很多人最后还是去找简历编修。不过现在有了 ChatGPT 这类 AI 工具…

离散数学——(3)联结词及对应的真值指派,最小全功能联结词集,对偶式,范式,范式存在定理,小项

目录 1.联结词及对应的真值指派 2.最小全功能联结词集 3.对偶式 4.范式 1.析取范式 5.范式存在定理 6.小项 1.联结词及对应的真值指派 2.最小全功能联结词集 3.对偶式 4.范式 1.析取范式 5.范式存在定理 6.小项

20个Python函数程序实例

前面介绍的函数太简单了: 以下是 20 个不同的 Python 函数实例 下面深入一点点: 以下是20个稍微深入一点的,使用Python语言定义并调用函数的示例程序: 20个函数实例 简单函数调用 def greet():print("Hello!")greet…

连接kafka报错:java.io.IOException: Can‘t resolve address:

修改电脑host文件:C:\Windows\System32\drivers\etc\hosts 加上一行 192.168.1.XXX MHA_SLAVE2(192.168.1.XXX 这个是安装kafka 的服务器地址,MHA_SLAVE2是kafka的容器id)

国家妇女节放假是法定的假日

在这个充满活力和希望的春天,我们迎来了一个特殊的节日——国家妇女节。这是一个属于所有女性的节日,是一个庆祝女性成就、关爱女性权益的时刻。在这个特殊的日子里,我们不禁要问:国家妇女节放假是法定假日吗?让我们一…

Vscode连接远程服务器失败解决方案

一、 could not establish connection to “XXX” 尝试使用Remote-SSH插件连接远程的服务器,但是配置显示出错,端口显示试图写入的管道不存在,弹出窗口显示could not establish connection to “XXX” 二、检查Windows的OpenSSH 1.检索是否…

centos设置SSH密钥认证,使用scp命令复制文件

1)本地查看是否已经生成SSH密钥(id_rsa、id_rsa.pub代表已经有SSH密钥):ls ~/.ssh 2)本地生成SSH密钥对(我这边3个直接回车):ssh-keygen -t rsa 3)将本地公钥(/root/.ssh…

Python数据处理实战(5)-上万行log数据提取并分类进阶版

系列文章: 0、基本常用功能及其操作 1,20G文件,分类,放入不同文件,每个单独处理 2,数据的归类并处理 3,txt文件指定的数据处理并可视化作图 4,上万行log数据提取并作图进阶版 …

【Linux】iftop命令详解

目录 一、iftop简介 二、安装iftop命令 2.1 命令查看测试环境系统信息 2.2 查看iftop版本与命令帮助 三、iftop的基本使用 3.1 直接使用iftop命令 3.2 iftop的显示说明 3.3 指定监控某块网卡 3.4 显示某个网段进出封包流量 3.5 按照流量排序 3.6 过滤显示连接 3.7 …

基于单片机的老人防丢系统设计

目 录 摘 要 I Abstract II 引 言 3 1 系统总体架构 6 1.1方案设计与选择 6 1.2 系统架构设计 6 1.3 系统器件选择 7 2 系统硬件设计 9 2.1 单片机外围电路设计 9 2.2 LCD1602液晶显示电路设计 12 2.3 短信模块电路设计 14 2.4 GPS模块电路设计 14 2.5 电源与按键控制电路设计…

OpenStack之Nova

一 、Nova 使用OpenStack Compute来托管和管理云计算系统。 OpenStack Compute是基础架构即服务 (IaaS)系统的主要部分。 主要模块在Python中实现: 1因为认证,与OpenStack 身份认证keystone 交互。 2因为磁盘和服务器镜像&#xf…

红酒:酿造过程中的设备升级与技术革新

随着科技的不断进步,葡萄酒酿造行业也在经历着设备升级与技术革新的浪潮。云仓酒庄作为业界的持续发展者,始终关注行业动态,积极引入创新的酿造设备和技术,以提升雷盛红酒系列的品质和生产效率。本文将和云仓酒庄雷盛红酒一起探讨…

在钉钉群中添加极狐GitLab 机器人

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 可以在钉钉群中添加极狐GitLab 机器人实现消息通知&#xff0c…

java SSM旅游景点与公交线路查询系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM旅游景点与公交线路查询系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系…

使用Python获取B站视频并在本地实现弹幕播放功能

目录 一、获取B站视频 二、弹幕获取与解析 三、本地视频播放与弹幕同步 四、案例与代码实现 五、总结 随着网络技术的不断发展,视频分享平台如B站(Bilibili)已成为广大网友观看、分享视频的重要场所。然而,有时候我们可能希望…

3.7 FreeRTOS day2

思维导图: 1.使用ADC采样光敏电阻数值,如何根据这个数值调节LED灯亮度。 配置ADC以读取光敏电阻的电压值,配置PWM以控制LED的亮度。使用ADC读取光敏电阻的电压值。这个值将随着环境光线的变化而变化。将ADC读取的原始值映射到一个更易于处理…

3/8—88. 合并两个有序数组

代码实现&#xff1a; void merge(int *nums1, int nums1Size, int m, int *nums2, int nums2Size, int n) {int i 0 , j 0;while (i < m && j < n) {if (nums2[j] < nums1[i]) {for (int k m - 1; k > i; k--) {nums1[k 1] nums1[k];}nums1[i] nums…

点亮城市名片丨计讯物联智慧灯杆系统在通讯基地的成功应用

项目背景 在国家新型城镇化大背景下&#xff0c;十四五规划纲要强调“加快数字化发展&#xff0c;建设数字中国”&#xff0c;明确提出“以数字化助推城乡发展和治理模式创新”&#xff0c;全面提高城市的运行效率和宜居程度。 项目概况 为满足灯杆灯光亮度的远程智能管理、对…

管理类联考--复试--面试问题--底层逻辑

文章目录 了解面试官提问问题的背后逻辑&#xff0c;在面试时遇到&#xff0c;即使不懂&#xff0c;也能往边边靠近哈一句顶一万句自我介绍 了解面试官提问问题的背后逻辑&#xff0c;在面试时遇到&#xff0c;即使不懂&#xff0c;也能往边边靠近哈 “你最有挑战性的事是啥”…