前言
函数计算
阿里云函数计算是一个事件驱动的全托管计算服务通过函数计算, 您无需管理服务器等基础设施, 只需编写代码并上传函数计算会为您准备好计算资源, 以弹性可靠的方式运行您的代码, 并提供日志查询, 性能监控, 报警等功能借助于函数计算, 您可以快速构建任何类型的应用和服务, 无需管理和运维
函数计算官网
微信小程序
微信小程序是一种不需要下载安装即可使用的应用, 它可以在微信内被便捷地获取和传播, 它实现了应用触手可及的梦想, 用户扫一扫或搜一下即可打开应用
微信小程序遇见 serverless
1. 为什么是 serverless
正常来说, 除了少数纯客户端的微信小程序运用, 绝大部分的小程序都有自己的 server 端针对小程序运用场景, 大部分传统服务器的架构都是杀鸡用牛刀了, 下面是传统架构和 FC 架构的对比:
同时, 函数计算具有根据流量自动 scale 特性, 这个对于具有明显波峰波谷的运用具有天然无法抗拒的优势
2. 本 demo 教程是什么?
在本教程中, 我们讲解如何利用函数计算一步一步来构建微信小程序的 server 端, 其中小程序参考 "口令红包", 实现一个简单版本, 该 demo 中可以展示口令生成, 口令转发, 口令语音验证
微信语音红包小程序是基于微信小程序而开发的语音红包, 发起者可以写下想要让别人说的话 (口令), 并且将钱塞入此红包中, 其他用户只要读出这句话 (口令) 就可以获得红包语音红包可以发到特定的好友微信群以及朋友圈, 朋友需要根据文字口令说出相应的语音, 才能获得红包这种互动行为, 在朋友圈或者微信群社交的场景下, 可以极大调动互动活跃度, 规则简单方便, 体验趣味十足, 口令的形式丰富多样 (恶搞示爱祝贺说口号甚至是广告语), 这些都让口令红包一直维持很高的热度
demo 客户端小程序具体效果截图如下:
生成口令
转发口令
录音验证口令
方案设计
方案大致如上图所示, 主要分为以下三个模块:
Login & Auth
微信建议登录时序图如下, 其中第三方服务器用 FC 实现:
语音识别 (包含音频格式转换)
百度语言识别开发文档
虚线框柱的是可以拓展的模块, 本 demo 中不展示, 用户可以根据需求接入
比如微信小程序直接上传文件到 oss 保存, 函数计算可以从 oss 拉取对应的数据做处理; 如果需要数据库功能, 可以采用 ots
具体操作
准备工作:
1, 开通阿里云账号, 同时需要开通的产品有函数计算, api 网关
2, 购买独立域名, 同时需对域名备案, 以及购买阿里云免费 ssl 证书, 购买步骤可参考免费申请阿里云 DV SSL 证书
3, 开通微信小程序开发认证, 以及百度语音识别
4, 从 github 下载相应的源码, 里面 client 目录表示客户端, server 表示用于创建函数 (注: 源码地址稍后提供)
FC 端
1, 利用源码中的 server 目录创建服务端函数, 比如函数名为 wechatEntry
使用函数计算命令行工具 fcli,fcli 使用说明
fcli function create -f wechatEntry -h main.handler -d server -t python2.7 -s wechat
注意: 创建函数前记得先把函数中 main.py 中相关开发配置改成自己申请的, 包括 微信小程序开发者相关配配置, 百度语音识别相关配置
利用控制台打包上传, 设置对应的 handler, 函数计算控制台使用可参考 hello world, 特别是控制台上传代码包创建函数部分
2, 以函数计算作为 API 网关后端服务
api 网关支持 https 服务, 具体可以参考 api 网关支持 https
函数计算作为 api 网关后端服务
api 网关中设置函数对应的 api 分组配置独立域名
最后效果图以及调试界面如下:
client 端
按照微信小程序官方教程, 创建对应的小程序账号以及工程, 传送门
直接用微信小程序开发工具打开, 修改对应请求域名即可, 打开如下图所示:
总结
利用函数计算可以快速搭建微信小程序的 serverless 运用, 结合 oss,ots 可以丰富 server 的功能, 免服务器, 免运维, 成本低, 不用担心流量, 只需要函数就可以实现, 你值的拥有!
一些补充 FAQ, 仅供参考
怎么调试 fc?
fc 可以接入 sls, 通过 sls 日志, 可以查看你函数运行的情况, 具体可以参考函数访问日志服务
如果录入的语音文件很大, 时间很长, 导致语音识别服务时间很长, 怎么办?
可以参考函数计算流式处理大文件的分治思想对语音分割进行流式处理, 或者直接选用有流式处理的语音识别的服务
如果想对语音文件或者其他文件做备份处理, 怎么办?
可以参考微信小程序中客户端 utils 文件夹下面的 uploadAliyun.js
来源: https://yq.aliyun.com/articles/435430