云函数(ServerlessCloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助用户在无需购买和管理服务器的情况下运行代码。用户只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。
云函数 SCF 采用按需付费的方式,并首次发布 1ms 计费粒度,真正实现按使用多少计算能力来计费。
这种计费方式下有什么优势呢?首先,我们来看传统云主机的计费模式和 Serverless 计费模式差异。
付费资源:云主机 vs Serverless
最开始云主机计费是按照包月计费,无论服务是否使用了云主机,都需要支付相应费用。但绝大多数的业务都存在波峰与波谷,而这种包月的计费模式使得用户为自己所不需要的流量资源花费大量费用。
图一:采用云主机与云函数方式下资源使用对比
随着业务需求与云技术发展,云主机调整计费方式,逐渐实现让用户从按月计费到按日计费甚至按小时付费,避免不同小时段流量峰值导致的资源浪费,但在同一小时段仍然存在流量的波峰与波谷,资源浪费不可避免。
Serverless 架构具有灵活的弹性伸缩能力,能非常方便的实现按需计费,使得业务从原先的按小时计费,缩短到按秒,甚至是按 100ms 进行计费。随着粒度不断变细,Serverless 架构下,用户支付的费用,越来越趋向于业务实际使用的资源费用。
100ms 是计费粒度的极限吗?
目前,行业Serverless 服务的函数运行时长计量粒度为 100ms,也就是说当实际运行时长小于100ms 时,按照100ms 计费。如下图所示,函数某一次的实际运行时长为 30ms,会被当做 100ms 计费,此时,相当于用户多花费了 70% 的资源费用。
图二:函数某次运行计费情况
这种 100ms 的计量粒度对比传统云主机计费方式,虽然降低了空闲资源的浪费,但依然存在多计费的情况。
SCF 首发 1ms 计量粒度,真正按量计费
为了进一步降低用户的资源成本,避免 100ms 计量粒度导致的资源浪费,云函数 SCF 首次发布 1ms 计量粒度,真正让用户实现像用水和电一样完全按使用量为云服务付费。
计量粒度调低后能为您节约多少?
当前云函数的资源用量,按照函数的配置内存乘以触发时的实际运行时长进行计费,相较于原方案对齐行业 100ms 计费的方式,产生了更低的总体资源用量及费用,节省用户成本。此处将以三种场景为例,计算采用1ms 的计量粒度,可带来的成本节省量。
图三:三种场景下,不同计量粒度产生的资源用量对比
场景一:Web 和 API 服务,优惠程度可达70%
Web 服务或 API请求下,代码的实际运行时间通常仅为30ms - 50 ms。按实际运行时长计费,优惠程度可达70%。
具体案例:A 用户使用云函数及 API 网关构成的某个 API 服务,配置了128MB的函数,平均执行时间为 37ms:
- 按照100ms 的计量粒度,函数的计费时长为 100ms,在每天100 万次调用的情况下会产生 12500GBs 的资源用量;
- 而按 1ms 的计量粒度方案,函数的计费时长为37ms,产生的资源用量仅为 4625GBs,相比降低了 63%。
场景二:消息处理,优惠程度可达 40%
针对消息队列中的消息进行过滤、转换及转发,代码的实际运行时长通常仅为 60ms - 80ms。按实际运行时长计费,优惠程度可达 40%。
具体案例:B 用户使用Ckakfa 的消息触发云函数,并将完成过滤及数据格式转换的消息重新投递 Ckafka,配置了 256MB 的内存,平均运行时长为 67ms。在每天 500 万次调用的情况下:
- 按照100ms 的计量粒度,产生的资源量为 125000GBs 的资源用量;
- 而按实际运行时长计费的方案,产生的资源用量仅为 83750GBs,相比降低了 37%。
场景三:事件转发,优惠程度可达 50%
将对象存储的事件转发至下游系统,代码的实际执行时间通常仅为 50ms - 80ms。按实际运行时长计费,优惠程度可达 50%。
具体案例:C 用户使用云函数将 ÇOS 对象存储的文件上传事件转发至自身的文件处理系统中,配置了 128MB 内存,函数的平均运行时长为 43ms。在每天有 20 万文件上传的情况下:
- 按照 100ms 的计量粒度,会产生 25000GBs 的资源用量
- 而按照实际运行时长计费的方案,产生的资源用量为 10750GBs,相比降低了 57%。
综上,可以看出三种典型场景下,相比于业界通用的 100ms 计量粒度,采用 1ms 计量粒度优惠程度可达 70%,相当于在原来的费用基础上,直接打 3 折!
表一:三种典型场景,两种计量粒度下的资源费用对比
云函数计费方式说明
云函数 SCF 采用后付费小时结,以元为单位进行结算。云函数 SCF 账单由以下三部分组成,每部分根据自身统计结果和计算方式进行费用计算。
- 资源使用费用
- 资源使用费用 =(资源使用量 - 免费资源额度)× 资源使用单价;
- 其中,资源使用量 (GBs)= 函数配置内存 × 运行时长,例如,配置为256MB的函数,单次运行了 1765ms,计费时长为 1765ms,则单次运行的资源使用量为(256/1024)×(1765/1000) = 0.44GBs。
- 资源使用费用 =(资源使用量 - 免费资源额度)× 资源使用单价;
- 调用次数费用
- 调用次数费用 = (函数调用量 - 免费调用额度) × 调用次数单价
- 外网出流量费用
- 外网出流量费用 = 外网出流量 × 流量单价
表二:云函数 SCF 计费项定价表
此外,开通云函数 SCF 服务的用户,每月可享受一定量的免费资源使用量及免费调用次数。具体免费额度可查看云函数 SCF官网计费说明(https://cloud.tencent.com/document/product/583/12284)
立即使用 Serverless,只需三步!
在费用方面,云函数 SCF 采用 1ms 计量粒度,用户可以以极低的成本运行起一套可用的服务。在使用方面,云函数与业界领先的 Serverless 开发框架 Serverless Framework 结合。简单三步,即可基于云函数 SCF,快速实现服务部署。
1、创建本地应用
- 通过 npm 安装 Serverless
$ npm install -g serverless
- 基于 tencent_nodejs 模板创建 hello_world
$ serverless create --template tencent-nodejs --path my-service
2、安装相关依赖
- 执行 npm install 安装相关依赖
$ cd my-service$ npm install
3. 部署
- 扫描微信二维码一键登录腾讯云账号,部署函数到云端
$ serverless deploy
- 触发云函数
$ serverless invoke -f hello_world
部署完成后,即可在命令行中看到部署情况,也可以在腾讯云控制台看到对应资源。感兴趣的读者也可以点击阅读原文,了解具体应用 。