最佳实践

有奖征文|投稿上云技术实践,赢取价值5000元大奖> HOT

计算方案案例

当前云函数的资源用量,是按照函数的配置内存乘以触发时的实际运行时长进行计费。相较于原方案向上对齐 100ms 计费的方式,产生了更低的总体资源用量及费用,为您节省了预算。

Web 和 API 服务

Web 服务或 API 请求,代码的实际运行时间通常仅为 30ms - 50 ms。按实际运行时长计费,优惠程度可达 70%。

案例:A 用户使用云函数及 API 网关构成的某个 API 服务,配置了 128MB 的函数,平均执行时间为 37ms。原计算方案中,函数的计费时长为 100ms,在每天 100 万次调用的情况下会产生 12500GBs 的资源用量。而按实际运行时长计费的方案,产生的资源用量仅为 4625GBs,相比降低了 63%。

消息处理

针对消息队列中的消息进行过滤、转换及转发,代码的实际运行时长通常仅为 60ms - 80ms。按实际运行时长计费,优惠程度可达 40%。

案例:B 用户使用 Ckafka 的消息触发云函数,并将完成过滤及数据格式转换的消息重新投递 Ckafka,配置了 256MB 的内存,平均运行时长为 67ms。在每天 500 万次调用的情况下,原计算方案会产生 125000GBs 的资源用量。而按实际运行时长计费的方案,产生的资源用量仅为 83750GBs,相比降低了 37%。

事件转发

将对象存储的事件转发至下游系统,代码的实际执行时间通常仅为 50ms - 80ms。按实际运行时长计费,优惠程度可达 50%。

案例:C 用户使用云函数将 COS 对象存储的文件上传事件转发至自身的文件处理系统中,配置了 128MB 内存,函数的平均运行时长为 43ms。在每天有 20 万文件上传的情况下,原计算方案会产生 2500GBs 的资源用量。而按照实际运行时长计费的方案,产生的资源用量为 1075GBs,相比降低了 57%。

计费示例

Web 和 API 服务

假设函数配置了 API 网关,通过 URL 请求触发函数运行,每天有 10 万次请求。云函数配置了 128MB 内存,每次处理请求的平均运行时间为 70ms。

每天的资源使用量及调用次数如下

  • 每天的调用次数:100000 次
  • 每天的资源使用量:(128 / 1024)×(70 / 1000)× 100000 = 875GBs

按月 30 天计算费用如下

  • 资源使用月费用:875 × 30 = 26250GBs,小于 100 万 GBs,不产生费用
  • 调用次数月费用:(100000 × 30 / 10000 - 100)× 0.0133 = 2.66 元 ,小于 100 万次调用次数不产生费用,超出部分按量计费

在这种情况下,总花费为:调用次数费用 2.66 元。

消息队列触发

假设函数配置了 Ckafka 触发方式,每秒触发函数 3 次,配置云函数使用了 128MB 内存,将消息处理后放入处理后的消息队列,每次处理消息,函数运行时间为 260ms。

每天的资源使用量及调用次数如下

  • 每天的资源使用量:(128 / 1024)×(260 / 1000)× 3 × 3600 × 24 = 8424GBs
  • 每天的调用次数: 3 × 3600 × 24 = 259200 次

按月 30 天计算费用如下

  • 资源使用月费用:8424 × 30 ,小于 100 万 GBs,无费用产生
  • 调用次数月费用:(259200 × 30 / 10000 - 100)× 0.0133 = 9.01 元,小于 100 万次调用次数不产生费用,超出部分按量计费

在这种情况下,总花费为:调用次数费用 9.01 元。

外部文件上传

假设函数由用户使用云 API 直接调用,每分钟调用 50 次,配置了云函数使用 256MB 内存,函数每次生成一个 1KB 大小的文件并上传至用户自建的外部站点上,每次生成及上传文件,函数运行时间为 780ms。

每天的资源使用量及调用次数如下

  • 每天的资源使用量:(256 / 1024)×(780 / 1000)× 50 × 60 × 24 = 14040GBs
  • 每天的调用次数:50 × 60 × 24 = 72000 次
  • 每天的流量:1 × 50 × 60 × 24 = 72000KB = 70.31MB

