亚马逊AWS官方博客

Amazon DynamoDB On-Demand – 无需规划容量,采用按请求付费的定价模式

就在几年前,创建一个既能以任何规模支持业务需求,同时又可保持稳定低延迟的数据库不过是白日做梦。但 2012 年当我读到 Werner Vogels 宣布推出 Amazon DynamoDB 的博客文章时(比我加入 AWS 早了几个月),情况发生了改变。DynamoDB 依据 Amazon 于 2007 年发表的原始 Dynamo 报告 所述的原则构建。几年之后,随着许多新功能的推出,AWS 客户使用数据库的方式进一步简化。您现在可以创建完全托管的多区域多主数据库表,并获得静态加密、时间点还原、内存中缓存以及 99.99% 正常率服务等级协议 (SLA) 等功能。

Amazon DynamoDB 按需模式

今天我们隆重推出 Amazon DynamoDB 按需模式,这是一个灵活的 DynamoDB 新收费模式,无需任何容量规划即可每秒处理数以千计的请求。DynamoDB 按需模式为读写请求提供按请求量付费的定价模式,从而让您只需为使用的资源付费,轻松平衡成本和性能。对于使用按需模式的表,DynamoDB 会随着客户工作负载增加或减少至任何以前观测到的流量水平,满足客户的工作负载需求。如果流量水平触及新峰值,DynamoDB 会快速调整以容纳工作负载。

DynamoDB 控制台中,您可以在创建新表时选择按需读/写容量模式,或者稍后在 Capacity(容量)选项卡中更改。

使用按需模式的表支持所有 DynamoDB 功能(例如静态加密、时间点还原、全局表等),仅自动扩展功能不适用于此模式。

为使用按需模式的表创建的索引也会继承同样的可扩展性和收费模式。您无需指定索引的吞吐能力设置,只需按使用量付费即可。如果使用按需模式的表及其索引没有读/写流量,则您只需为数据存储付费。

如果您的应用程序流量难以预测和控制,您的工作负载可能在短时间内大量突增,或者您的平均表利用率远远低于峰值水平,DynamoDB 按需模式将非常有用。例如:

  • 新应用程序,或者非常复杂以致难以预测数据库工作负载的应用程序
  • 处理采用按使用量付费定价模式的无服务器堆栈的开发人员
  • 需要为每个订阅用户部署一个表的简单性和资源隔离特点的SaaS 提供商和独立软件供应商 (ISV)

将表的容量模式从预置改为按需每天只能进行一次, 但可以无限次从按需模式改为预置模式。

快速性能测试

下面我们利用新创建的采用按需模式的 DynamoDB 表进行一些负载测试!

我创建了两个无服务器应用程序:

  • 第一个应用程序使用 AWS Lambda 函数和 Amazon API GatewayDynamoDB 表上创建了一个 REST API。借助此 API,您可以使用提取、发布、推送、删除等 HTTP 方法读取、添加、更新和删除表中的项目。
  • 第二个应用程序并行启动了 1000 个 Lambda 函数,以使用随机 HTTP 方法和这些项目的随机数据来生成 API 终端节点上的负载。

每个用于生成负载的函数会运行 100 个并发请求,所有请求终止时将会启动另外 100 个并发请求,以此类推,持续时间为一分钟。没有热机时间,负载的生成会立即全速开始!

您可以在 DynamoDB 控制台此表的指标选项卡中看到,我很快就达到了几乎每秒 5000 条请求的峰值,没有任何阻碍。

API GatewayLambda 函数和 DynamoDB 表,无服务器堆栈的扩展都是完全托管的。我无需计划正确的吞吐能力,可以专注于我所构建的应用程序逻辑。

借助 DynamoDB 按需模式,您只需按使用量付费。例如在美国东部(弗吉尼亚北部)区域,写请求部分的费用为每百万条请求 1.25 USD,读请求部分的费用为每百万条请求 0.25 USD,此外您还需支付正常的数据存储费用。

您可以使用 AWS 命令行界面 (CLI)AWS 开发工具包AWS CloudFormation 来创建使用按需模式的表,也可以更改现有表的读/写容量模式。

现已推出

DynamoDB 按需模式在全球所有商业区域均以开放。

为开发人员、ISV 和 SaaS 提供商推出的这一新功能让我很激动,期待看到你们使用按请求量付费模式构建的作品。