记录一些云函数的基础知识,混个脸熟
不少同学总是问关于云函数的问题,所以这里发个扫盲的文章吧。
# 云函数是啥?
云函数作为无服务模式的一种实现(FaaS)已经有很多公司在提供了,亚马逊AWS、微软Azure、Google Cloud、IBM Cloud、阿里云、腾讯云、华为云、LeanCloud......
小程序云函数在微信官方文档中的定义摘录:
云函数即在云端(服务器端)运行的函数。在物理设计上,一个云函数可由多个文件组成,占用一定量的 CPU 内存等计算资源;各云函数完全独立;可分别部署在不同的地区。开发者无需购买、搭建服务器,只需编写函数代码并部署到云端即可在小程序端调用,同时云函数之间也可互相调用。
文档地址:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions.html
云函数的本质是一个后端服务,不过把服务的粒度拆成了函数级别,代码是单独部署在提供服务的厂商的机器上的,但是它有别于云存储及云数据库等BaaS,是函数即服务(Function as a Service)的实现。
# 腾讯云云函数与小程序云函数的区别
别看都是云函数,二者还是有些区别的,腾讯云云函数(Serverless Cloud Function)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码, 是实时文件处理和数据处理等场景下理想的计算平台。小程序云函数当然是为了小程序这个应用场景深度定制的了。
之前曾经发过的一篇文章浅谈腾讯云·云开发与小程序·云开发的区别 ,也有略微提及。
# 1. 支持的语言环境
- SCF:Python、Node.js、Golang、PHP、Java
- 小程序云函数:Node.js8.9
除此之外,环境中内置的依赖也是有差别的,比如腾讯云云函数是内置puppeteer而小程序的云函数则是没有的。
SCF 在已支持的开发语言及版本的标准运行环境外还提供了 Custom Runtime 服务,即可定制化运行环境。通过开放实现自定义函数运行时,支持根据需求使用任意开发语言的任意版本来编写函数,并实现函数调用中的全局操作,如扩展程序的加载,安全插件,监控 agent 等。
# 2. 免费额度
SCF:
计费项 | 每月免费额度 |
---|---|
资源使用量 | 40万GBs |
调用次数 | 100万次 |
小程序云函数:
资源使用量:4万GBS/月
调用次数:不限
# 3. 其它限制
SCF可以调整运行内存,支持绑定自定义域名,灵活性较高。
小程序云函数存在如下系统限制:
- 云函数(单次运行)运行内存:256Mnote
- 云函数并发数:1000note
- 数据库流量:单次出包大小为16M
- 数据库单集合索引限制:20个
- 单个小程序的小程序端请求频率限制:100 万次/分钟
# 云函数适用场景
- 事件驱动&响应式
- 存在流量突发的情况
- 请求延时要求不高
- 低频请求
- 资源要求低
# 优缺点
# 优势:
- 云端运行:无需采购、部署、运维传统硬件,节约人力及成本
- 高效开发:每个函数单独运行、部署,上传代码后即可自动部署,提升了独立开发和迭代的速度
- 弹性伸缩:根据请求量实现毫秒级实时弹性伸缩,函数未执行不产生任何费用,不需为空闲资源付费
传统的开发方式,一个企业提供软件产品服务需要提前采购资源,根据自己的需求提前预估使用情况,考虑并发限制、峰值请求等,就要购买多台云主机去满足高可用、高并发,而平时这些计算资源大多是闲置的,造成了资源浪费。而云函数可以做到按需使用,弹性扩缩容,对于中小创业公司来讲是可以节省很多成本的。
如何判断业务是否适合上云函数?
- 异步,并发,易于并行化为独立的工作单元
- 无状态,短暂的,冷启动时间要求不高
- 扩展要求差异性较大,请求量无法预估
- 业务需求变更频繁,灵活性要求高,敏捷开发
# 美中不足:
- 无法应对架构特别复杂的情况,不是所有的业务都适合上云的,业务需要细粒度的拆解来决定哪些服务需要上云,这对软件的架构是个挑战,可能需要一个侵入式的改造。
- 不适合应用长时间运行
- 依赖很多第三方服务