论文阅读-Pegasus:通过网络内一致性目录容忍分布式存储中的偏斜工作负载

论文名称:Pegasus: Tolerating Skewed Workloads in Distributed Storage with In-Network Coherence Directories

摘要

高性能分布式存储系统面临着由于偏斜和动态工作负载引起的负载不平衡的挑战。本文介绍了Pegasus,这是一个利用新一代可编程交换机ASIC来平衡存储服务器负载的新型存储系统。Pegasus使用数据存储中最受欢迎的对象的选择性复制来分配负载。通过使用一种新颖的网络内一致性目录,Pegasus交换机跟踪和管理复制对象的位置。这使得它能够实现对复制键的负载感知转发和动态再平衡,同时仍然保证数据的一致性和一致性。Pegasus设计的实施是切实可行的,因为它只在交换机数据平面中存储转发元数据。由此产生的系统将分布式内存键值存储的吞吐量提高了10倍以上,并在具有不同程度的偏斜、读写比率、对象大小和动态性的大量工作负载下保持结果。

1 引言

分布式存储系统的任务是在巨大而不可预测的负载下提供快速、可预测的性能。像Facebook的memcached部署[50]这样的系统存储了数万亿个对象,并在每次用户互动时被访问数千次。为了实现规模,这些系统分布在许多节点上;为了实现性能可预测性,它们主要或完全将数据存储在内存中。

这些系统面临的一个关键挑战是在高度偏斜的工作负载存在下实现负载平衡。就像一个名人可能比普通用户拥有更多的粉丝一样,一些存储的对象每天接收到的请求可能比其他对象少得多[3, 67]。此外,受欢迎对象的集合会随着新趋势的兴起和消失而迅速变化[5]。传统算法如一致性哈希[30]在所有对象的受欢迎程度大致相等时分配负载非常有效,但在这种情况下却不够。对于单个受欢迎对象的请求通常超过任何一个服务器的容量

复制使得处理请求负载超过一个服务器容量的对象成为可能。尽管每个对象的复制在负载均衡方面很有效[13, 49],但也引入了很高的存储开销。仅选择复制一组热门对象可以避免这种开销。利用对缓存的先前分析[17],我们表明只需要复制很少的对象就能实现强大的负载平衡属性。然而,跟踪哪些对象是热门对象以及它们存储在哪里并不是一件简单的事情,特别是当存储系统可能有数十万个客户端时,保持多个副本一致性甚至更加困难[50]。

我们通过Pegasus来解决这些挑战,Pegasus是一个分布式存储系统,它使用一种新的架构进行选择性复制和负载平衡。Pegasus使用可编程数据平面交换机将请求路由到服务器。借鉴CPU高速缓存一致性协议[4, 19, 22, 31, 34, 36, 37, 40],Pegasus交换机充当网络内一致性目录,用于跟踪复制对象及其位置。利用交换机对请求流量的中央视图,它可以以负载感知的方式转发请求到副本。与以往的方法不同,Pegasus的一致性目录还允许它在每个写操作中动态重新平衡副本集,加速读和写密集型工作负载,同时仍然保持强一致性。

Pegasus引入了一些新技术,超越了网络内一致性目录的概念本身。它使用轻量级基于版本的一致性协议来确保一致性。负载感知调度使用反向网络遥测交换机内加权轮询策略的组合来实现。最后,为了提供容错性,Pegasus使用简单的链式复制协议在不同机架上创建多个数据副本,每个副本都与其自己的交换机负载均衡。

Pegasus是一个切实可行的方法。我们展示了它可以使用Barefoot Tofino交换机实现,并且在减少开关资源开销的同时提供了有效的负载平衡。尤其是与以往的系统[29, 45]不同,Pegasus在交换机中只存储元数据而不存储应用数据。这将交换机的内存使用量降低到总交换机SRAM的3.5%以下,使其能够与现有的交换机功能共存,从而降低了采用的主要障碍[56]。使用28个服务器和一个Pegasus交换机,我们展示了以下结果:

  • Pegasus可以将系统的吞吐量提高多达10倍,或者减少所需服务器数量的90%,在99%延迟SLO的情况下。
  • Pegasus可以快速响应动态工作负载,其中热键集合快速变化,并且可以快速从服务器或机架故障中恢复。
  • Pegasus可以通过只复制少量对象来提供强大的负载平衡属性
  • Pegasus能够为许多类型的工作负载(包括读重型和写重型),具有不同的对象大小和偏斜程度,实现这些好处。

2 动机

实际存储系统的工作负载通常表现出高度倾斜的对象访问模式[3, 6, 26, 50, 51]。在这种情况下,相对较少的热门对象接收到的请求远远超过其余对象。许多这样的工作负载可以使用Zipfian访问分布来建模[3, 5, 6, 67];最近的研究表明,一些真实的工作负载展现出前所未有的倾斜水平(例如,α > 1的Zipf分布)[10, 67]。此外,热门对象集合是动态变化的:在某些情况下,平均热门对象在10分钟内就会失去其受欢迎程度[5]。

为了可扩展性和负载分配的目的,存储系统通常将对象划分到多个存储服务器之间。高度倾斜的工作负载意味着存储服务器之间的负载也不均衡:存储最热门对象的少数服务器将接收到比其他服务器更多的流量。访问倾斜度通常足够高,以至于一个对象的负载可能超过单个服务器的处理能力,导致服务器过载。为了减少性能损失,系统需要过度配置,这会大幅增加总体成本。

