给定具有多个分片的单个流,我假设每个应用程序都将通过 Kinesis 客户端库在从该流处理的记录上维护自己的检查点。但是,我发现很难找到阅读 AWS 上的文档是否属于这种情况。
我的问题是,如果我有两个 Kinesis 应用程序使用 KCL 连接到同一个流,它们是否会共享同一个检查点来处理记录?他们可以相互独立地处理记录吗?
给定具有多个分片的单个流,我假设每个应用程序都将通过 Kinesis 客户端库在从该流处理的记录上维护自己的检查点。但是,我发现很难找到阅读 AWS 上的文档是否属于这种情况。
我的问题是,如果我有两个 Kinesis 应用程序使用 KCL 连接到同一个流,它们是否会共享同一个检查点来处理记录?他们可以相互独立地处理记录吗?
为了使事件处理具有可扩展性和更简单,最好保留以下内容:
如果您保留这些最佳实践,它会使您的事件处理变得更加敏捷和可扩展。
如果您将工作实例与分片的比率保持为 1:1,则更容易扩展,因为您只需添加分片(即拆分现有分片并将分片容量翻倍),每个工作实例将只处理相同数量的事件(例如,每秒 1000 个事件)。KCL 将为每个新分片添加一个工作实例。
您还可以自由修改一种类型的逻辑,而无需更改其他逻辑。例如,如果您想通过稍微修改逻辑来“重放”事件以进行处理,则其余逻辑不必重复处理。最简单的逻辑拆分是“慢速”处理(例如放入 S3 并复制到 Redshift)和“快速”处理(实时检查事件以更新计数器或识别欺诈以立即阻止)。KCL 将为每种此类处理添加一个应用程序。
简而言之,KCL 将帮助您维护每个应用程序和每个分片的处理(检查点)状态。例如,如果您的流中有 3 个消费者逻辑和 8 个分片,那么您将有 3*8=24 个检查点。