在Amazon DynamoDB全局表中实现多区域强一致性的高弹性应用构建

本文介绍了Amazon DynamoDB全局表新增的多区域强一致性功能,支持零恢复点目标,确保应用在任何区域都能读取最新数据,提升关键应用的弹性和可用性。

使用Amazon DynamoDB全局表的多区域强一致性构建最高弹性应用

尽管数万客户已成功使用最终一致性的Amazon DynamoDB全局表,但我们观察到对更强弹性的需求正在增长。许多组织发现DynamoDB的多可用区架构和最终一致性全局表能满足需求,但支付处理系统和金融服务等关键应用要求更高。

对于这些应用,客户在罕见的区域范围内事件中需要零恢复点目标(RPO),这意味着您可以将应用定向到任何区域读取最新数据。您的多区域应用无论位于何处,始终需要访问相同的数据。

从今天开始,您可以使用新的Amazon DynamoDB全局表功能,提供多区域强一致性(MRSC),实现零RPO。此功能最初在AWS re:Invent 2024上作为预览版宣布,简化了构建高弹性全局应用的过程。

以下是如何从现有的空DynamoDB表启用MRSC:

使用MRSC,DynamoDB现在为您的应用提供最高级别的弹性。如果区域中的应用处理中断,您可以将流量重定向到包含MRSC副本的另一个区域,并确保处理的是最新数据。

入门指南

让我带您了解如何使用这一新功能。

要开始使用MRSC,我需要从一个不包含任何数据的现有DynamoDB表创建全局表。我导航到现有表,选择“全局表”选项卡,然后选择“创建副本”。

MRSC可用性架构需要三个AWS区域。我可以配置MRSC为三个完整副本,或两个副本加一个见证。见证仅包含复制的变更数据,以提供所需的可用性,而无需维护表的完整副本。

以下截图显示了我如何配置两个副本加一个见证的MRSC。要配置三个完整副本的MRSC,我可以清除“将区域2配置为见证”。

如果我需要以编程方式更新现有表,可以使用Amazon Q CLI生成所需命令,提示如下:

Hey Q! Update my existing DynamoDB table called “demo-mrsc” in us-east-1 with multi-Region strong consistency across us-east-2 with witness in us-west-2 Regions

不久后,Q CLI将回复以下命令:

To update your DynamoDB table with multi-Region strong consistency, you’ll need to use the update-table command with the appropriate parameters. Here’s how you would do it:

1
2
3
4
5
6
aws dynamodb update-table \ 
    --table-name demo-mrsc \ 
    --replica-updates '[{"Create": {"RegionName": "us-east-2"}}]' \ 
    --global-table-witness-updates '[{"Create": {"RegionName": "us-west-2"}}]' \ 
    --multi-region-consistency STRONG \ 
    --region us-east-1

处理完成后,我可以检查MRSC全局表的状态。我可以看到为DynamoDB全局表配置了见证。见证降低了成本,同时仍提供多区域强一致性的弹性优势。

然后,在我的应用中,我可以使用ConsistentRead以强一致性读取数据。以下是一个Python示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import boto3

# Configure the DynamoDB client for your region
dynamodb = boto3.resource('dynamodb', region_name='us-east-2')
table = dynamodb.Table('demo-mrsc')

pk_id = "demo#test123"

# Read with strong consistency across regions
response = table.get_item(
    Key={
        'PK': pk_id
    },
    ConsistentRead=True
)

print(response)

对于需要最强弹性的操作,我可以使用ConsistentRead=True。对于可以接受最终一致性的较不关键操作,我可以省略此参数以提高性能并降低成本。

其他注意事项

以下是几点需要注意的事项:

  • 可用性 – Amazon DynamoDB多区域强一致性功能在以下AWS区域可用:美国东部(俄亥俄、北弗吉尼亚)、美国西部(俄勒冈)、亚太(大阪、首尔、东京)和欧洲(法兰克福、爱尔兰、伦敦、巴黎)
  • 定价 – 多区域强一致性定价遵循现有的全局表定价结构。DynamoDB最近将全局表定价降低了高达67%,使得这一高弹性架构比以往更经济实惠。访问AWS数据库博客中的“Amazon DynamoDB降低按需吞吐量和全局表定价”以了解更多信息。

了解更多关于如何实现最高级别的应用弹性,使您的应用始终可用并在任何区域读取最新数据,请访问Amazon DynamoDB全局表。

祝您构建愉快!

— Donnie

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计