自2017年第一批小程序上线以来,越来越多的移动端应用以小程序的形式呈现。小程序拥有触手可及、用完即走的优点,这大大减少了用户的使用负担,使小程序得到了广泛的传播。在阿里小程序也被广泛地应用在淘宝/支付宝/钉钉/高德等平台上,例如今年双11大家在淘宝/天猫上参加的活动,大部分都是通过小程序提供的。
一个小程序可以分为客户端和服务端:客户端包括界面的展示和交互逻辑,服务端则包括数据的处理和分析。为了支撑大量的小程序,平台在服务端面临的挑战有:
- 大量的小程序是不活跃的,传统的至少一台服务器的方式会造成资源浪费
- 在活动高峰期小程序的调用量激增,要求服务端能够快速进行弹性伸缩
小程序架构
让我们先来看一下淘宝小程序的技术架构是什么样的:
-
用户在手机淘宝点击店铺活动,就进入了小程序。界面及交互由小程序客户端提供
-
在用户参与活动过程中,需要向服务端请求或者发送数据时,由客户端发起函数调用
-
函数调用先经过淘宝接入网关,进行必要的鉴权认证,然后调用到小程序云
-
用户的函数代码执行在小程序云中,用户可以实现自定义的业务逻辑。利用小程序云提供的丰富的扩展能力,用户可以方便地构建完整的电商应用
- 数据存储:存储结构化的数据
- 文件存储:存储文本/图片/视频等文件
- 电商服务:获取用户信息/创建支付交易
- 统计分析:自动统计小程序的使用信息及用户分析,支撑商业决策
可以看到,函数是整个小程序的业务逻辑的核心,它将云端的基础能力组合串联起来,对客户端提供服务能力。如果函数能力成为瓶颈,将影响整个小程序的运行。在这样的架构下,要支撑大量的小程序,需要函数能够做到一是随时在线以支持小程序即开即用,二是弹性伸缩以应对小程序访问突增。为了做到以上两点,让我们看一下函数计算的技术架构:
函数计算架构
其中几个核心组件的功能如下:
- API服务:函数计算的网关,实现鉴权/流控等功能
- 资源调度:为函数调用分配管理计算资源,负责调度效率和性能
- 函数执行引擎:执行函数代码的环境,做到安全和隔离
基于这个架构,函数计算是如何解决上面提到的小程序平台的挑战呢?接下来我们逐一分析。
1. 冷启动
2. 弹性伸缩
上面是某个淘宝小程序的调用量和延时监控数据。可以看到,在整点活动时,TPS出现了瞬间的高峰,但是P95延时却没有明显的波动。这是因为函数计算在请求高峰来临时,能够快速地弹性伸缩创建新的实例,同时利用已有资源做一定的缓冲,使得整个攀升的过程能够比较平滑。
3. 预留实例
总结
小程序是轻量级的快速迭代的移动应用,对小程序开发者的开发效率有很高的要求。小程序上线后随着访问量的增加或者活动期间的访问突增,对后端服务的稳定和弹性也是一个很大的考验。函数计算上传代码即可运行,极大地提高了后端服务的开发效率;混合模式的弹性伸缩,轻松应对负载变化。这些特点使得函数计算成为支撑小程序平台的最佳选择。
本文作者:rockuw
本文为云栖社区原创内容,未经允许不得转载。