按月 30 天计算费用如下

  • 资源使用月费用:14040 × 30 = 421200GBs,小于 100 万 GBs,不产生费用
  • 调用次数月费用:(72000 × 30 / 10000 - 100)× 0.0133 = 1.54 元,小于 100 万次调用次数不产生费用,超出部分按量计费
  • 外网出流量费用:(70.31 × 30 / 1024 - 2)× 0.8 = 0.05 元,小于 2GB 外网出流量不产生费用,超出部分按量计费

在这种情况下,总花费为:调用次数费用 1.54 元 + 外网出流量费用 0.05 元 = 1.59 元。

预置并发闲置费用

预置并发闲置费用独立于其他四个计费项,配置预置并发后对已经配置并启动、但未使用的实例收取少量闲置费用。本文只对该计费项进行介绍,以下用一个并发波动较为强烈,同时调整了预置并发配额为例,详细说明预置并发的闲置计费。

案例 1:内存为 128MB 的函数版本,其预置并发配额为 1280MB(10 个),假设每秒平均调用 50 次,函数每次生成一个 1KB 大小的文件并上传至用户自建的外部站点上。在 10 秒内,该版本的并发数为 8 个,即:

  • 闲置实例数 = max(10 - 8, 0) = 2
  • 配置内存 = 128MB
  • 闲置时长 = 10s
  • 预置并发闲置量定价 = 0.00005471 元/GBs

预置并发闲置费用 = 2 × 128 / 1024GB × 10s × 0.00005471 元/GBs = 0.00013678 元

按量计费费用
已知,资源使用量及调用次数定价如下:

资源使用量 0.00011108 元/GBs
调用次数 0.0133 元/万次
外网出流量 0.8 元/GB

则按量计费费用如下:

  • 资源使用量:(128*8 / 1024)×10× 50 = 500GBs,小于 100 万 GBs,不产生费用
  • 调用次数:50 × 10 = 500 次,小于 100 万次(事件函数和 Web 函数各 100 万次),不产生费用
  • 流量:1 × 50 × 10= 500KB ,小于 2GB,不产生费用

在这种情况下,按量计费费用为 0。总费用 = 按量计费费用 + 预置并发闲置费用 = 0 + 0.00013678 元 = 0.00013678 元

案例 2:A 函数版本配置内存为 256MB,假设每分钟平均调用 50 次,函数每次生成一个 1KB 大小的文件并上传至用户自建的外部站点上。在 18:01 配置了 100 预置实例。由于业务出现增长,在 18:07 将预置配置提升到 120。在 18:10 时又将预置配置降低到 80。以 18:01 这 1 分钟为例,这 1 分钟预置实例为 100 个,实际并发为 30 个,则:

  • 闲置实例数 = 100 - 30 = 70
  • 资源闲置量 = 闲置实例数 × 配置内存 × 闲置时长 = 70 × 256MB × 60s = 70 ×(256 / 1024)GB × 60s = 1050GBs

预置并发闲置费用 = 资源闲置量 × 预置并发闲置量定价 = 1050GBs × 0.00005471 元/GBs = 0.057 元

按量计费费用

  • 资源使用量:(256*8 / 1024)×60× 50 = 3000GBs,小于 100 万 GBs,不产生费用
  • 调用次数:50 × 60 = 3000 次,小于 100 万次(事件函数和 Web 函数各 100 万次)
  • 流量:1 × 50 × 60= 3000KB ,小于 2GB,不产生费用

在这种情况下,按量计费费用为 0。总费用 = 按量计费费用 + 预置并发闲置费用 = 0 + 0.057 元 = 0.057 元

同上述案例计算方式,可计算 A 函数这 10 分钟的详细计费,得出这 10 分钟内累积闲置费用为 0.153 元,总计费为 0.153 元,如下表所示(开通前三个月(包含开通当月)内):

计算项 18:01 18:02 18:03 18:04 18:05 18:06 18:07 18:08 18:09 18:10 总计
预置并发配置数 100 100 100 100 100 100 120 120 120 80 -
该版本并发数 30 66 88 100 120 150 180 160 100 30 -
闲置实例数 70 34 12 0 0 0 0 0 20 50 -
闲置费用 0.057 0.028 0.010 0.000 0.000 0.000 0.000 0.000 0.016 0.041 0.153
按量计费费用 0 0 0 0 0 0 0 0 0 0 0
目录