8

我是 Kinesis 的新手,所以这似乎是一个非常基本的问题,但我无法找到明确的答案来解释 Kinesis 流中的读写事务之间的实际区别。

Amazon Kinesis Limits的相关部分:

  • GetShardIterator 可以为每个打开的分片每秒提供多达 5 个事务。
  • GetRecords 可以检索 10 MB 的数据。
  • 每个分片每秒最多可支持 5 个事务进行读取,最大总数据读取速率为每秒 2 MB。
  • 每个分片每秒最多可支持 1024 条记录进行写入,最高总数据写入速率为每秒 1 MB(包括分区键)。此写入限制适用于 PutRecord 和 PutRecords 等操作。

它清楚地提到了每个分片每秒 5 次读取和 1024 次写入。为什么读取比写入昂贵得多,或者这里有一个我没有掌握的关键 Kinesis 概念?

4

2 回答 2

8

Kinesis 使您能够将细粒度数据提取到流中并读取成批的记录以处理信息。因此,每秒可以读取的兆字节量比每个分片获得的读取事务数重要得多。例如,您可能有一个繁忙的网站,每分钟产生数千个视图,并且有一个 EMR 集群来处理您的访问日志。在这种情况下,您将拥有比读取事件更多的写入事件。这同样适用于点击流、金融交易、社交媒体提要、IT 日志和位置跟踪事件等。

于 2015-06-10T23:45:14.723 回答
5

常见的用例是多个生产者将他们的事件写入 Kinesis。例如,多个 Web 服务器、多个浏览器或多个移动设备。每个生产者可以编写多个事件,可以是一个接一个,也可以是一批最多 500 个事件。

另一方面,事件的消费者是少数进程。简单的用例是“慢速”读取器从 kinesis 流中读取批量事件(例如,每 10 秒 10,000 个事件)并将它们作为单个日志文件写入 S3。

在这种情况下,您正在编写数千个事件(主要是一个接一个),但您每秒仅读取一次(或在上面的示例中为 10 秒)在此时间段内添加到流中的所有事件。因此,写入与读取的比率为1024:1

在大多数情况下,运动流中只有少数消费者,而不是单个阅读器。例如,在上面的“慢”阅读器之上,您可以拥有一个“快速”阅读器,它正在扫描传入的事件并过滤它们或汇总它们的值,以便能够实时做出反应。这种快速阅读器可以识别欺诈交易并阻止它们,或计算操作仪表板的实时计数器。

相对于写入的数量,读取的数量仍然很小。在这种情况下,“快速”阅读器将每 1/4 秒阅读一次,以允许对事件进行近乎实时的反应。因此,写入与读取的比率将为1024:5 (=1+4)

于 2015-06-13T17:19:27.767 回答