AWS DynamoDB教程之九:性能监测和调优,Audit Table及TTL


作为AWS众多云服务的核心成员之一,DynamoDB得到了非常广泛的应用。在DynamoDB的使用过程中,需要不断监测其性能,并进行调整(比如调整RCU,WCU,Autoscaling等)。

AWS DynamoDB
AWS DynamoDB

AWS DynamoDB系列教程:

CloudWatch Contributor Insights

首先需要在选定的表上激活:选择表名->Monitor->CloudWatch Contributor Insights for DynamoDB

DynamoDB系列教程
DynamoDB系列教程

然后就可以观察到Read usage, Read throttled requests, 以及Read throttled events等指标。直在监测DynamoDB运行时非常有用。如果throttling发生了,通常意味着预先分配的资源可能不够,需要增加RCU/WCU或者改为autoscaling/ondemand等。

如果切换到ClouWatch->Insights->Contributor Insights中,还可以看到具体到每个PK的统计信息:

DynamoDB系列教程
DynamoDB系列教程

DynamoDB Accelerator (DAX)

DAX是专为DynamoDB设计的缓存层,它可以进行毫秒级响应。DAX是由EC2集群组成的,因此根据节点数量付费。因此在需要的时候,可以在两个维度对DAX进行扩容:

  • 增加EC2数量
  • 增加每个EC2的配置,比如内存,CPU等

DAX支持的DynamoDB操作包括:Get/Query/Scan/Update/Delete/Put,以及GSI/LSI操作。

在应用层,非常容易从DynamoDB切换到DAX:只需要切换endpoint就可以。

需要使用DAX的场景包括:

  • 要求毫秒级响应时间
  • 针对某些特定的Key,有固定的流量模式,比如,在每天12PM,针对某个Key的查询都会激增
  • 需要DAX中的数据可能不会和DynamoDB即时同步,因此应用中对此不能有特殊的要求
  • 应用中对读取性能要求高,而不是写入性能

在配置DAX Cluster的时候可以使用:

  • Load Balancer
  • Master Node
  • Read Replica Node 1
  • Read Replica Node 2
  • Read Replica Node x

DAX Cluster中有两种Cache:

  • Item Cache: 顾名思义,这里保存的是从PK+SK到真正对象值的映射
  • Query Cache: 这里保存的是PK+SK及查询关键字到对象集合的映射。但由于从DynamoDB到Cache之间的同步延迟,有可能从Query Cache获得的数据是旧数据。因此一般情况下不建议使用Query Cache

因此,在使用DAX的时候,一定要预估到可能遇到的数据不一致问题,并在这种情况是直接访问DynamoDB作为数据源(Source of truth)。

Audit Table

Audit Table的作用就是记录系统操作步骤,这样就便于在出现问题是溯源。

在实施的时候可以使用DynamoDB的Stream,将数据记录在S3并通过AWS Athena进行查询。

TTL

TTL就是time to live的缩写,这是一项免费服务,能够在指定的时间自动删除某条记录。其特性包括:

  • 完全自动
  • TTL操作需要的时间一般为几分钟到48小时,但不能保证

由于计算时间时需要一个时间戳,可以在这个网站进行时间转换:https://www.epochconverter.com/

进入DynamoDB选择表之后,选择Additional settings > Tile to Live (TTL) > Enable

然后输入字段名字,比如:TTL:

DynamoDB教程
DynamoDB教程

然后单击“Enable TTL”。

在DynamoDB中插入一条数据,包含TTL字段:

DynamoDB教程
DynamoDB教程

几分钟后这条记录就被删除了。

在表对应的Monitor中就能看到TTL的统计信息。


文章作者: 逻思
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 逻思 !