作者:车漾、刘奖、景奇
随着 IT 基础设施从物理机到虚拟机,再到以 Kubernetes 为代表的容器环境,甚至到 Serverless 的逐渐演进,今天的计算和应用的形态以一日千里的速度发展。尤其是 AI 和数据分析等数据智能应用的 Serverless 化已经成为了一种趋势。 Gartner 曾预测,到 2023 年 70% 的 AI 应用将基于容器和 Serverless 技术开发。这是大家相信的未来,但应用 Serverless 化之路充满艰辛,比如现有应用迁移门槛高,供应商锁定,基础设施响应能力不足,可观测性欠缺,存储接入繁琐等。
这些都是用户对于 Serverless 基础平台提供商的刚性需求,谁能更加开放,谁能更好提供 Serverless 应用所运行的基础设施和生态系统,谁才能成为客户的最终选择,而不仅仅是谁提供的计算资源弹性能力更强或者成本更低,这实际是云计算巨头的内功较量。
(图片来源于网络)
本文首先聚焦到 AI 和大数据等应用 Serverless 化的最大挑战:计算和存储分离架构带来的数据访问延迟和远程拉取数据带 宽 巨大的挑战。尤其在 GPU 深度学习训练场景中,迭代式的远程读取大量训练数据方法会严重拖慢 GPU 计算效率。
Serverless 的数据访问挑战
Serverless 云平台对用户提供的核心能力就是极致弹性,但是这里讨论的弹性并不只是资源弹性,而是站在用户视角的应用弹性或者说业务弹性,即从用户决定扩容开始到应用真正就绪提供服务的端到端时间。资源弹性时间是其中很重要的部分,计算资源能够实现秒级,甚至毫秒级扩容,相关基础设施就很快会面临巨大的压力,其中最常见的基础设施就是存储。如果存储系统的 IO 吞吐能力跟不上实例变化的速度,例如对于业务来说,容器实例 2 秒就完成了扩容,但还需要花几十秒钟甚至几分钟等待从存储下载数据,那么极致弹性也就无从谈起。
应该说 Serverless 容器化的技术体系对于传统的存储系统提出了新的挑战:
1. 高密访问:
计算资源无存储能力,数据完全下沉到存储系统,导致并发数据访问压力陡增。这一方面影响存储系统的稳定性,另一方面也会打满存储系统服务带宽。
2. 网络延时:
计算存储分离架构拉长了存储访问链路,跨网络通信数据和元数据访问的额外延迟。
3. IO 吞吐能力的扩容成本高:
传统分布式存储带宽与吞吐仅和数据使用容量成正比,而 Serverless 平台会创建大量的容器并发的访问存储系统的数据,会触发存储系统访问限流。这就造成计算资源极致弹性与存储系统有限带宽之间的矛盾。
换而言之,Serverless 的大数据和 AI 场景需要数据分流(Data Offloading),缩短数据读取链路和提供弹性的 IO 吞吐能力。但是考虑到现有云存储系统的稳定性,成本和通用性,这个架构演进会是一个任重道远的工作。
Fluid:应用使用数据过程的抽象
Fluid 是云原生计算基金会(CNCF)旗下的官方沙箱开源项目。该开源项目定位于面向云原生场景下的数据密集型应用加速和编排,社区主要开发者和维护者来自阿里巴巴、南京大学等多家知名企业和高校。Fluid 的思路是将存储系统的能力进行分层,分解为数据存储和数据访问能力,并且将一部分的数据访问能力向上平移到计算集群中;并且在大数据(AI)场景下,对“计算任务使用数据的过程”进行抽象,提出了弹性数据集 Dataset 的概念,并将数据分布式缓存技术与云原生 自动弹性(Autoscaling),可迁移(Portablity),可调度(Scheduling) 能力相结合。
Fluid 项目地址:
数据访问能力向上平移的好处是可以利用计算集群中闲置的资源,通过分布式数据缓存能力一方面提供数据分流降低中心存储压力,另一方面利用数据本地性,VPC 网络性能优势和数据访问复用的特性,缩短数据访问路径,提升性能;通过 Dataset 的抽象,在特定语境下,根据应用的需求定义数据访问的范围,特征以及弹性,并且根据这些特性进行特定性能优化。
All problems in computer science