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

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

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

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

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

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

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

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

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

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