FAST 2022 Paper 论文阅读笔记整理
问题
现代分布式KV存储通过在节点之间分发KV对的副本来采用复制以实现容错。然而,现有的分布式KV存储通常在同一索引结构中管理所有副本,例如LSM-Tree,从而导致复制冗余之外的大量I/O成本。
本文方法
提出了副本解耦的概念,将副本的主副本和冗余副本的存储管理解耦,这样不仅可以降低索引中的I/O成本,还可以提供可调的性能。思路是如果使用不同的索引结构来管理不同类型副本的存储,不仅可以通过减小每种类型副本的索引结构的大小来减轻读/写放大,而且可以实现灵活的存储管理,以适应不同的设计权衡。
使用LSM树只管理主副本,以便以更轻量级的方式保留LSM树的设计特性;同时,对冗余副本使用更简单但可调的索引结构,以根据性能要求平衡读写性能。
在管理LSM树中的主副本时,使用两层日志来管理冗余副本,其顺序可调,以实现平衡的读写性能。其思想是将冗余副本批处理写入到仅追加的全局日志中,以获得高写入性能。进一步将全局日志拆分为多个本地日志,每个本地日志中KV对的顺序可通过单个参数进行调整,以平衡冗余副本的读写性能;例如,给定高读(或写)一致性级别(即,在成功操作中要读取(或写入)的副本的数量),可以对两层日志进行调整,以获得高读(或写)性能。通过按不同的密钥范围组织KV对,并将恢复操作限制为仅访问KV对的相关范围,双层日志还提高了故障恢复性能。
开源代码:GitHub - ustcadsl/depart
实验表明,在各种一致性级别和参数设置下,DEPART在所有性能方面都优于Cassandra。具体而言,在最终的一致性设置下,DEPART的写入、读取、扫描和更新吞吐量分别高达1.43倍、2.43倍、2.68倍和1.44倍。
实验
实验环境:两个12核Intel(R)Xeon(R)CPU E5-2650 v4@2.20 GHz、32 GiB RAM、一个500 GiB Samsung 860 EVO SATA SSD、通过10 Gb/s以太网交换机互连、CentOS 7.6.1810、64位Linux内核3.10.0、Ext4文件系统。
数据集:YCSB
实验对比:吞吐量、延迟、尾延迟、读写放大率、对时间细分分析各步骤时间、故障恢复时间
总结
对于KV存储中的副本管理进行优化,现有方法实验同一索引结构中管理所有副本,例如LSM-Tree,会导致复制冗余之外的大量I/O成本。本文提出副本解耦,将主副本和冗余副本分离。使用LSM树管理主副本,以便以更轻量级的方式保留LSM树的设计特性;使用两层日志来管理冗余副本,通过只追加的全局日志保证冗余副本写入速度,将全局日志根据用户需要拆分为多个本地日志,分别优化读(写)性能;按不同的密钥范围组织KV对,将恢复操作限制为仅访问KV对的相关范围,提升故障恢复性能。