解密双十一小程序云背后毫秒级伸缩的Serverless计算平台:函数计算

本文涉及的产品
简介: 自2017年第一批小程序上线以来,越来越多的移动端应用以小程序的形式呈现。小程序拥有触手可及、用完即走的优点,这大大减少了用户的使用负担,使小程序得到了广泛的传播。在阿里小程序也被广泛地应用在淘宝/支付宝/钉钉/高德等平台上,例如今年双11大家在淘宝/天猫上参加的活动,大部分都是通过小程序提供的。

自2017年第一批小程序上线以来,越来越多的移动端应用以小程序的形式呈现。小程序拥有触手可及、用完即走的优点,这大大减少了用户的使用负担,使小程序得到了广泛的传播。在阿里小程序也被广泛地应用在淘宝/支付宝/钉钉/高德等平台上,例如今年双11大家在淘宝/天猫上参加的活动,大部分都是通过小程序提供的。

一个小程序可以分为客户端和服务端:客户端包括界面的展示和交互逻辑,服务端则包括数据的处理和分析。为了支撑大量的小程序,平台在服务端面临的挑战有:

  1. 大量的小程序是不活跃的,传统的至少一台服务器的方式会造成资源浪费
  2. 在活动高峰期小程序的调用量激增,要求服务端能够快速进行弹性伸缩

针对小程序场景,阿里云提供了完整的小程序解决方案:小程序云。资源的有效利用和弹性伸缩,是小程序云提供的核心能力之一,而这背后依托的,就是阿里云函数计算服务。函数计算是一个全托管Serverless计算服务,让开发者无需管理服务器等基础设施,只需编写和上传代码,就能够构建可靠、弹性、安全的服务。下面就以双11小程序场景为例,解析函数计算在弹性伸缩上的核心技术。

小程序架构

让我们先来看一下淘宝小程序的技术架构是什么样的:

1

  1. 用户在手机淘宝点击店铺活动,就进入了小程序。界面及交互由小程序客户端提供
  2. 在用户参与活动过程中,需要向服务端请求或者发送数据时,由客户端发起函数调用
  3. 函数调用先经过淘宝接入网关,进行必要的鉴权认证,然后调用到小程序云
  4. 用户的函数代码执行在小程序云中,用户可以实现自定义的业务逻辑。利用小程序云提供的丰富的扩展能力,用户可以方便地构建完整的电商应用

    • 数据存储:存储结构化的数据
    • 文件存储:存储文本/图片/视频等文件
    • 电商服务:获取用户信息/创建支付交易
    • 统计分析:自动统计小程序的使用信息及用户分析,支撑商业决策

可以看到,函数是整个小程序的业务逻辑的核心,它将云端的基础能力组合串联起来,对客户端提供服务能力。如果函数能力成为瓶颈,将影响整个小程序的运行。在这样的架构下,要支撑大量的小程序,需要函数能够做到一是随时在线以支持小程序即开即用,二是弹性伸缩以应对小程序访问突增。为了做到以上两点,让我们看一下函数计算的技术架构:

函数计算架构

2

其中几个核心组件的功能如下:

  1. API服务:函数计算的网关,实现鉴权/流控等功能
  2. 资源调度:为函数调用分配管理计算资源,负责调度效率和性能
  3. 函数执行引擎:执行函数代码的环境,做到安全和隔离

基于这个架构,函数计算是如何解决上面提到的小程序平台的挑战呢?接下来我们逐一分析。

1. 冷启动

当用户创建函数上传代码时,函数计算只是将代码包保存到OSS,并没有分配计算资源,因此函数计算可以支撑海量的小程序。当函数第一次被调用时,函数计算会分配计算资源、下载函数代码、加载并执行代码。这一过程称为冷启动,函数计算通过大量的优化,将系统侧的冷启动时间优化到200ms以内。因此即使是冷的小程序,在初次调用时也能够做到快速的即开即用。

3

2. 弹性伸缩

当小程序持续调用过程中,负载逐渐上升或者突然升高的情况下,函数计算是如何应对的?函数计算的“资源调度”模块,会精确管理每个实例的状态,当请求到来时,它首先检查是否有空闲的实例可以服务,如果没有请求就会进入等待队列,当有空闲的实例释放出来时,请求就能够被及时处理。同时,调度器还会在后台创建新的实例,当新的实例准备好后,也能够服务请求。在这种策略下,能够做到在负载以2倍的速度增长情况下,请求的P95延时是稳定的。优化细节可以参考我们在云栖社区的文章

4

