本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 应用程序。