Amazon MSK Replicator 的工作方式 - Amazon Managed Streaming for Apache Kafka

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon MSK Replicator 的工作方式

要开始使用 MSK Replicator,你需要在目标集群中创建一个新的 Replicator AWS 区域。MSKReplicator 会自动复制主集群中的所有数据 AWS 目标区域中名为集群的区域称为目标。源集群和目标集群可以位于相同或不同的地方 AWS 区域。如果目标集群尚不存在,则需要创建该集群。

当您创建 Replicator 时,MSKReplicator 会在目标集群中部署所有必需的资源 AWS 要针对数据复制延迟进行优化的区域。复制延迟因许多因素而异,包括两者之间的网络距离 AWS MSK集群的区域、源集群和目标集群的吞吐容量以及源集群和目标集群上的分区数量。MSKReplicator 会自动扩展底层资源,这样您就可以按需复制数据,而无需监控或扩展容量。

数据复制

默认情况下,MSKReplicator 将所有数据从源集群主题分区中的最新偏移量异步复制到目标集群。如果 “检测并复制新主题” 设置已开启,MSKReplicator 会自动检测新主题或主题分区并将其复制到目标集群。但是,Replicator 最多可能需要 30 秒才能在目标集群上检测和创建新的主题或主题分区。在目标集群上创建主题之前向源主题生成的任何消息都不会被复制。或者,如果要将主题上的现有消息复制到目标集群,则可以在创建期间将 Replicator 配置为从源集群主题分区中最早的偏移量开始复制。

MSKReplicator 不存储您的数据。从源集群中消耗数据,在内存中进行缓冲并写入目标集群。当数据成功写入或重试后失败时,缓冲区会自动清除。MSKReplicator 与您的集群之间的所有通信和数据始终在传输过程中进行加密。所有 MSK Replicator API 调用DescribeClusterV2,比如、CreateTopicDescribeTopicDynamicConfiguration都会被捕获 AWS CloudTrail。您的MSK经纪人日志也将反映出来。

MSKReplicator 在目标集群中创建复制器因子为 3 的主题。如果需要,可以直接在目标集群上修改重复因子。

元数据复制

MSKReplicator 还支持将元数据从源集群复制到目标集群。元数据包括主题配置、访问控制列表 (ACLs) 和使用者组偏移量。与数据复制一样,元数据复制也是异步进行的。为了提高性能,MSKReplicator 优先考虑数据复制而不是元数据复制。

下表列出了 Repl MSK icator 复制的访问控制列表 (ACLs)。

操作 研究 APIs允许

更改

主题

CreatePartitions

AlterConfigs

主题

AlterConfigs

创建

主题

CreateTopics,元数据

删除

主题

DeleteRecords, DeleteTopics

描述

主题

ListOffsets、元数据、 OffsetFetch、 OffsetForLeaderEpoch

DescribeConfigs

主题

DescribeConfigs

读取

主题

获取, OffsetCommit, TxnOffsetCommit

写入(仅限拒绝)

主题

生产, AddPartitionsToTxn

MSKReplicator ACLs 仅复制资源类型 “主题” 的LITERAL模式类型。PREFIXED模式类型ACLs和其他资源类型不会ACLs被复制。MSKReplicator 也不会在目标集群ACLs上进行删除。如果您在源集群ACL上删除,则还应同时在目标集群上删除。有关 Kafka ACLs 资源、模式和操作的更多详细信息,请参阅 https://kafka.apache.org/documentation/#security_authz_cli

MSKReplicator 只复制 KafkaACLs,而IAM访问控制不使用它。如果您的客户端使用IAM访问控制来读取/写入您的MSK集群,则还需要在目标集群上配置相关IAM策略以实现无缝故障转移。前缀和相同主题名称复制配置也是如此。

作为消费者组偏移量同步的一部分,MSKReplicator 会针对源集群上的消费者进行优化,这些使用者从更靠近流尖端的位置(主题分区的末尾)进行读取。如果您的消费组在源集群上滞后,则与源集群相比,目标集群上的消费组的延迟可能会更高。这意味着在故障转移到目标集群后,您的使用者将重新处理更多重复的消息。为了减少这种延迟,源集群上的消费者需要赶上 catch 并从直播的末端(主题分区的末尾)开始消费。当你的消费者赶上时,MSKReplicator 将自动减少延迟。

MSK复制器源集群和目标群集

主题名称配置

MSKReplicator 有两种主题名称配置模式:前缀(默认)或相同主题名称复制。

带前缀的主题名称复制

默认情况下,MSKReplicator 会在目标集群中创建新主题,并在源集群主题名称中添加自动生成的前缀,例如。<sourceKafkaClusterAlias>.topic这是为了将复制的主题与目标集群中的其他主题区分开来,并避免在集群之间循环复制数据。

例如,MSKReplicator 将名为 “主题” 的主题中的数据从源集群复制到目标集群中名为 < sourceKafkaCluster Alias>.Topic 的新主题。您可以使用MSK控制台上的 Replicator 详细信息页面在 “sourceKafkaCluster别名” 字段下找到将添加到目标集群中主题名称的前缀。DescribeReplicator API目标集群中的前缀是 < sourceKafkaCluster Alias>。

为了确保您的使用者能够可靠地从备用集群重新启动处理,您需要将使用通配符运算.*符配置为从主题中读取数据。例如,您的消费者需要使用消费。 *topic1在两者中 AWS 区域。此示例还将包括诸如之类的主题footopic1,因此请根据需要调整通配符运算符。

如果要将MSK复制器数据保存在目标集群的单独主题中(例如主动-主动群集设置),则应使用添加前缀的 Replicator。

相同的主题名称复制

作为默认设置的替代方案,Amazon MSK Replicator 允许您在主题复制设置为相同主题名称复制的情况下创建复制器(在控制台中保留相同的主题名称)。你可以在中创建一个新的复制器 AWS 您的目标MSK集群所在的区域。使用相同名称的复制主题可以避免将客户端重新配置为从复制的主题中读取。

复制相同的主题名称(在控制台中保留相同的主题名称)具有以下优点:

  • 允许您在复制过程中保留相同的主题名称,同时还可以自动避免无限复制循环的风险。

  • 简化了多集群流媒体架构的设置和操作,因为您可以避免重新配置客户端以读取复制的主题。

  • 对于主动-被动群集架构,相同主题名称复制功能还简化了故障转移过程,允许应用程序无缝故障转移到备用群集,而无需更改任何主题名称或重新配置客户端。

  • 可用于更轻松地将来自多个MSK集群的数据整合到单个集群中,以进行数据聚合或集中分析。这要求您为每个源集群和同一个目标集群创建单独的复制器。

  • 通过将数据复制到目标MSK集群中同名的主题,可以简化从一个集群到另一个群集的数据迁移。

Amazon MSK Replicator 使用 Kafka 标头自动避免将数据复制回其来源的主题,从而消除了复制过程中出现无限周期的风险。标头是一个键值对,可以包含在每条 Kafka 消息中的键、值和时间戳中。MSKReplicator 将源集群和主题的标识符嵌入到正在复制的每条记录的标题中。MSKReplicator 使用标头信息来避免无限的复制循环。您应验证您的客户端是否能够按预期读取复制的数据。