【发布时间】:2018-05-24 15:33:15
【问题描述】:
我正在尝试学习 aws kinesis 流,并根据 aws kinesis 流文档。 每个分片最多可提取 1MB/秒或 1000 条记录/秒,并允许读取高达 2MB/秒和每秒 5 个事务进行读取。
因此我的疑问是: 如果我的数据包大小为 250kb,并且每个分片只允许写入 1MB,那么要获得每秒 200 条消息的吞吐量,我将需要大约 50 个分片(根据 aws 分片计算器,49 个,如下图所示)。但是在使用 AWS 提供的 shard-calculator 时,它还会询问消费者的数量,如果我提供,(比如 3 个消费者),它会将分片数从 50 增加到 74,现在我的问题是,添加消费者如何改变所需的分片数?
所以有人可以解释一下这里的逻辑。 谢谢。
【问题讨论】:
-
我想知道您是否错过了消费者应用程序一词的细微差别。如果您独立地接收和处理所有流分片的两个完整副本,则您有 2 个使用者 应用程序。这与您可能拥有的 n 个工作节点的数量不同,每个工作节点处理 1 / n 个分片,正如您正确推断的那样,不会影响需要的分片数。多个工作节点可以共同组成一个消费者应用程序。
-
谢谢迈克尔,如果我错了,请纠正我,因为工人是一个线程,所以 KCL 会根据可用的分片数量自动分叉新线程。同样,当您说每个工作节点处理 1/n 分片时,这是否意味着一个工作节点具有迭代器在分片中数据的不同索引处工作。
-
通过阅读 amazon kinesis 文档,我理解的是,就对分片执行的操作而言,读取和写入是独立的操作,因此通过为写入提供特定数量的分片,我们只是在解决我们的写入速度问题对于生产者。此外,在快速读取数据时,首先取决于分片的数量,因为数量越大意味着每个 kcl 工作人员将获得自己的分片,而不必担心分时资源。但它会因情况而异。
-
你在哪里找到这个分片计算器?
标签: amazon-web-services amazon sharding amazon-kinesis