2017-04-13 95 views
2

我已经阅读了关于kinesis碎片和多个消费者的一些问题,但我仍然不明白它是如何工作的。Kinesis流/碎片 - 多个消费者

我的用例:我有一个只有一个碎片的kinesis流。我想要使​​用不同的lambda函数使用这个碎片,每个函数都是独立的。就像每个lambda函数都有自己的分片迭代器。

可能吗?从同一个流/碎片中设置多个lambda消费者(基于流)读取?

回答

1

是的,没有问题!

分片数量不限制流可以拥有的使用者数量。 在你的情况下,它只会限制每个lambda的并发调用次数。这意味着对于每个消费者,您只能拥有并发执行的分片数量。

请参阅this doc了解更多详情。

+0

这对我仍然没有意义。如果我只有一个分片和多个函数使用同一个分片,我不能让它们同时运行,对吧?所以当一条新的记录到达一个流时,lambda将被一个接一个地调用。 –

+0

@ p.magalhaes是的,你是对的。基本上,如果您只有一个碎片,并且您不会为同一个用户同时运行Lambda函数。您必须足够快地使用分片,您不能让多个线程为同一个使用者使用同一个分片。看到这个例子http://stackoverflow.com/a/34509567/2836435。同样适用于使用Kinesis的AWS Lambda。 – SerhatCan

+1

我认为这是错误的。有了1个分片和2个不同的消费者,当有新的记录到达时,您将同时调用和运行2个消费者。当我试着,当信息到达时,有两个功能可以持续100秒,而且这两个功能同时运行 – DaMaill