倾斜工作负载种类繁多。读取密集型工作负载一直是许多最近研究的重点,并且很多系统在对其进行优化(例如,假设> 95%的请求是读取)[21, 29, 41, 45]。虽然许多工作负载确实属于这个类别,但混合或写入密集型的工作负载也很常见[67]。对象大小也有很大的变化,即便在同一个提供商内部也是如此。系统可以存储小值(几个字节)、较大值(千字节到兆字节)或两者的组合[1, 3, 5, 67]。解决倾斜工作负载的理想解决方案应该能够处理所有这些情况。

2.1 现有方法

在请求负载超过单个服务器处理能力的倾斜工作负载中,存储系统应该如何处理?已有的两种方法在这里证明了有效性:在更快的层级中缓存热门对象,以及复制对象以增加总体负载能力。

缓存 缓存长期以来一直是加速基于数据库的Web应用程序的标准方法。最近的研究在理论上和实践上证明了缓存方法的有效性:只需要缓存少数键就可以实现可证明的负载均衡保证[17, 29, 41]。

然而,缓存方法有两个限制。首先,缓存的有效性取决于构建缓存的能力,该缓存能够处理比存储服务器多个数量级的请求。这曾经是一个容易实现的目标,但随着存储系统本身采用内存存储[50, 53, 58]、巧妙的数据结构[42, 46]、新的非易失性内存(NVM)技术[25, 68]和更快的网络栈[38, 42, 48],这已成为一个严峻的挑战。最近的努力将可编程交换机构建为更快的缓存[29, 45]解决了这个问题,但硬件限制施加了重大限制,例如无法支持大于128字节的值。其次,缓存解决方案只对读取密集型工作负载有益,因为缓存副本必须在写入被存储服务器处理之前失效。

选择性复制 复制是另一种解决倾斜工作负载引起的负载不平衡的常见方法。通过选择性复制热门对象[2, 9, 13, 50],可以将对这些对象的请求发送到任何副本,有效地分散负载到服务器上。

然而,现有的选择性复制方法面临两个挑战。首先,客户端必须能够识别复制的对象及其位置,而这可能随着对象的受欢迎程度变化而改变。这可以通过使用集中式目录服务或将目录复制到客户端来实现。这两种方式都存在可扩展性限制:集中式目录服务很容易成为瓶颈,而在可能涉及数十万个客户端的情况下保持目录同步并非易事。

对于复制对象提供一致性是第二个主要挑战,这是一个相当复杂的挑战,现有系统不尝试解决它。它们要么仅复制只读对象,要么要求用户明确管理复制引起的不一致性[2, 9]。实现强一致性复制所需的解决方案(例如,共识协议[35])非常复杂,并且会产生显著的协调开销[39],特别是当对象频繁修改时。

2.2 Pegasus 目标

我们的工作目标是为上述类别的具有挑战性的工作负载提供有效的负载均衡解决方案。具体而言,我们要求我们的系统:1)为具有高度倾斜的动态工作负载提供良好的负载均衡;2)与快速的内存存储系统配合工作;3)处理任意大小的对象;4)保证线性可比性[24];5)对读取密集型、写入密集型和混合读/写工作负载同样有效。如表1所示,现有的系统都做出了明确的权衡,没有一个同时满足这五个特性。在本文中,我们将介绍一种新的分布式存储负载均衡方法,它不做任何妥协,并使用一个网络内部完整性目录。

现有负载均衡系统与 Pegasus 的比较。在“任意读写比例”列中,我们只考虑提供强一致性的系统。

3 系统模型

Pegasus 是一个机架级存储系统的设计,由多个存储服务器通过单个顶部交换机连接而成,如图1所示。Pegasus 将交换机内部负载均衡逻辑与新型存储系统相结合。Pegasus 系统提供具有读/写接口的键值存储。它不支持读取-修改-写入或原子跨键操作。Pegasus 确保强数据一致性(具体来说,线性可比性)。它使用内存存储提供快速且可预测的性能。

Pegasus 系统模型。Pegasus 是一种机架级存储系统。它通过在顶级交换机中增加一个网络内一致性目录来平衡机架内存储服务器的负载。服务器将数据存储在内存中,以实现快速和可预测的性能。

Pegasus 架构是交换机处理和应用级协议的共同设计。这得益于新型可编程数据平面交换机的能力,如 Barefoot Tofino、Cavium XPliant 或 Broadcom Trident3 系列。广义上讲,这些芯片在三个相关领域提供了可重构性:(1)可编程解析应用特定头部;(2)灵活的数据包处理流水线,通常由 10 到 20 个流水线阶段组成,每个阶段都能进行匹配查找和一个或多个 ALU 操作;以及(3)大约 10 MB 的通用内存。重要的是,所有这些功能都在交换机数据平面上,这意味着它们可以在以太网全速率处理数据包时使用 - 当今总容量以太比特每秒计量。

Pegasus 在机架级别提供负载均衡,即通过单个交换机连接的 32 到 256 台服务器。它不提供机架内的容错保证。更大规模的、具有弹性的系统可以通过多个 Pegasus 机架构建。对于这些系统,Pegasus 使用链式复制协议来跨多个机架复制对象以实现容错性。

4 网络内部目录的案例

正如我们在第2节中讨论的那样,选择性复制热门对象可以为高度倾斜的工作负载提供良好的负载均衡,并且避免缓存方法的某些缺点。然而,现有的选择性复制解决方案在为动态复制对象集提供高效的目录服务和强一致性方面存在不足。我们的关键观察是,在机架级存储系统中(第3节),顶部交换机充当系统的中心点,并处于每个客户端请求和服务器回复的路径上。这使我们能够在顶部交换机中实现一种一致性目录抽象,同时解决这两个挑战。它可以跟踪系统中每个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值