Amazon DynamoDB 全局表
什么是全局表?
DynamoDB 全局表是一个完全托管、无服务器、多区域和多活动的数据库。全局表为您提供最高 99.999% 的可用性、更高的应用程序韧性和经过改进的业务连续性。由于全局表会在您选择的 AWS 区域中自动复制您的表,使您可以实现快速的本地读写性能。
如果某个区域的应用程序处理中断,无需进行数据库失效转移,因为全局表的多活动架构允许客户读取和写入任何副本表。全局表还消除了解决多区域工作负载的更新冲突的困难工作。
全局表支持强一致性和最终一致性两种模式,以实现跨区域的一致性。多区域强一致性功能为您提供出色的应用程序韧性,使客户的应用程序始终可用,并且能读取来自任何区域的最新数据。现在,您可以构建恢复点目标为零的应用程序。借助多区域最终一致性,您可以在单个 AWS 账户内或跨多个 AWS 账户创建副本。
工作原理
DynamoDB 全局表由多个副本表组成。每个副本表存在于不同的区域中,但所有副本共享相同的主键和架构。当数据写入任何副本表时,DynamoDB 会自动将该数据复制到全局表中的所有其他副本表。
例如,假设您的应用程序为分布在三个地理区域(美国东海岸、加拿大和西欧)的庞大客户群提供服务。如果没有全局表,则需要在每个 AWS 区域中创建一个表并编写代码,以在每个区域的每个表中复制数据更改。
使用全局表,您可以在离每个地理区域最近的三个区域创建一个包含副本表的全局表。DynamoDB 会自动将任何副本的更改复制到其他区域的副本。
全局表让应用程序的用户无论身在何处都能以低延迟访问数据。如果某个区域的应用程序处理中断,客户仍可访问其他区域的副本表。
创建全局表时,您可以选择强一致性或最终一致性。针对多区域强一致性进行配置的全局表能够实现跨多个区域的强一致性读取操作。默认设置为多区域最终一致性。
对于使用多区域最终一致性模式的全局表,您可以在单个 AWS 账户内或跨多个 AWS 账户创建副本。多账户全局表可自动在多个账户和区域之间复制表数据,从而实现更高的韧性、安全性及治理效率。它们非常适合采用多账户策略或使用 AWS Organizations 来改善安全隔离、加强数据边界护栏、实施灾难恢复或按业务部门分离工作负载的客户。
开始使用全局表非常简单,因为它使用的 DynamoDB API 与单区域表相同。使用全局表不涉及预付费用,也无需签订合同,您仅需为使用的资源付费。您可以使用 AWS CLI 或 AWS CloudFormation 在 AWS 管理控制台中配置全局表。而且,将您的单一区域表转换为全局表也很容易。
全局表的益处
全局表专为 99.999% 的可用性而设计。如果一个区域被隔离或降级,您的应用程序可以将流量转移到另一个区域,并对另一个副本表执行读写操作。您可以应用自定义业务逻辑,以确定何时将请求重定向到其他区域。此外,采用多区域强一致性模式后,您的应用程序将始终从任何区域读取最新的数据。
全局表消除了在 DynamoDB 中部署和管理多活动、多区域复制的复杂性和操作负担。您可以选择需要复制数据的区域,DynamoDB 将处理余下的工作。您可以选择最终一致性或强一致性来实现不同区域中表副本之间的数据复制。借助多区域强一致性,您在进行失效转移操作时无需再考虑数据一致性或数据恢复问题。
您也可以在单个 AWS 账户内或跨多个 AWS 账户创建副本。借助多账户全局表,您可以跨账户构建应用程序,以加强隔离、改善安全性和治理能力,提高操作韧性,这与 AWS Well-Architected Framework 保持一致。应用程序通过使用现有的 DynamoDB API 和端点来访问全局表。
现在,全局表的配置可以同时支持强一致性与最终一致性。强一致性确保强一致性读取操作能够反映最新的写入内容,而最终一致性则会在较短时间内使所有副本都反映最新的更新内容,但为此需要付出较低的本地读写延迟的代价。
在多区域强一致性模式下,DynamoDB 确保对任何区域中的任何副本成功写入的数据能够立即从任何其他副本中读取。如果一次写入操作试图修改另一个区域中正在被修改的某个项目,则该写入操作将会因出现可重试的异常而失败。
在多区域最终一致性模式下,DynamoDB 将对任何区域中的任何副本的写入复制到所有其他副本中,通常可在一到两秒内完成。如果同一个项目在多个区域中被修改,DynamoDB 将通过采用“最后写入者获胜”的解决方法来解决冲突。
全局表使您能够在本地读取和写入数据,从而使任何规模的全局分布式应用程序都只有个位数的毫秒延迟。这可以提高大规模扩展的全球应用程序的性能。