函数计算: 让小程序开发进入 Serverless 时代

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
注册配置 MSE Nacos/ZooKeeper,182元/月
简介: 小程序是轻量级的快速迭代的移动应用,对开发者从开发到上线的效率提出了更高的要求。使用函数计算,开发者无需关心后端服务的搭建运维,只需要编写函数就能够为小程序提供稳定可靠并且弹性伸缩的服务。并且随着小程序访问量增加,函数计算能够自动快速地弹性伸缩,即使应对 双11 活动高峰也能够如丝般顺滑。

本文节选自《不一样的 双11 技术:阿里巴巴经济体云原生实践》一书

作者 | 吴天龙(木吴)阿里云函数计算技术专家

导读:小程序是轻量级的快速迭代的移动应用,对开发者从开发到上线的效率提出了更高的要求。使用函数计算,开发者无需关心后端服务的搭建运维,只需要编写函数就能够为小程序提供稳定可靠并且弹性伸缩的服务。并且随着小程序访问量增加,函数计算能够自动快速地弹性伸缩,即使应对 双11 活动高峰也能够如丝般顺滑。

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

一个小程序可以分为客户端和服务端:客户端包括界面的展示和交互逻辑;服务端则包括数据的处理和分析。

为了支撑大量的小程序,平台在服务端面临的挑战有:

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

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

小程序架构

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

1.png

  • 用户在手机淘宝点击店铺活动,就进入了小程序。界面及交互由小程序客户端提供;
  • 在用户参与活动过程中,需要向服务端请求或者发送数据时,由客户端发起函数调用;
  • 函数调用先经过淘宝接入网关,进行必要的鉴权认证,然后调用到小程序云;
  • 用户的函数代码执行在小程序云中,用户可以实现自定义的业务逻辑。

利用小程序云提供的丰富的扩展能力,用户可以方便地构建完整的电商应用:

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

可以看到,函数是整个小程序的业务逻辑的核心,它将云端的基础能力组合串联起来,对客户端提供服务能力。如果函数能力成为瓶颈,将影响整个小程序的运行。

在这样的架构下,要支撑大量的小程序,需要函数能够做到:

  • 一是随时在线以支持小程序即开即用;
  • 二是弹性伸缩以应对小程序访问突增。为了做到以上两点,让我们看一下函数计算的技术架构:

函数计算架构

2.png

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

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

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

1. 冷启动

当用户创建函数上传代码时,函数计算只是将代码包保存到 OSS,并没有分配计算资源,因此函数计算可以支撑海量的小程序。

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

3.png

2. 弹性伸缩

当小程序持续调用过程中,负载逐渐上升或者突然升高的情况下,函数计算是如何应对的呢?

函数计算的“资源调度”模块,会精确管理每个实例的状态,当请求到来时,它首先检查是否有空闲的实例可以服务,如果没有请求就会进入等待队列,当有空闲的实例释放出来时,请求就能够被及时处理。

同时,调度器还会在后台创建新的实例,当新的实例准备好后,也能够服务请求。在这种策略下,能够做到在负载以 2 倍的速度增长情况下,请求的 P95 延时是稳定的。优化细节可以参考我们的博客文章

4.png

上面是某个淘宝小程序的调用量和延时监控数据。

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

3. 预留实例

对于一些“秒杀”的场景,要求瞬间提供大量的计算资源。此时靠实时的弹性伸缩是不够的:

  • 一是冷启动的时间即使是 200ms,对于秒杀场景也太慢了;
  • 二是底层的计算资源在扩容时也会有流控。

针对这种场景,函数计算提供了预留实例的功能。使用预留实例,用户可以为一些可预测的活动提前预留好资源,彻底消除冷启动。

5.png

和传统的基于服务器的做法不同,用户不需要按峰值来预留资源,而是可以结合预留实例和按量实例的混合模式:请求先被预留实例处理,当预留实例用满时,会自动弹性伸缩出更多的按量实例来处理请求。

由于有一定的资源基础,结合调度优化,按量实例的冷启动所产生的影响就被大大减小了。这就是利用函数计算的弹性伸缩能力,在性能和成本之间达到很好的平衡。

总结

小程序是轻量级的快速迭代的移动应用,对小程序开发者的开发效率有很高的要求。

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

欢迎加入钉钉交流群

函数计算二维码.png

对函数计算感兴趣的开发者,可以[点此免费试用]

ban.jpg

本书亮点

  • 双11 超大规模 K8s 集群实践中,遇到的问题及解决方法详述
  • 云原生化最佳组合:Kubernetes+容器+神龙,实现核心系统 100% 上云的技术细节
  • 双 11 Service Mesh 超大规模落地解决方案

阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
1月前
|
人工智能 运维 安全
加速智能体开发:从 Serverless 运行时到 Serverless AI 运行时
在云计算与人工智能深度融合的背景下,Serverless 技术作为云原生架构的集大成者,正加速向 AI 原生架构演进。阿里云函数计算(FC)率先提出并实践“Serverless AI 运行时”概念,通过技术创新与生态联动,为智能体(Agent)开发提供高效、安全、低成本的基础设施支持。本文从技术演进路径、核心能力及未来展望三方面解析 Serverless AI 的突破性价值。
|
1月前
|
人工智能 小程序 前端开发
一个小程序轻量AR体感游戏,开发实现解决方案
针对青少年运动兴趣不足问题,AR体感游戏凭借沉浸式互动体验脱颖而出。结合小程序“AI运动识别”插件与WebGL渲染技术,可实现无需外设的轻量化AR健身游戏,如跳糕、切水果等,兼具趣味性与锻炼效果,适用于儿童健身及职工团建,即开即玩,低门槛高参与。
|
27天前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?哪个好
小程序的开发方式丰富多元,开发团队可根据自身的技术背景、项目具体需求以及资源状况,灵活挑选最为适宜的开发路径。以下将详细介绍几种主流的小程序开发方式。
208 1
|
1月前
|
运维 小程序 数据可视化
小程序开发平台有哪些?SaaS小程序制作平台哪个好
小程序开发模式详解:自主开发、SaaS小程序制作平台与外包全对比 选择合适的小程序开发模式,是项目成功的基石。这三种模式在成本、周期、控制力和灵活性上各有千秋,适用于不同阶段和不同类型的企业。下面我们将逐一深入剖析。
234 7
|
1月前
|
移动开发 小程序 前端开发
小程序快速开发平台有哪些?
小程序开发并非“一刀切”,需结合技术储备、资金预算、时间规划及功能需求等多维度因素综合考量。以下为您详细拆解五种主流开发方案及其适用场景,助您精准匹配开发路径。
156 3
|
5月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
305 0
|
7月前
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
654 30
|
1月前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?小程序开发制作软件推荐
小程序开发方案全解析:5种主流方式与选择指南 小程序开发需根据技术能力、预算、时间及功能需求综合决策。以下为5种主流开发方案及适用场景分析:
334 0

相关产品

  • 函数计算