我可以为多个 KCL 应用程序使用一个租约 table 吗?
Can I use one lease table for multiple KCL applications?
我们正在构建一项基于 Kinesis / DynamoDB 流的服务,我们有一个问题(我们在官方文档中找不到)是我们是否可以使用相同的租约 table (DynamoDB) 来存储检查点使用同一流的不同 KCL 应用程序的信息。
- 这是好的做法吗?
- 它会产生某种行为上的不一致吗?
- 您是否建议每个 KCL 应用程序使用单独的租约 table?
非常感谢。
DynamoDB 租约 table 为您的应用程序存储每个分片的序列号,并可用于在您的应用程序重新启动时重新启动工作。一旦处理下一条记录,它就会不断更新每个分片的序列号。
话虽如此,如果您出于某种原因决定使用来自不同应用程序的相同租约 table,那么您将失去在发生故障时优雅地恢复流中位置的可能性,并且可以获得数据丢失。一般来说,在这种情况下,租约 table 将毫无用处,因为它反映的是最近处理的记录的状态,甚至不是单个应用程序的状态。在这种情况下,租约 table 状态将不一致并变得混乱。
综上所述 - 通常需要为不同的应用程序使用单独的租约 table。
我们正在构建一项基于 Kinesis / DynamoDB 流的服务,我们有一个问题(我们在官方文档中找不到)是我们是否可以使用相同的租约 table (DynamoDB) 来存储检查点使用同一流的不同 KCL 应用程序的信息。
- 这是好的做法吗?
- 它会产生某种行为上的不一致吗?
- 您是否建议每个 KCL 应用程序使用单独的租约 table?
非常感谢。
DynamoDB 租约 table 为您的应用程序存储每个分片的序列号,并可用于在您的应用程序重新启动时重新启动工作。一旦处理下一条记录,它就会不断更新每个分片的序列号。
话虽如此,如果您出于某种原因决定使用来自不同应用程序的相同租约 table,那么您将失去在发生故障时优雅地恢复流中位置的可能性,并且可以获得数据丢失。一般来说,在这种情况下,租约 table 将毫无用处,因为它反映的是最近处理的记录的状态,甚至不是单个应用程序的状态。在这种情况下,租约 table 状态将不一致并变得混乱。
综上所述 - 通常需要为不同的应用程序使用单独的租约 table。