Amazon 的 Kinesis Client Library 可以消费多个流吗?
Can Amazon's Kinesis Client Library consume multiple streams?
我有一个简短的问题。 KCL 是否能够从多个流中消费?您是否应该为您的应用程序设置多个流,或者应该将单个流与单个应用程序绑定?我的特定用例是我需要使用从后端和前端生成的数据。其中一个产生数据的速度比另一个快得多,因此认为它们应该产生单独的流进行处理。有没有办法从同一个 KCL 进程中使用两个流,或者我是否需要设置两个流?感谢您的帮助!
KCL 是一个开源项目,您可以对其进行修改以使用来自多个流的事件,但不建议这样做。最好让事情更简单。
如果您有 2 个不同的事件流,您最好有 2 个不同的运动流,每个流一个。这允许您独立地缩放每个流,因为每个流都有不同的速率和可能不同的峰值。
如果您需要在流之间共享信息,您可以在它们之间使用共享状态变量,使用一些数据库,例如 DynamoDB 或 Redis。
请注意,如果您有一组发送这些事件的服务器,您应该预料到后端的某些事件可能会在前端的事件之前得到处理。您必须处理这些事件的 KCL(或 Lambda)代码可以具有不同的处理速率、不同的故障点和其他 out-of-synch 事件。请注意此类潜在的依赖关系和例外情况。
我有一个简短的问题。 KCL 是否能够从多个流中消费?您是否应该为您的应用程序设置多个流,或者应该将单个流与单个应用程序绑定?我的特定用例是我需要使用从后端和前端生成的数据。其中一个产生数据的速度比另一个快得多,因此认为它们应该产生单独的流进行处理。有没有办法从同一个 KCL 进程中使用两个流,或者我是否需要设置两个流?感谢您的帮助!
KCL 是一个开源项目,您可以对其进行修改以使用来自多个流的事件,但不建议这样做。最好让事情更简单。
如果您有 2 个不同的事件流,您最好有 2 个不同的运动流,每个流一个。这允许您独立地缩放每个流,因为每个流都有不同的速率和可能不同的峰值。
如果您需要在流之间共享信息,您可以在它们之间使用共享状态变量,使用一些数据库,例如 DynamoDB 或 Redis。
请注意,如果您有一组发送这些事件的服务器,您应该预料到后端的某些事件可能会在前端的事件之前得到处理。您必须处理这些事件的 KCL(或 Lambda)代码可以具有不同的处理速率、不同的故障点和其他 out-of-synch 事件。请注意此类潜在的依赖关系和例外情况。