写点什么

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:00653

评论

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

实时云渲染,汽车产业数字化转型新动能

3DCAT实时渲染

云计算 数字化 汽车 云渲染

瀑布式开发与敏捷开发的区别是什么

爱吃小舅的鱼

谈A股投资策略--《香帅中国财富报告》摘录(5/100)

hackstoic

投资

在Rainbond上使用Locust进行压力测试

北京好雨科技有限公司

阿里云刘伟光:3.5万字拆解核心系统转型,核心从业者如何寻得“出路”

OceanBase 数据库

阿里 数字化转型 OceanBase 社区版 核心系统

一个cpp协程库的前世今生(二十)外部调度

SkyFire

c++ cocpp

使用MSF生成shellcode

喀拉峻

黑客 网络安全 安全 WEB安全

Ubuntu16.04/Scala2.11.8安装教程

CRMEB

VuePress 博客优化之拓展 Markdown 语法

冴羽

JavaScript Vue markdown vuepress 博客搭建

蚂蚁大规模 Sigma 集群 Etcd 拆分实践

SOFAStack

etcd #k8s SIGMA

【组件攻击链】一文看懂Spring全家桶各类RCE漏洞

H

网络安全 漏洞

架构实战营 4 期第五模块作业

jialuooooo

架构实战营

软件架构治理 之 架构优化方向

码猿外

架构设计 技术债 软件架构治理

项目管理如何有效进行

爱吃小舅的鱼

架构实战营:模块五作业

Geek_93ffb0

「架构实战营」

基于 Prometheus 的边缘计算监控实践

火山引擎边缘云

云原生 监控 边缘计算

☕【Java深层系列】「技术盲区」让我们一起探索一下Netty(Java)底层的“零拷贝Zero-Copy”技术(上)

洛神灬殇

Netty 零拷贝 zero copy 1月日更

Discord模式等十大场景,环信带你玩转泛娱乐行业

环信

即时通讯 IM 泛娱乐 Discord

混合云应用双活容灾最佳实践

阿里巴巴云原生

阿里云 运维 云原生 混合云 多活容灾

使用 google_breakpad 分析 Electron 崩溃日志文件

编程三昧

Electron 1月月更 google_breakpad

淘宝小部件在 2021 双十一中的规模化应用

阿里巴巴终端技术

小程序 淘宝 双十一

逐鹿万亿赛道:智能重卡规模量产的困境与进化

脑极体

如何快速调度 PTS 的百万并发能力

阿里巴巴云原生

阿里云 云原生 Jmeter 压测 PTS

2021年小总结暨2022年打脸计划

秦怀杂货店

总结 程序人生、

Spring都在用的技术,你确定不过来看看?1️⃣

XiaoLin_Java

1月日更

最佳实践 | 如何避免一行错误代码造成的血案?

Atlassian

Atlassian Jira 代码评审

当基础设施故障后,声网 SD-RTN 如何保障 RTE 服务的高可用性

声网

人工智能 云计算

金融云原生漫谈(六)|安全平稳高于一切的金融行业,如何构建云原生安全防线

York

容器 云原生 安全 金融科技

创新推出 | Serverless 场景排查问题利器:函数实例命令行操作

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

网关流控利器:结合 AHAS 实现 Ingress/Nginx 流量控制

阿里巴巴云原生

nginx 阿里云 高可用 云原生 ingress

从零开发区块链应用(一)--golang配置文件管理工具viper

杰哥的技术杂货铺

golang 区块链

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