教你轻松构建基于 Serverless 架构的小程序
前言
自 2017 年第一批小程序上线以来,越来越多的移动端应用以小程序的形式呈现。小程序触手可及、用完即走的优点,大大降低了用户的使用负担,也使小程序得到了广泛的传播。在阿里巴巴,小程序也被广泛地应用在淘宝、支付宝、钉钉、高德等平台上。
为了支撑大量的小程序,服务端面临的挑战有:
- 大量的小程序是不活跃的,传统的至少一台服务器的方式会造成资源浪费;
- 在活动高峰期小程序的调用量激增,要求服务端能够快速进行弹性伸缩。
而小程序开发者往往是客户端/前端的开发者,更多的精力在开发业务代码与应用的快速上线上,而无暇顾及服务端的运维操作。
阿里云 函数计算 是一个全托管 Serverless 计算服务,让开发者无需管理服务器等基础设施,只需编写和上传代码,就能够构建可靠、弹性、安全的服务。
函数计算弹性、免运维、高效、安全的特性十分适合作为小程序的服务端。
解决方案
函数计算封装了一套小程序服务端模板,帮助小程序开发者快速搭建基于函数计算的小程序。
使用这个模板搭建小程序应用具有以下特点:
- 运维效率高:无需管理服务器,部署函数即可上线;
- 开发效率高:基于封装好的数据接口,直接开发业务代码;
- 零费用启动:服务端基于函数计算,数据库采用表格存储,都是按量付费并且有较大的免费额度。
小程序的工作流程
一个完整的支付宝小程序需要以下几个元素:
- 支付宝 App:是支付宝小程序的载体,运行在用户手机端;
- 小程序客户端:是小程序展现给用户的操作页面;
- 小程序服务端:是小程序的逻辑处理单元,比如对用户进行身份认证以及对数据进行存取;
- 支付宝服务端:是支付宝 App 的逻辑处理单元,包含用户的身份信息。
函数计算封装了一套小程序服务端模板,帮助小程序开发者快速搭建基于函数计算的小程序。下面介绍服务端模板的工作流程。
FC 服务端模板工作流程
除了基础设施的运维问题,服务端主要解决两个通用问题:
- 身份认证:服务端提供的 API 如何对客户端的请求进行鉴权?客户端的信息如果泄露如何保证数据安全?
- 数据访问:客户端如何进行数据库操作和文件操作?
这是每一个小程序开发都会遇到的共性的问题,可以通过一些框架或者模板来避免重复建设。因此我们基于函数计算开发了一个小程序应用模板,解决了这些通用的问题,让开发者能够专注在业务逻辑上,快速开发上线自己的小程序。
- 客户端小程序通过支付宝 App 的 API,获得 authCode,这个过程会在 App 中弹出用户授权框;
- 小程序客户端向小程序服务端发起 createSession 请求,用于初始化的身份认证;
- 小程序服务端将 authCode 传给支付宝服务端,支付宝服务端校验 authCode,返回 accessToken;
- 小程序服务端根据收到的 accessToken 生成一个 sessionId 和一个 STS token,在服务端记录这 2 个信息然后把它们返回给客户端。STS token 是用于访问服务端函数的凭证,而 sessionId 作为前面认证成功而建立的会话信息,通过这个 sessionId 可以识别当前请求的用户信息;
- 小程序客户端再次需要获取数据,带着证明自己身份的 sessionId 向小程序服务端发起获取数据请求;
- 小程序服务端首先根据 sessionId 获取用户身份信息,再根据用户信息获取相关数据;
- 将用户数据返回给小程序客户端。
搭建流程
注册支付宝小程序
- 准备工作:注册支付宝开发者账号
如果您尚未注册支付宝开发者账号,使用支付宝账号登录 蚂蚁金服开放平台,并完成开发者身份注册。详细信息请参见 开发者入驻说明。
创建支付宝小程序应用
使用支付宝账号登录 蚂蚁金服开放平台进入开发者中心 创建小程序,填写基本信息,并记录下 APPID
生成密钥,需要在小程序服务端与支付宝服务端配置密钥,对交易数据进行双方校验
将公钥配置在 【设置】->【开发设置】->【接口加签方式】,并记录私钥
搭建小程序服务端
准备工作
部署应用
进入控制台应用中心,选择
Mini App Todo List Server Template
模板,填写刚才记录的 APPID 与 PrivateKey,为 DBInstance/LogProject 取个自定义的名字(如果名字已被占用,会报 Already Exists 的错误),部署应用
搭建小程序客户端
准备工作
下载并安装支付宝 小程序开发者工具。
搭建应用
在小程序项目根目录下,安装 fc-nodejs-sdk:
npm install git://github.com/aliyun/fc-nodejs-sdk.git#mini-app --save
TODO LIST 客户端代码在 mini-app-todo-list-client
修改server.js开头定义的变量,这些值会在 服务端模板 部署成功后自动输出:
由于 fc-nodejs-sdk 使用了ES6语法,在发布小程序时,需要在小程序项目的根目录下,新建一个文件mini.project.json,填入以下内容:
{ "node_modules_es6_whitelist": [ "@alicloud/fc2" ] }
至此,开发工作已经完成,您可以调试,上线您的小程序啦。
总结
小程序上线后随着访问量的增加或者活动期间的访问突增,对后端服务的稳定和弹性也是一个很大的考验。函数计算上传代码即可运行,极大地提高了后端服务的开发效率;混合模式的弹性伸缩,轻松应对负载变化。服务端模板与客户端模板可以快速搭建基于函数计算的小程序应用,这些特点使得函数计算成为支撑小程序很好的选择。
教你轻松构建基于 Serverless 架构的小程序的更多相关文章
- 轻松构建基于 Serverless 架构的弹性高可用音视频处理系统
前言 随着计算机技术和 Internet 的日新月异,视频点播技术因其良好的人机交互性和流媒体传输技术倍受教育.娱乐等行业青睐,而在当前, 云计算平台厂商的产品线不断成熟完善, 如果想要搭建视频点播类 ...
- COS 数据湖最佳实践:基于 Serverless 架构的入湖方案
01 前言 数据湖(Data Lake)概念自2011年被推出后,其概念定位.架构设计和相关技术都得到了飞速发展和众多实践,数据湖也从单一数据存储池概念演进为包括 ETL 分析.数据转换及数据处理的下 ...
- 基于小程序云Serverless开发微信小程序
本文主要以使用小程序云Serverless服务开发一个记事本微信小程序为例介绍如何使用小程序云Serverless开发微信小程序.记事本小程序的开发涉及到云函数调用.云数据库存储.图片存储等功能,较好 ...
- 基于 Aliexpress API 的小程序 : 批量 Copy 产品到不同的店铺
第一个基于 Aliexpress API 的小程序 : 批量 Copy 产品到不同的店铺 还没来得及用 API 重写软件, 先写个小程序来缓解一下手工压力: 批量Copy 产品到不同的店铺. 开网店 ...
- 基于AliOS的车载小程序
4月16日上海国际车展首日,阿里巴巴表示正在研发基于AliOS的车载小程序.同时还展出AI HUD.AI驾驶舱等最新技术,AliOS表示正在构建一个可持续发展的整合平台. 阿里方面表示,作为小程序在车 ...
- 基于mpvue搭建微信小程序
mpvue是美团开源的一套语法,语法与vue.js一致,快速开发小程序的前端框架.框架基于vue.js核心,修改了vue.js的runtime和compiler实现,使用此框架,开发者可以完全使用vu ...
- 基于centos搭建微信小程序服务,配置及数据库等
基于centos搭建小程序, ps:请提前20天准备将域名备案,申请ssl证书 实验上机地址:https://cloud.tencent.com/developer/labs/lab/10004 准备 ...
- 轻松构建 基于docker的 redis 集群
下面跟着我来 一步一步构建redis 集群吧. 集群的目录结构见GitHub源码(文章末尾) 1,安装docker环境,根据自身的操作系统,google下即可. 2,我们在服务器上,搭建所需目录结构. ...
- 基于Handler架构的录音程序
近期我的app须要一个录音功能,于是搜到这篇文章 文章中录音线程与主线程间的通讯是通过内部类訪问外部类成员变量的方式来实现 while (isRecord == true) { //isRecord是 ...
随机推荐
- Linkerd 2.10(Step by Step)—3. 自动轮换控制平面 TLS &Webhook TLS 凭证
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...
- docker实现mysql主从复制
目录 一.概述 二.创建master主库 三.创建Slave实例 四.主从配置 五.参考 一.概述 1.原理 master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时 ...
- TCP模拟QQ聊天功能
需求: 模拟qq聊天功能:实现客户端与服务器(一对一)的聊天功能,客户端首先发起聊天,输入的内容在服务器端和客户端显示,然后服务器端也可以输入信息,同样信息在客户端和服务端显示. 提示: 客户端 1) ...
- MySQL-Cluster 初识
最近,对mysql-cluster进行初步了解,发现和oracle提供的RAC有一定的相似之处,但区别又很大,下面主要是mysql-cluster的搭建,至于对其的深入了解,留着以后工作需 ...
- seo高手教你seo优化排名该怎么做
seo高手教你seo优化排名该怎么做 第一节:如何在本地搭建服务器环境 本节课程主要是讲如何利用 Xampp在本地搭建服务器环境 .网站使用asp和php比较常见,当然,就目前而言,使用php搭建网站 ...
- (一)羽夏看C语言——简述
"羽夏看C语言"介绍什么 本系列从汇编的角度,比较翔实的介绍C语言.C++和C其实是一样的东西,C++的编译器只是更强大,更能帮助我们写代码,例如模板.没有特殊说明,本系列不会 ...
- python使用UTF-8写入CSV中文乱码
使用encoding='utf-8',写入的文档是乱码. 解决办法: 修改encoding='utf-8-sig' 关于文件open()函数: open(path,'-模式-',encoding='u ...
- Selenium系列(八) - 截取完整页面和截取指定元素并保存为图片
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- AOP联盟通知类型和Spring编写代理半自动
一.cglib功能更强大 二.Spring核心jar包 三.AOP联盟通知 三.代码实现Spring半自动代理 1.环绕通知的切面 2.bean.xml配置 3.创建bean容器,获取bean,即已经 ...
- 源码解读Dubbo分层设计思想
一.Dubbo分层整体设计概述 我们先从下图开始简单介绍Dubbo分层设计概念: (引用自Duboo开发指南-框架设计文档) 如图描述Dubbo实现的RPC整体分10层:service.config. ...