资源使用率提高 25%,成本降低 90%,云函数是怎么做到的?
云函数是一项 Serverless 计算服务,提供 FaaS(Function as a Service)能力。一方面,云函数能够将开发测试的对象聚焦到函数级别,使得整体的开发、联调、交付、上线过程更加灵活;另一方面,云函数作为 Serverless 的核心与枢纽,开发者在应用中集成云函数 SDK 后,能够像拼搭积木一样自由便捷地组织各项服务如云数据库、云存储等来实现业务逻辑,提升业务功能构建的便利性。
此外,云函数可以根据函数的实际流量对函数进行弹性伸缩,开发者无需对服务器资源进行管理,运维管理的难题随之解决。
简单来说,云函数可以大幅度降低开发成本。下面看看云函数具体是如何做到的:
某权限管理服务器主要为用户提供基于凭据的授权和鉴权的能力,日访问流量近 6.85 亿,且流量集中在一个核心接口中,伴有明显的波峰低谷,非常符合云函数弹性伸缩的特征。
该服务器一直使用 ECS 来自动调整计算资源(EC2 Container Service 是一个高度可扩展的软件容器管理服务),为了提升资源使用率、降低时延以及节约资源和开发成本,其使用 FaaS 函数重构了代码架构,并通过分次切换流量验证保证了重构后服务器功能的可用性和稳定性。
使用 FaaS 函数重构了代码架构的服务器上线后,正值 6·18 大促活动,日调用量大幅度提高至 27 亿,实现了四倍弹性伸缩,流量无损抗住 5W+峰值流量。并且 CPU 利用率达到 60%,相比之前提高了 25%;通过准确的流量预测,冷启动次数降低了近 30%,费用比传统 ECS 微服务模式降低了近 90%。(具体收益结合业务场景和使用案例预估)
在流量低谷期,资源自动降低;而当流量逐步走高,乃至峰时,应用可以快速启动满足流量峰值,是应用可靠性和资源弹性的直接表现。而这都离不开应用的快速启动能力。
说到这里,就不得不提到本案例中用到的两个云函数关键技术点:
1、冷启动优化:冷启动的时延降低 95%
使用了“快照恢复”的技术:将当前的函数实例以及函数状态保存为函数快照,启动时从函数快照并行恢复,省去 JVM 运行时,Spring 框架和业务初始化阶段的耗时(如下图所示)。
“快照恢复”的两种实现方式:
1)高速快照缓存:基于共享内存同节点上的函数实例零拷贝恢复;
2)并行快照恢复:对于函数快照,按照运行时、进程数据结构、依赖文件等构建依赖树,并行进行恢复重建。
2、调用量的预测预热:尽量避免冷启动的发生
运用了弹性预测的能力:利用机器学习技术,预测未来一段时间内函数调用请求次数,提前预热适量函数实例,避免冷启动。
两种预测模型,满足多种类型数据预测需求:
1)FFT:基于傅里叶统计模型(一维时序数据)提取周期性信息,对强周期性任务进行预热;
2)LSTM:基于深度学习模型(支持多维数据)对业务多维特征进行学习拟合,对弱/非周期性任务进行预热。
(本文数据及图片来源华为开发者联盟)
云函数采用三层隔离,实现了内核、容器、网络三层安全防护能力,在提高资源使用率、降低成本的同时,也保障了云端数据的安全。此外,云函数还提供面向流量洪峰(精准容量+极致弹性+限流降级)的高可用方案,确保在升级时不会造成业务的中断,您可以直接创建函数,不用申请额外资源,即开即用,流程极简。
想了解更多 Serverless 相关内容,可访问 AppGallery Connect>我的项目>构建>云函数。
评论