经典思辨|Dirigent: 轻量化的服务器无感知计算编排系统

文摘   2024-11-18 18:05   陕西  


本文是对发表于SOSP 2024的论文《Dirigent: Lightweight Serverless Orchestration》的解读。虽然服务器无感知计算(FaaS)平台可以在 10-100 毫秒内初始化函数沙盒,但在实际的 FaaS 集群中函数实例的启动延迟可能主要来源于实例调度的开销,且二者有数个数量级的差距。这一问题的根源在于,现有平台通常是在通用集群管理器(例如 Kubernetes)之上来构建 FaaS 框架。通用集群管理器使用了许多层次化的抽象来管理和协调集群状态,并且伴随着频繁的持久化更新操作。这使得系统需要创建大量函数实例时受制于控制平面的瓶颈。论文作者提出了 Dirigent,一个为 FaaS 编排设计的轻量化平台。Dirigent 简化了原有层次化的抽象,消除了持久化的状态更新,并将控制平面和数据平面构件进行合并以减少内部通信开销。实验结果表明,Dirigent 每秒可以启动多达 2.5K 个函数实例,相较于 Knative 提升了 1250 倍。
- ABSTRACT-


01.

BACKGROUND INTRODUCTION
背景介绍


目前已有众多工作致力于优化函数沙盒本身的启动延迟,通常可控制在 10-100 毫秒的范围内。但在实际的 FaaS 环境中,启动一个函数实例不仅涉及沙盒的创建,同时还需经过 FaaS 平台的控制平面进行实例的调度,再由调度的目标节点启动沙盒。当集控制平面需要同时调度多个实例时,调度延迟会成为主要瓶颈,使得启动函数实例的端到端延迟高出一个或多个数量级。其原因在于现有 FaaS 平台是基于 Kubernetes 这样的通用集群管理器进行构建的,后者引入了对 FaaS 而言非必要的抽象和机制,从而限制了 FaaS 平台面对大规模函数负载的可扩展性。


图 1: Knative 系统架构


图 1 展示了主流开源 FaaS 平台 Knative 是如何基于 Kubernetes 构建的。Kubernetes 提供了如 Deployment、ReplicaSet、Endpoint 和 Pod 等 API 对资源进行抽象。Pod(Kubernetes 中的最小调度单元)可以通过 ReplicaSet 进行横向扩展,又通过上层的 Deployment 来管理 ReplicaSet,从而提供滚动更新等功能。Kubernetes 将上述 API 对象存储在一个具有强一致性的数据库中,控制平面通过订阅数据库来获取 API 对象的状态更新,进而对集群进行调整。在此之上,Knative 对 Kubernetes 控制平面进行了拓展,实现了例如负载均衡、并发粒度调控等额外功能。

Kubernetes 中任何对集群状态的调控都需要通过数据库进行状态更新,这使得数据序列化/反序列化、状态持久化成为了控制平面的主要瓶颈,特别是当集群需要进行大批量更新操作时(例如创建大量函数实例)。图 2 证实了这一猜想。随着并发创建的函数实例数量上升,控制平面的延迟愈发严重。然而,服务器无感知计算的负载往往呈现出高波动性和突发性,造成大量并发的实例启动,如图 3 所示。


图 2: Kubernetes 在创建函数实例时的控制平面延迟分析



图 3: 服务器无感知计算负载的高波动性和突发性


02.

Experiment Evaluation
实验评估


图 5 展示了在 93 个工作节点的集群中函数实例启动的端到端延迟。基于 containerd 函数沙盒运行时,Dirigent 创建实例的吞吐量最高可达每秒 1750 个。总体而言,Dirigent 的吞吐量比 Kubernetes 集群管理器高出 1250 倍。这一提升至关重要,因为生产中的 FaaS 集群会遇到需要每秒创建数千个实例的突发情况。


图 5: 函数实例启动的端到端延迟


图 6 展示了在 Azure 的 FaaS 数据集上测试得到的端到端性能。测量的指标是函数请求的减速比,即各个函数的端到端延迟与该函数的实际执行时间之比。图 6 中,AWS Lambda 的中位数函数减速比为 1.87,Knative 为 13.2,而 Dirigent 仅为 1.38。对于尾部延迟,Dirigent 相较于 AWS Lambda 将 p99 减速比降低了 6.89 倍,相较于 Knative 更是降低了三个数量级以上。


图 6: 在 Azure 数据集上的端到端性能



03.

CONCLUSION
总结




Dirigent 是一种专为服务器无感知计算设计的新型定制化集群管理器。与现有基于 Kubernetes 等传统集群管理器构建的 FaaS 平台不同,Dirigent 采用全新的系统架构,使用简洁的抽象和轻量级的状态持久化,消除了现有平台在高波动的 FaaS 环境中的性能瓶颈。实验结果证实 Dirigent 每秒启动 2500 个函数实例,相较于 Knative 提升了 1250 倍。Dirigent 的设计原则和实验结果为未来的 FaaS 平台提供了新的思路和参考。


欢迎扫码关注

数据空间技术与系统
数据空间技术与系统全国重点实验室面向国家数据空间建设的中长期战略需求和重大任务,开展数联网基础软件与数据空间操作系统的技术体系、标准规范、核心系统、试验环境、应用示范与开源生态等重点任务研究。
 最新文章