上面是某个淘宝小程序的调用量和延时监控数据。可以看到,在整点活动时,TPS出现了瞬间的高峰,但是P95延时却没有明显的波动。这是因为函数计算在请求高峰来临时,能够快速地弹性伸缩创建新的实例,同时利用已有资源做一定的缓冲,使得整个攀升的过程能够比较平滑。

3. 预留实例

对于一些“秒杀”的场景,要求瞬间提供大量的计算资源。此时靠实时的弹性伸缩是不够的:一是冷启动的时间即使是200ms,对于秒杀场景也太慢了;二是底层的计算资源在扩容时也会有流控。针对这种场景,函数计算提供了预留实例的功能。使用预留实例,用户可以为一些可预测的活动提前预留好资源,彻底消除冷启动。

6

和传统的基于服务器的做法不同,用户不需要按峰值来预留资源,而是可以结合预留实例和按量实例的混合模式:请求先被预留实例处理,当预留实例用满时,会自动弹性伸缩出更多的按量实例来处理请求。由于有一定的资源基础,结合调度优化,按量实例的冷启动所产生的影响就被大大减小了。这就是利用函数计算的弹性伸缩能力,在性能和成本之间达到很好的平衡。

总结

小程序是轻量级的快速迭代的移动应用,对小程序开发者的开发效率有很高的要求。小程序上线后随着访问量的增加或者活动期间的访问突增,对后端服务的稳定和弹性也是一个很大的考验。函数计算上传代码即可运行,极大地提高了后端服务的开发效率;混合模式的弹性伸缩,轻松应对负载变化。这些特点使得函数计算成为支撑小程序平台的最佳选择。

诚邀对函数计算感兴趣的同学免费试用,欢迎加入我们的用户交流群:

1574139958686

参考

阿里小程序快速体验

阿里小程序云Serverless,让开发者专注于代码逻辑和业务本身,具备极简运维、多端适配、按需使用、弹性扩容等优势,帮助开发者快速部署小程序。

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
23天前
|
存储 缓存 IDE
在函数计算(FC)中,如果已经按照指示完成了插件的安装,但插件没有显示在SD的菜单中
在函数计算(FC)中,如果已经按照指示完成了插件的安装,但插件没有显示在SD的菜单中
38 3
|
25天前
|
监控 关系型数据库 Serverless
Serverless 应用引擎常见问题之函数计算3.0的项目提示未知错误如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
31 5
|
1月前
|
人工智能 Serverless API
在函数计算上部署专属的Agent平台
Agent及Agent平台的相关概念和应用价值已经在《智能体(Agent)平台介绍》 文章进行了介绍,接下来我们要进行实际的操作,在阿里云函数计算上快速获取专属的Agent平台-AgentCraft
74857 6
在函数计算上部署专属的Agent平台
|
23天前
|
监控 Serverless
函数计算(FC)作为一种无服务器的计算服务,在使用过程中可能会遇到各种问题
函数计算(FC)作为一种无服务器的计算服务,在使用过程中可能会遇到各种问题
20 4
|
2月前
|
人工智能 NoSQL Serverless
基于函数计算3.0 Stable Diffusion Serverless API 的AI艺术字头像生成应用搭建与实践的报告
本文主要分享了自己基于函数计算3.0 Stable Diffusion Serverless API 的AI艺术字头像生成应用搭建与实践的报告
469 6
基于函数计算3.0 Stable Diffusion Serverless API 的AI艺术字头像生成应用搭建与实践的报告
|
3月前
|
运维 物联网 Serverless
函数计算FC报错问题之FC插件报错如何解决
函数计算(Function Compute,FC)是一个事件驱动的全托管计算服务,允许用户编写并上传代码,而无需管理服务器运行和维护;在使用过程中,可能会遇到各种报错,本合集聚焦于函数计算FC常见的报错问题,提供一系列的故障排查指导和解决建议,帮助用户优化云端函数执行
105 0
|
17天前
|
消息中间件 NoSQL Kafka
云原生最佳实践系列 5:基于函数计算 FC 实现阿里云 Kafka 消息内容控制 MongoDB DML 操作
该方案描述了一个大数据ETL流程,其中阿里云Kafka消息根据内容触发函数计算(FC)函数,执行针对MongoDB的增、删、改操作。
|
26天前
|
人工智能 JavaScript 小程序
Serverless 应用引擎常见问题之函数计算安装serverless devs成功了但是配置密钥这步一直不成功如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
22 1
|
28天前
|
物联网 大数据 云计算
未来趋势:无服务器计算的崛起
随着云计算技术的发展,无服务器计算作为一种新兴的计算模式正逐渐受到关注。本文将探讨无服务器计算的定义、优势以及在后端开发中的应用,并展望其在未来的发展趋势。
|
2月前
|
人工智能 Serverless API
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案

相关产品

  • 函数计算