如何自动扩展Amazon DynamoDB吞吐量?

kar*_*tik 29 amazon-web-services amazon-dynamodb

Amazon DynamoDB不提供内置功能,可根据动态负载自动调整吞吐量.它提供API来增加或减少吞吐量.客户按小时计算配置的读写吞吐量.

有哪些方法可以改变dynamodb的吞吐量并实现成本节约的好处?

小智 24

克里斯的答案是一个准确的答案.只是为了添加使用DynamoDB之前的经验中的几点...

DynamoDB的情况与EC2不同.弹性计算服务具有Amazon直接支持的Web服务API,允许您根据需求存在多少逻辑来编程如何扩展或缩小.您可以通过定义监视阈值并自动触发组中实例的创建或删除来对此进行编程.

数据服务器与触发器调整其容量的方式不同.但是,DynamoDB的容量非常灵活,可以像Chris指出的那样进行控制.提供此功能的API足以完成一次性更改.或者从控制台进行等效的手动更改.

程序创建和更新动作与DynamoDB的不同语言绑定在这里......

http://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html

修改容量的重要操作在这里......

http://docs.aws.amazon.com/cli/latest/reference/dynamodb/update-table.html

因此,这使您能够增加或减少ProvisionedThroughput的ReadCapacityUnits或WriteCapacityUnits.

这对于预测或一次性变化是好的.但这与允许您自动触发更改的灵活性工具不​​同.

以编程方式,您最可能想要做的是调整容量以响应前一时间间隔内的利用率变化.特别是,您可能需要通过定义适当的时隙以及触发的下限和上限来快速扩展以响应需求激增.

这里描述了实现这一目标的更完整的解决方案......

https://aws.amazon.com/blogs/aws/auto-scale-dynamodb-with-dynamic-dynamodb/

解决方案由Sebastian Dahlgren维护,可以在所有说明中找到...

https://github.com/sebdah/dynamic-dynamodb

我看到当前版本是1.18.5,这比我上次使用它时更新.

从早期版本来看,通过dynamodb.conf属性样式文件进行配置很简单...

提供凭据和区域后,最关键的设置是

  • check-interval - 以秒为单位测试吞吐量
  • min-provisioned-reads, max-provisioned-reads; reads-upper-threshold, reads-lower-threshold; increase-reads-with, decrease-reads-with - 这些都是百分比
  • min-provisioned-writes, max-provisioned-writes; writes-upper-threshold, writes-lower-threshold; increase-writes-with, decrease-writes-with - 这些都是百分比

这些信息是最新的吗?

好吧,如果你看一下http://aws.amazon.com/new/,你会看到另外一个影响DynamoDB的新变化,这会影响存储的文件.Dynamic DynamoDB的条目是最后一个处理扩展操作的已发布条目.因此,这是目前维护得最好的DynamoDB自动扩展功能.

  • 只是为了你的通知.您可以在一天内缩减DynamoDB容量的次数有限.我记得每天4次.但我不确定放大的限制.我遇到了这个问题. (4认同)

NSA*_*NSA 14

亚马逊刚为dynamodb添加了自动缩放功能,请参阅此处的详细信息


Jes*_*era 13

我刚刚发现这个项目,将自动缩放向上和向下的Dynamodb,看起来比动态迪纳摩更好,因为它使用lambda函数,而不是EC2实例:

https://github.com/channl/dynamodb-lambda-autoscale

  • 5分钟的设置过程
  • 无服务器设计
  • 灵活的代码配置风格
  • 自动缩放表和全局二级索引
  • 自动缩放多个表
  • 通过固定设置自动缩放
  • 通过预配置容量利用率自动缩放
  • 通过限制事件指标自动缩放
  • 通过合并限制事件指标,针对大量使用和热键问题进行了优化
  • 使用并发查询优化性能
  • AWS强加的RateLimitedDecrement
  • 通过'测量'统计
  • 通过'dotenv'配置AWS凭证
  • 通过'webpack'优化lambda包
  • ES7代码
  • 100%流量静态类型检查覆盖率


Kre*_*ase 8

您可以通过updateTable API以编程方式管理吞吐量,也可以通过控制台手动管理吞吐量.

还有像Dynamic DynamoDB这样的工具,虽然您也可以使用自己的版本:您可以使用updateTable API并运行一些后台进程来检测这些情况并根据需要调用updateTable.

在更改DynamoDB的规模时需要注意的一些事项:

  1. 无论您是否真正使用它,您都需要为分配的吞吐量付费.
  2. Wen你可以扩展,Dynamo可以为你分配新的分区 - 但是当它缩小时它不会删除它们.这可能会导致意外的热哈希密钥问题,其中您有很多分区但每个分区的吞吐量都非常低.