Amazon Kinesis Data Streams 中的弹性 - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon Kinesis Data Streams 中的弹性

Amazon全球基础设施围绕Amazon区域和可用区构建。Amazon区域提供多个在物理上独立且隔离的可用区,这些可用区通过延迟低、吞吐量高且冗余性高的网络连接在一起。利用可用区,您可以设计和操作在可用区之间无中断地自动实现故障转移的应用程序和数据库。与传统的单个或多个数据中心基础设施相比,可用区具有更高的可用性、容错性和可扩展性。

有关 Amazon 区域和可用区的更多信息,请参阅 Amazon 全球基础设施

除了Amazon全球基础设施后,Kinesis Data Streams 提供了多种功能,以帮助支持您的数据弹性和备份需求。

Amazon Kinesis Data Streams 中的灾难恢复

故障可能在您使用 Amazon Kinesis Data Streams 应用程序处理流中的数据时在以下级别发生:

  • 记录处理器可能失败

  • 工作程序可能失败,或者已实例化工作程序的应用程序的实例可能失败

  • 托管该应用程序的一个或多个实例的 EC2 实例可能失败

记录处理器失败

工作程序使用 Java 调用记录处理器方法。ExecutorService任务。如果任务失败,工作程序将保留对记录处理器之前在处理的分片的控制。工作程序启动一项新的记录处理器任务来处理该分片。有关更多信息,请参阅 读取限制

工作程序或应用程序失败

如果工作人员或 Amazon Kinesis Data Streams 应用程序的实例失败,则应检测并处理这种情况。例如,如果 Worker.run 方法引发了一项异常,则您应捕获并处理它。

如果应用程序本身失败,您应检测此应用程序并重新启动它。该应用程序启动时,它会实例化一个新工作程序,这会反过来实例化自动获得要处理的分片的新记录处理器。这些分配可能是记录处理器在失败前正在处理的相同分片或这些处理器新接触的分片。

在工作程序或应用程序失败、未检测到失败且应用程序有其他实例正在其他 EC2 实例上运行的情况下,这些实例上的工作程序会处理该失败。它们将创建额外的记录处理器来处理不再由失败的工作程序处理的分片。这些其他 EC2 实例上的负载也会相应地增加。

此处描述的情形假定,尽管工作程序或应用程序失败,但托管 EC2 实例仍在运行,因此不由 Auto Scaling 组重新启动。

Amazon EC2 实例失败

我们建议您在 Auto Scaling 组中为您的应用程序运行 EC2 实例。这样,如果其中一个 EC2 实例失败,Auto Scaling 组会自动启动一个新的实例来代替它。您应配置实例在启动时启动您的 Amazon Kinesis Data Streams 应用程序。