Serverless 架构是最近几年兴起的一种新型云计算架构,其特点是让开发者无需关注服务器、操作系统等底层基础架构,只需关注代码实现,从而能够更快速地开发出互联网应用。随着 Serverless 架构的流行,越来越多的厂商推出了自己的 Serverless 服务,而其中最受欢迎和广泛应用的是 AWS Lambda。
然而,Serverless 架构的价格模型却比传统的虚拟机和容器等云计算模型复杂得多。在这篇文章中,我们将深入探讨 Serverless 价格模型,了解谁赚钱,谁是赔钱,以及如何为自己的应用选择正确的 Serverless 服务。
Serverless 架构的三个价格因素
Serverless 架构的价格主要由以下三个方面组成:
- 调用次数(Invocations):每次函数调用都将产生一定的费用。
- 运行时间(Duration):每函数调用都有一个最大运行时间,超出该时间将视为超时并终止计费。
- 网络流量(Network):每次函数调用都需要有一定的网络流量带宽,因此也会有网络流量的消费。
这三个因素构成了 Serverless 函数的计费标准。不同的服务提供商会有不同的计费方式,但大致都是基于这三个因素的。
AWS Lambda 的计费方式
AWS Lambda 是目前最为流行的 Serverless 服务提供商之一,我们将以 AWS Lambda 的计费方式为例进行讲解。
调用次数(Invocations)
AWS Lambda 以每次调用一个函数(Invocation)为计费单位。每次调用一个函数会按以下两个单价进行收费:
- 冷启动(Cold Start):每次运行冷启动函数所需的单价。
- 热启动(Warm Start):每次运行热启动函数所需的单价。
冷启动是指当 Lambda 需要启动新的实例(容器)时,这个过程需要一定的时间。这种情况通常发生在函数首次运行、函数版本更改、函数在空闲一段时间后重新运行等情况下。因此,冷启动的单价会比热启动的单价高,通常是热启动的 2-4 倍。
运行时间(Duration)
AWS Lambda 按每次调用函数的运行时间来计费。计费标准是以 100 毫秒为单位的,如果函数运行时间为 50 毫秒,则按照 100 毫秒计算费用。 AWS Lambda 向上舍入到最接近的计费单位,即如果函数运行时间为 113 毫秒,则会按照 200 毫秒计算费用。
计费公式为:费用=运行时间/100ms * 单价/1M 请求。
不同服务提供商单价不同,AWS Lambda 的单价标准是每 GB 秒运行费用 $0.00001667。
网络流量(Network)
AWS Lambda 计费也包括网络流量消耗,即函数调用引起的网络流量。例如,如果您的 Lambda 函数从 S3 存储桶中读取数据,则会产生从 S3 至 Lambda 执行环境的网络流量。同样,如果函数将响应发送回 S3,则会产生从 Lambda 执行环境到 S3 的流量。
AWS Lambda 将所有的网络流量分为三个分类:
- 函数网络入口:向函数请求数据产生的流量。
- 函数网络出口:由函数发送的数据产生的流量。
- 不同可用区间的流量:流量穿过 AWS 基础架构带来的费用(源区域到目的区域)。
不同类型的网络流量单价也不同,详细单价可在 AWS 官网上查找。
如何选择正确的 Serverless 服务
在选择 Serverless 服务时,您应该非常注意计费方式和费用的详细信息。以下是一些指导性建议:
根据应用需求选择计算资源。例如,如果您的应用需要高性能的计算和大量网络流量,则计费可能比传统的虚拟机、容器等服务更高。相反,如果您的应用需要以较低的成本实现低规模并发度,则 Serverless 架构可能是最佳选择。
进行测试和分析。在选择 Serverless 服务之前,最好先进行一些测试和分析,比如基准测试、成本分析等。这将帮助您确定最佳的资源配置方案以及哪些 Serverless 服务提供商适合您的应用程序。
仔细研究服务提供商的定价模型。不同服务提供商的定价模型可能有所不同。您需要仔细研究每个提供商的计费方式和费用结构,并确保您的应用程序符合这些结构。
示例代码:Hello World
以下是一个使用 AWS Lambda 实现的 Hello World 的示例代码:
-- -------------------- ---- ------- --------------- - ----- ------- -- - ----- ---- - --------------------------- -- --------------------------------- ----- ------- - ------ ------ -- ----------- ----- -------- - - ----------- ---- -------- - --------------- ------------ -- ----- ------- -- ------ --------- --
在以上示例中,我们通过查询参数来确定我们要打印的姓名,并将消息作为 HTTP 响应发送回调用方。您可以在 AWS Lambda 中创建一个新函数,并将以上代码作为函数代码上传。但需要注意的是,此示例并未包含计费信息,因为您需要进行一些配置才能使您的函数具有完整的计费系统。
总结
Serverless 架构以其快速的开发、无需管理底层基础设施和灵活的扩展性而备受开发者和企业用户的欢迎。然而,在选择 Serverless 服务时,要注意它的三个价格因素,并根据应用需求选择最佳的计算资源和服务提供商。通过以上的指导,希望您能够更好地理解 Serverless 计费模型,为您的 Serverless 应用程序选择正确的服务提供商。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646e3f50968c7c53b0cc6ae2