使用复制来提高 Kafka 流媒体应用程序跨区域的弹性 - Amazon Managed Streaming for Apache Kafka
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用复制来提高 Kafka 流媒体应用程序跨区域的弹性

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

构建多区域 Apache Kafka 应用程序的注意事项

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

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

使用主动-主动与主动-被动集群拓扑

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

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