我有多个EC2实例运行同一个微服务,其中有一个运行Kinesis的消费者(使用KCL)。
我的问题是,当Kinesis流获得新事件时,由于所有消费者都在轮询,所有实例的消费者是否会使用同一事件?
答案 0 :(得分:1)
该事件仅由一个消费者使用
答案 1 :(得分:1)
KCL的设计使每个分片仅由一个工作人员处理-内置租用机制是提供此功能的关键。
虽然在通常情况下,每个消费者只会收到其拥有的租约碎片的消息,但在某些情况下(通常是由于连接超时/断开或主机死/停止响应而导致)值得考虑的是,这可能导致对流中的消息进行双重处理。
作为一个具体示例:如果一个工作人员未能续订租约(通常是由于该工作人员主机与DynamoDB之间的连接问题引起的),则另一位工作人员可能会获得该租约并在原始工作人员仍在工作时开始处理