bho*_*ass 14 sharding consumer amazon-kinesis
我读过每个kinesis流可以有多个消费者应用程序.
http://docs.aws.amazon.com/kinesis/latest/dev/developing-consumers-with-kcl.html
但是,我听说你每个碎片只能使用消费者.这是真的?我没有找到任何支持这一点的文档,也无法想象如果多个消费者正在从同一个流中读取数据.当然,这并不意味着生产者需要为不同的消费者重复不同分片中的内容.
az3*_*az3 16
Kinesis Client Library在后台启动线程,每个线程都在流中侦听1个分片.您无法通过多个线程连接到分片,即按设计.
http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-record-processor-scaling.html
例如,如果您的应用程序在一个EC2实例上运行,并且正在处理一个包含四个分片的Amazon Kinesis流.这个实例有一个KCL工作器和四个记录处理器(每个分片一个记录处理器).这四个记录处理器在同一进程中并行运行.
在上面的解释中,术语"KCL工作者"指的是Kinesis消费者应用程序.不是线程.
但是在下面,相同的"KCL工作者"术语指的是应用程序中的"工作者"线程; 这是一个可运行的.
通常,在使用KCL时,应确保实例数不超过分片数(故障备用目的除外).每个分片只由一个KCL工作程序处理,并且只有一个相应的记录处理器,因此您永远不需要多个实例来处理一个分片.
请参阅KCL源代码中的Worker.java类.
迟到了,但答案是每个kinesis碎片可以有多个消费者.氯化钾实例将只启动每个碎片一个过程,但你可以有另一种KCL实例消耗相同的流(和碎片),假设第二个有权限.
每个分片每秒最多可支持5个事务进行读取,最高总数据读取速率为每秒2 MB.
如果您想要一个包含多个消费者的流,其中每条消息将被处理一次,那么您最好使用Amazon Simple Queue Service.