跨越行业绊脚石,阿里云函数计算发布 7 大技术突破
Serverless 的本质是通过屏蔽底层的计算资源,来实现业务层开发的专注度和自由度。但越是往上抽象,云厂商在底层的实现就越是复杂。函数计算将服务进一步拆分到函数的颗粒度,这势必会给开发、运维、交付等带来新的挑战,例如如何对函数进行端云联调、如何对函数进行可观测和调试、如何优化 GB 级别的镜像冷启动?这些以往在服务的颗粒度时,都不是问题的事情,成了 Serverless 大规模落地企业核心生产业务的绊脚石。
2021 云栖大会现场,阿里巴巴研究员、阿里云智能云原生应用平台总经理丁宇(叔同)重磅发布了函数计算的 7 大技术创新和突破,加速现代应用架构的革新。
Serverless Devs 2.0:业内首发 Desktop,支持端云联调、多环境部署
开源近一年, Serverless 开发者平台 Serverless Devs 2.0 版本正式发布。相比 1.0 ,2.0 在性能、使用体验实现全方位提升,业内首发桌面客户端 Serverless Desktop,对桌面客户端进行了精细设计兼具美感和实用主义,具备更强的企业级服务能力。
作为业内首个支持主流 Serverless 服务/框架的云原生全生命周期管理的平台,Serverless Devs 致力于为开发者打造 Serverless 应用开发一站式服务,Serverless Devs 2.0 提出多模式调试方案,包括打通线上线下环境;本地对接线上环境并进行调试的端云联调方案、本地直接进行开发态调试的本地调试方案、以及云端运维态调试的在线调试/远程调试方案等。新版本增加多环境部署部署能力,Serverless Devs 2.0 已支持一键部署框架 30 余种,包括 Django,Express,Koa,Egg,Flask,Zblog,Wordpress 等。
业内首发实例级别可观测和调试
实例是函数资源最小的可被调度的原子单位,类比容器的 Pod。Serverless 将异构基础资源高度抽象,因此“黑盒问题”是 Serverless 大规模普及的核心落地之痛。业内同类产品均没有透出“实例”概念,也从未在可观测功能中将 CPU、内存等指标透出,但可观测就是开发者的眼睛,没有可观测,何谈高可用呢?
函数计算重磅发布实例级别可观测能力,对函数实例进行实时监控和性能数据采集,并进行可视化展示,为开发者提供函数实例端到端的监控排查路径。通过实例级别指标,您可以查看 CPU 和内存使用情况、实例网络情况和实例内请求数等核心指标信息,让“黑盒”不黑。同时,函数计算将通过开放部分实例登录权限,做到既能观测,还能调试。
业内首发固定数量、定时、水位自动伸缩的实例预留策略
函数计算冷启动受到多个因素影响:代码和镜像大小、启动容器、语言运行时初始化、进程初始化、执行逻辑等,这依赖用户和云厂商的双向优化。云厂商会自动为每个函数分配最合适的实例数量,并进行平台侧的冷启动优化。但对于某些在线业务时延非常敏感,云厂商无法代替用户进行更深层的业务优化,如对代码或依赖进行精简、编程语言的选择、进程的初始化、算法优化等。
业内同类产品普遍是采用预留固定实例数量的策略,即让用户配置 N 个并发值,除非手动调整,否则在分配了 N 个实例后不会再伸或者缩。这种方案只解决了部分业务高峰期的冷启动延时,但大大增加了运维成本和资源成本,对红包大促等带有不定期峰谷的业务,其实并不友好。
因此,函数计算率先将部分实例资源的调度权限授予用户,允许用户通过固定数量、定时伸缩、按水位伸缩、混合伸缩等多维度的实例预留策略,来预留适量函数实例,分别满足业务曲线相对平稳(如 AI/ML 场景)、峰谷时间段明确(如游戏互娱、在线教育、新零售等场景)、突发流量无法预估(如电商大促、广告等场景)、业务混杂(如 Web 后台、数据处理等场景)等不同场景的诉求,从而降低冷启动对时延敏感型业务的影响,真正实现弹性和性能兼顾的终极目标。
业内率先推出 GPU 实例
函数计算提供弹性实例和性能实例两种实例类型,弹性实例规格从 128 MB 到 3 GB,隔离粒度做到了整个云生态最细,能真正实现普适场景下资源利用率 100%;性能实例规格区间范围包含 4 GB、8 GB、16 GB 和 32 GB。资源上限更高,主要适用于计算密集型场景,如音视频处理、AI 建模和企业级 Java 应用等场景。
随着专用领域硬件加速的蓬勃发展,各 GPU 厂商均推出了视频编解码专用 ASIC,比如:英伟达从 Kepler 架构集成视频编码专用电路、从 Fermi 架构集成视频解码专用电路。
函数计算正式推出了基于 Turning 架构的 GPU 实例,使得 Serverless 开发者可以将视频编解码的 workload,下沉到 GPU 硬件加速,从而大大加快了视频生产、视频转码的效率。
最高可交付 2w 实例/分钟
所谓“无服务器”,并不是说软件应用不需要服务器就可以运行了,而是指用户无须关心软件应用运行时,涉及的底层服务器的状态、资源(比如 CPU、内存、磁盘及网络)和数量。软件应用正常运行所需要的计算资源由云计算厂商动态提供,但实际上,用户还是会关心云厂商的资源交付能力,以及应对突发流量场景下资源不足导致的访问波动。
函数计算依托于阿里云强大的云基础设施服务能力,通过神龙裸金属资源池和 ECS 资源池双池互备,在业务高峰期,实现最大交付达 2w 实例/分钟,这近一步提升了函数计算在客户核心业务上的交付能力。
VPC 网络建连优化:从 10s 优化至 200ms
当用户需要在函数中访问用户 VPC 中的资源,例如 RDS/NAS 时,需要打通 VPC 网络。业内 FaaS 产品普遍采用动态挂载 ENI 的方式来实现 VPC 打通,即在 VPC 创建一个 ENI,挂载到 VPC 中执行函数的机器上。该方案让用户能非常简单地联动后端云服务,但 ENI 挂载的速度一般需要 10 秒以上,在延时敏感业务场景下带来极大的性能开销。
函数计算通过将 VPC 网关服务化,实现计算和网络解耦,计算节点的伸缩不再受限于 ENI 挂载的能力。该方案由网关服务负责 ENI 的挂载、网关节点的高可用和自动伸缩,而函数计算专注于计算节点的调度,最终实现 VPC 网络建连时,函数冷启动时间降至 200 ms。
GB 级别镜像启动:从分钟级优化至秒级
函数计算在 2020 年 8 月率先发布了容器镜像的函数部署方式,AWS Lambda 在 2020 年 12 月 Re-Invent,国内友商在 2021 年 6 月也相继宣布了 FaaS 支持容器的重磅功能。冷启动一直都是 FaaS 的痛点,引入比代码压缩包大几十倍的容器镜像后,加重了冷启动过程带来的时延。
函数计算创新性的发明了 Serverless Caching,根据不同的存储服务特点,构建数据驱动、智能高效的缓存体系,实现软硬件协同优化,将 Custom Container 体验进一步提升。到目前为止,函数计算已经将镜像加速优化到了较高的水准。我们在函数计算的公开用例(https://github.com/awesome-fc)里面,挑选了 4 个典型的镜像,并将它们适配至国内外几个大型云厂商进行横向对比,每间隔 3 小时调用上述镜像,重复数次。
实验证明,在 GB 级别镜像冷启动的场景下,函数计算已经实现了分钟级到秒级的跨越。
先行一步,志在千里
2009 年,伯克利就当时兴起的云计算提出 6 点预测,包括服务的按需付费成为可能、物理硬件的利用率将大大提高等,在过去的 12 年间,这些都已成为事实。2019 年,伯克利再次预测 Serverless 计算将会成为云时代默认的计算范式,并取代 Serverful (传统云)计算模式。
参照云计算这 12 年的发展历程,Serverless 正处于验证伯克利预测的第 3 年,刚过四分之一。这 3 年间,从云的未来的美好畅想,到云厂商倡导的 Serverless First 和大规模投入,再到企业用户充分利用 Serverless 的优势来优化现有架构,并客观的面对影响 Serverless 大规模落地企业核心业务的绊脚石,再到今天,通过技术创新和突破来化解行业共同的痛点。这不仅需要先行一步的勇气和魄力,更需要志在千里的使命和责任。
评论