写点什么

Auto Scaling for Amazon DynamoDB

  • 2019-11-12
  • 本文字数:2243 字

    阅读完需:约 7 分钟

Auto Scaling for Amazon DynamoDB

Amazon DynamoDB 拥有十万多的客户,客户身处各种行业,使用案例也各不相同。这些客户依赖于 DynamoDB 在任何规模下都能提供的一致性能和覆盖全球 16 个地理区域的服务网络。最近我们注意到一个趋势,客户正在使用 DynamoDB 来为他们的无服务器应用程序提供支持。这是一个很好的搭配:使用 DynamoDB,您无需考虑配置服务器、执行操作系统和数据库软件修补或跨可用区配置复制以确保高可用性之类的事情 – 您只需创建一些表,然后开始添加数据,其他的交给 DynamoDB 处理。


DynamoDB 提供预置容量模式,可以让您设定您的应用程序所需的读取和写入容量。尽管这让您无需考虑服务器,在 AWS 管理控制台中进行简单的 API 调用或按钮单击就可以对表的配置进行更改,但客户已经在询问我们,有没有方法让管理 DynamoDB 容量变得更加轻松。


现在,我们推出了 Auto Scaling for DynamoDB,可帮助您实现表和全局二级索引容量管理的自动化。您只要指定所需的目标使用率,并提供读取和写入容量的上限和下限。之后,DynamoDB 将利用 Amazon Cloudwatch 警报来监控吞吐量占用情况,并根据需要上调或下调预置容量。Auto Scaling 对于所有新表和索引默认启用,您还可以对现有表和索引配置此功能。即使您不在左右,DynamoDB Auto Scaling 也将监控您的表和索引,并根据应用程序流量的变化自动调整吞吐量。这使您可以更加轻松地管理 DynamoDB 数据,帮助您最大程度地提高应用程序的可用性,并帮助您降低 DynamoDB 成本。我们来看看它是如何工作的……


使用 Auto Scaling


现在当您创建新表时,DynamoDB 控制台会提出一组适宜的默认参数。您可以原样接受它们,也可以取消选中“Use default settings”,然后输入您自己的参数:



以下是您输入自己的参数的方式:



目标使用率以占用容量与预置容量的比值来表示。以上参数将允许提供足够的空间,使占用容量能够在读取或写入请求突增时倍增 (请参阅容量单位计算,了解更多有关 DynamoDB 读取和写入操作与预置容量之间关系的信息)。预置容量的变化是在后台发生的。


Auto Scaling 的实际操作


为了了解这项重要的新功能的实际操作,我按照入门指南中的指示进行了操作。我启动了一个全新的 EC2 实例,安装了 (sudo pip install boto3) 并配置了 (aws configure) 适用于 Python 的 AWS 开发工具包。然后我使用 Python 和 DynamoDB 一节中的代码创建了一个表,为其填充了一些数据,并手动为该表分别配置了 5 个读取和写入容量单位。我稍作休息,以便 CloudWatch 指标形成简洁的直线,这样我就可以展示 Auto Scaling 的效果了。这是我开始应用负载之前指标的样子:



步骤3中,我修改了代码,以便继续在 1920 年至 2007 年之间随机选择年份执行查询,运行一份代码,并在一两分钟后查看了读取指标:



占用的容量高于预置的容量,导致出现了大量的受限制读取。现在就是 Auto Scaling 发挥作用的时间了!我返回控制台,单击了我的表中的 Capacity 选项卡。然后我单击 Read capacity,接受默认值,并单击 Save



DynamoDB 创建了一个新的 IAM 角色 (DynamoDBAutoscaleRole) 和一对 CloudWatch 警报来管理读取容量的 Auto Scaling:



DynamoDB Auto Scaling 将会管理警报的阈值,在扩展过程中上下移动这些阈值。第一个警报被触发,表状态更改为 Updating,同时预置了额外的读取容量:



几分钟内,读取指标中就会显示这一更改:



我启动了我修改后的查询脚本的其他几个副本,并观察额外容量的预置情况,如红线所示:



我删除了所有的脚本,然后去做其他的事情,同时等待缩减警报触发。以下是我返回时所看到的:



第二天,我检查了我的 Scaling activities,看到警报在一夜间已经触发了多次:



这在指标中也有显示:



到现在为止,对于这种情况,您需要根据预期使用情况合理设置您的读取容量,还要准备着为超额容量 (蓝线和红线之间的空间) 付款。否则,您可能将它设置得太低,忘了进行监控,而在流量攀升时容量耗尽。使用 Auto Scaling,您就可以做到两全其美:当需求增加,表明需要更多容量时自动响应,当容量不再需要时,再一次自动响应。


