Pocket - Elastic Ephemeral Storage for Serverless Analytics 论文笔记

What is Serverless?

Serverless Computing(无服务器计算)是云计算的一种类型。

云计算

云计算,简单来说就是,通过互联网(云)分发计算服务,用户为使用的服务而付费,有以下四种主要的类型:

  • Infrastructure as a Service (IaaS)
  • Platform as a Service (PaaS)
  • Software as a Service (SaaS)
  • Serverless

无服务器计算

Serverless Computing有以下四个特点:

  • 免除用户自己管理服务器的麻烦,与服务器有关的概念都由Serverless云架构处理(Serverless,即服务器从你的概念里消失了)

  • 根据需要提供计算资源,自动扩展站点

  • 资源被更加精确地分配,而传统的云计算需要提前分配更多资源以便在需要的时候可用

  • Serverless会自动适应资源使用的波动(即Elastic),用户只需要为实时使用的资源付费,但是这些的波动会使计费无法预测

关于Serverless更详细的描述可以参考 What’s the Difference Between Cloud Computing and Serverless?

Introduction

Serverless与分析负载

Serverless的弹性和计费优势使其适用于数据密集型应用,比如交互式分析。一些架构在Serverless平台上发起大量细粒度任务,在分析负载中利用所有可用的并行性,并获得接近实时的性能。

在Serverless下的数据共享

分析负载一般包含多阶段,需要在不同阶段的任务之间共享状态和数据(比如shuffling)。大多数分析框架通过在每个节点上长期运行的架构代理将中间数据缓存在本地,使得不同阶段的任务可以通过网络交换中间数据。

但是,在Serverless部署下,没有架构代理将中间数据缓存在本地,甚至无法控制任务的调度和放置,使得任务之间的通信很困难。所以Serverless应用通过使用远程存储服务(对象存储、数据库、分布式缓存)来进行数据共享。

但是现有的存储服务不适合在Serverless应用中共享短暂中间数据(Ephemeral data)。文件系统、对象存储和NoSQL数据库优先提供可持久的、长期的、高可用的存储,而不是对性能和代价的优化。分布式KV存储提供高性能,但是给了用户管理存储集群规模和配置的负担(涉及选择提供合适的计算、存储和网络资源)。

不同存储技术(如DRAM,NVM,Flash和HDD)增加了找到关于性能和代价的最佳集群配置的复杂度。但是存储技术的选择很关键,因为作业可能表现出不同的存储延迟,带宽和容量要求,并且不同的存储技术在性能特征和成本方面存在很大差异。每种资源配置都会导致不同的性能和成本,为一个工作找到高效的存储分配并非易事,而且对于多个工作来说变得更加复杂。

提出Pocket

文章提出了Pocket,一个为在Serverless分析负载中高效共享数据而设计的分布式数据存储。Pocket为任意大小数据集、自动资源扩展和跨多存储层的智能数据放置,提供了高吞吐和低延迟。

Pocket的独特属性来自于通过三个平面严格划分责任:

  • control plane —— 为负载决定数据放置策略
  • metadata plane —— 为管理分布式数据放置
  • ‘dumb’ data plane —— ‘dumb’即忽略元数据,负责存储数据

Pocket根据当前负载以细资源和时间粒度独立地缩放所有三个平面。Pocket使用启发式算法,在考虑负载特征的情况下,分配正确的存储介质、容量、带宽和CPU资源,获得高效的代价和性能。存储API公开了简单的I/O操作,以实现亚秒级的访问延迟。我们倾向于Pocket被云提供者管理,提供给使用者按使用计费的代价模型。