本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
多区域复制在 Amazon Keyspaces 中的工作原理
本部分概述了 Amazon Keyspaces 多区域复制的工作原理。有关定价的更多信息,请参阅 Amazon Keyspaces(适用于 Apache Cassand
主题
多区域复制在 Amazon Keyspaces 中的工作原理
Amazon Keyspaces 多区域复制实施了数据弹性架构,可将您的数据分布在独立的地理位置上。Amazon Web Services 区域它使用主动复制,提供本地低延迟,每个区域都能够单独执行读取和写入。
创建 Amazon Keyspaces 多区域密钥空间时,您最多可以选择另外五个将数据复制到的区域。您在多区域密钥空间中创建的每个表都将多个副本表组成(每个区域一个),Amazon Keyspaces 将这些表视为单个单个单个单元。
每个副本都具有相同的表名和相同的主键架构。当应用程序将数据写入一个区域中的本地表时,将使用LOCAL_QUORUM
一致性级别持久写入数据。Amazon Keyspaces 会自动将数据异步复制到其他复制区域。跨区域的复制延迟通常小于一秒钟,并且不会影响应用程序的性能或吞吐量。
写入数据后,您可以从具有LOCAL_ONE/LOCAL_QUORUM
一致性级别的另一个复制区域的多区域表中读取数据。有关受支持的配置和功能的更多信息,请参阅Amazon Keyspaces(多区域复制)使用说明。
多区域复制冲突解决方案
Amazon Keyspaces 多区域复制是完全托管的,这意味着您不必执行复制任务,例如定期运行修复操作来清理数据同步问题。Amazon Keyspaces Amazon Web Services 区域 通过检测和修复冲突来监控不同表之间的数据一致性,并自动同步副本。
Amazon Keyspaces 使用最后一次写入者获胜的方法进行数据核对。使用此冲突解决机制,多区域密钥空间中的所有区域都将同意最新的更新,并收敛到它们都具有相同数据的状态。协调过程对应用程序性能没有影响。为了支持冲突解决,多区域表的客户端时间戳会自动打开,并且无法关闭。有关更多信息,请参阅在 Amazon Keyspaces 中使用客户端时间戳:
多区域复制灾难恢复
使用 Amazon Keyspaces 多区域复制,读取和写入操作都会在每个区域中异步复制。在极少数情况下,出现单区域降级或故障,多区域复制可帮助您从灾难中恢复,而对您的应用程序几乎没有影响。灾难恢复通常使用恢复时间目标 (RTO) 和恢复点目标 (RPO) 的值来衡量。
恢复时间目标 — 灾难后系统恢复工作状态所需的时间。RTO 衡量您的工作负载可以容忍的停机时间,以时间为单位。对于使用多区域复制故障转移到未受影响区域的灾难恢复计划,RTO 可能接近于零。RTO 受您的应用程序检测故障状况并将流量重定向到另一个区域的速度的限制。
恢复点目标 — 可能丢失的数据量(按时间衡量)。对于使用多区域复制故障转移到未受影响区域的灾难恢复计划,RPO 通常为个位数秒。RPO 受到故障转移目标副本的复制延迟的限制。
如果出现区域故障或降级,则无需升级辅助区域或执行数据库故障转移程序,因为 Amazon Keyspaces 中的复制是主动的。您可以改用 Amazon Route 53 将应用程序路由到最近的健康区域。要了解有关 Route 53 的更多信息,请参阅什么是亚马逊 Route 53? 。
如果单个表Amazon Web Services 区域变得孤立或降级,您的应用程序可以使用 Route 53 将流量重定向到不同的区域,以便对其他副本表执行读取和写入操作。您还可以应用自定义业务逻辑来确定何时将请求重定向到其他区域。例如,让您的应用程序知道有多个可用的端点。
当区域恢复联机时,Amazon Keyspaces 将继续将任何挂起的写入从该区域传播到其他区域中的副本表。它还会继续将写入从其他副本表传播到现在重新联机的区域。
创建多区域密钥空间和表所需的 IAM 权限
要成功创建多区域密钥空间和表,IAM 主体需要能够创建服务相关角色。此服务相关角色是一种独特类型的 IAM 角色,它由 Amazon Keyspaces 预定义。它包括Amazon Keyspaces代表您执行操作所需的所有权限。有关 service-linked role 服务相关角色的更多信息,请参阅使用角色进行 Amazon Keyspaces 多区域复制。
要创建多区域复制所需的服务相关角色,IAM 主体策略需要以下元素:
-
iam:CreateServiceLinkedRole
— 委托人可以执行的操作。 -
arn:aws:iam::*:role/aws-service-role/replication.cassandra.amazonaws.com/AWSServiceRoleForKeyspacesReplication
— 可以对其执行操作的资源。 -
iam:AWSServiceName": "replication.cassandra.amazonaws.com
— 此角色可以附加的唯一Amazon服务是亚马逊Keyspaces。
以下是向委托人授予创建多区域密钥空间和表所需的最低权限的策略示例。
{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/replication.cassandra.amazonaws.com/AWSServiceRoleForKeyspacesReplication", "Condition": {"StringLike": {"iam:AWSServiceName": "replication.cassandra.amazonaws.com"}} }
有关多区域Keyspaces 和表的其他 IAM 权限,请参阅服务授权参考中的亚马逊密钥空间(适用于 Apache Cassandra)的操作、资源和条件密钥。
多区域复制和与point-in-time恢复集成 (PITR)
多区域表支持 P oint-in-time 恢复。要使用 PITR 成功恢复多区域表,必须满足以下条件。
-
必须将源表和目标表配置为多区域表。
-
源表的密钥空间和目标表的密钥空间的复制区域必须相同。
您可以从源表所在的任何区域运行 restore 语句。Amazon Keyspaces 会自动恢复每个区域的目标表。有关 PITR 的更多信息,请参阅亚马逊Keyspaces 中的point-in-time恢复工作原理。
多区域复制和服务集成 Amazon
您可以使用亚马逊CloudWatch指标监控不同Amazon Web Services 区域表之间的复制性能。以下指标提供对多区域密钥空间的持续监控。
-
ReplicationLatency
— 该指标衡量在多区域密钥空间中将一个副本表复制updates
或deletes
从一个副本表复制到另一个副本表所花费的时间。inserts
有关如何监控CloudWatch指标的更多信息,请参阅使用亚马逊监控亚马逊Keyspaces CloudWatch。