须知事项


DynamoDB Auto Scaling 可用于处理以大致可预测、通常为周期性的方式变化的请求速率。如果您需要处理不可预测的读取活动突增,则应将 Auto Scaling 与 DAX 结合使用 (请参阅 Amazon DynamoDB Accelerator (DAX) – 读取操作密集型工作负载的内存缓存以了解更多信息)。另外,AWS SDK 会检测受限制的读取和写入请求,并在适当的延迟之后重新尝试这些请求。


我之前提到了 DynamoDBAutoscaleRole。该角色为 Auto Scaling 提供它要扩展和收缩表和索引所需的权限。要了解更多有关这一角色及其使用权限的信息,请参阅Using the AWS Management Console With DynamoDB Auto Scaling


Auto Scaling 拥有完整的 CLI 和 API 支持,包括启用和禁用 Auto Scaling 策略的能力。如果您的流量存在一些可预测的时限性峰值,则您可以通过编程的方式禁用 Auto Scaling 策略,在设定的时间段内预置更高的吞吐量,并在之后重新启用 Auto Scaling。


DynamoDB 中的限制页面中所述,您可以按您所需的频率,根据您的需求增加预置容量 (受限于可以申请增加的每帐户限制)。对于每个表或全局二级索引,您每天最多可将容量减少九次。您将按照正常的 DynamoDB 定价为您预置的容量付费。您还可以通过购买 DynamoDB 预留容量进一步节省费用。


现已推出 此功能现已在所有区域推出,您可以立即开始使用。


-Jeff


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/new-auto-scaling-for-amazon-dynamodb/


2019-11-12 08:00829

评论

发布
暂无评论
发现更多内容

当 WASM 遇见 eBPF:使用 WebAssembly 编写、分发、加载运行 eBPF 程序 | 龙蜥技术

OpenAnolis小助手

开源 操作系统 内核 ebpf Wasm

容量管理的三个层次

阿泽🧸

10月月更 容量管理

如何“阅读”数学?:上海顶尖中学学生的阅读笔记

图灵教育

数学 青少年

层出不穷的机器学习框架到底在“卷”什么?

小红书技术REDtech

机器学习

微信红包实现原理

Johnny

Java面向对象之构造方法

魏铁锤

10月月更

微信红包系统设计分享 | 如何扛住100亿次请求?

Johnny

cstdio的源码学习分析10-格式化输入输出函数fprintf---宏定义/辅助函数分析02

桑榆

源码刨析 10月月更 C++

微信红包体系设计分析

Johnny

全链路监控建设的4个重点

穿过生命散发芬芳

全链路监控 10月月更

「前端组件化」以Antd为例,快速打通UI组件开发的任督二脉

叶一一

前端 React 10月月更

List的基础数据的处理

卢卡多多

List 10月月更

三步玩转:如何通过Flink OceanBase CDC连接器快速查询数据

OceanBase 数据库

「小程序开发」关于网页与小程序的通信

叶一一

前端 小程序开发 10月月更

【从0到1学算法】4.Bubble Sort算法-上

Geek_65222d

10月月更

一文彻底搞懂IP地址到底是什么?

長歌

微信红包后台系统可用性设计实践

Johnny

「React开发」梳理HOC的点点滴滴

叶一一

前端 React 10月月更

Baklib|构建在线客户服务,产品知识库至关重要

Baklib

DDC SDK的整体设计流程

BSN研习社

【愚公系列】2022年10月 Go教学课程 028-函数小结案例(通讯录)

愚公搬代码

10月月更

Java面向对象之方法块+this关键字

魏铁锤

10月月更

「经验总结」高效开发,老代码可以这样动

叶一一

高效工作 前端 10月月更

「前端组件开发」越折腾越有趣,封装了一个表单组件

叶一一

前端 React 组件开发 10月月更

Baklib|关于帮助中心需要注意的一些细节

Baklib

leetcode 146. LRU Cache LRU 缓存 (简单)

okokabcd

LeetCode 数据结构与算法

「CSS畅想」我的发呆专属,反复解锁手机屏幕

叶一一

CSS JavaScript 前端 10月月更

面向对象之方法重载

魏铁锤

10月月更

「CSS畅想」定时+随机,开启今日上上签

叶一一

JavaScript 前端 10月月更

如何“阅读”数学?:上海顶尖中学学生的阅读笔记

图灵社区

数学 青少年

「CSS畅想」自动打字效果,默写首诗来读读

叶一一

JavaScript 前端 10月月更

Auto Scaling for Amazon DynamoDB_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章