Amazon Kinesis Data Streams
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

从 Amazon Kinesis Data Streams 中的故障恢复

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

  • 记录处理器可能失败

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

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

记录处理器失败

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

工作程序或应用程序失败

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

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

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

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

Amazon EC2 实例失败

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