我正在努力学习aws kinesis流,按照aws kinesis流的文档。每个shard的摄取量最高为1MBsec或1000 recordssec,允许读取量最高为2MBsec,读取时每秒5个事务。
因此我的疑问是:。如果我的数据包大小是250kb,每个shard只允许写1MB,那么为了获得每秒200条消息的吞吐量,我将需要大约50个shard(根据aws shard计算器,49个,如下图所示).但是在使用AWS提供的shard计算器时,它还要求提供消费者的数量,如果我提供,(例如3个消费者),它将shard数量从50增加到74,NOw我的问题是,增加消费者如何改变所需的shard数量?
所以,谁能解释一下这里的逻辑,谢谢。
AWS定义了以下公式来计算shard的数量。
Number_of_shards = max(incoming_write_bandwidth_in_KiB1024, outgoing_read_bandwidth_in_KiB2048)
在你的情况下。
写入带宽(单位:KiB)。 =
avg.data size in kb * records per second
= 250 * 200 = 50000
读取带宽(单位:KiB)。 =
incoming_write_bandwidth_in_KiB * consumers
= 50000 * 3 = 150000
那么,碎片的数量
= max (50000/1024,150000/2048)
= max (48.8 , 73.2)
= 73.2
因而74块碎片。