

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

# 使用复制来提高 Kafka 流应用程序跨区域的弹性
<a name="msk-replicator-increase-resiliency"></a>

您可以使用 MSK Replicator 设置主动-主动或主动-被动集群拓扑，以提高 Apache Kafka 应用程序跨区域的弹性。 AWS 在主动-主动设置中，两个 MSK 集群都积极提供读取和写入服务。在主动-被动设置中，一次只有一个 MSK 集群主动提供流媒体数据，而另一个集群处于备用状态。

## 构建多区域 Apache Kafka 应用程序的注意事项
<a name="msk-replication-multi-region-kafka-applications"></a>

您的使用器必须能够在不影响下游的情况下重新处理重复的消息。MSK Replicator 会复制可能 at-least-once导致备用集群中出现重复的数据。当您切换到辅助 AWS 区域时，您的消费者可能会多次处理相同的数据。MSK 复制器会优先处理复制数据而不是使用器偏移，以提高性能。失效转移后，使用器可能会开始从较早的偏移中读取，从而导致重复处理。

生成器和使用器还必须容忍丢失最少的数据。由于 MSK Replicator 异步复制数据，因此当主 AWS 区域开始出现故障时，无法保证所有数据都会复制到辅助区域。您可以使用复制延迟来确定未复制到二级区域的最大数据量。

## 使用主动-主动与主动-被动集群拓扑
<a name="msk-replicator-active-versus-passive"></a>

主动-主动集群拓扑提供了几乎为零的恢复时间，并且您的流媒体应用程序能够在多个 AWS 区域同时运行。当一个区域中的集群受损时，连接到另一个区域的集群的应用程序会继续处理数据。

主动-被动设置适用于一次只能在一个 AWS 区域运行的应用程序，或者当您需要更多地控制数据处理顺序时。主动-被动设置比主动-主动设置需要更多的恢复时间，因为您必须在二级区域启动整个主动-被动设置，包括您的生成器和使用器，才能在失效转移后恢复流式传输数据。