在Amazon Kinesis中读写事务

时间:2015-06-10 21:25:49

标签: amazon-web-services amazon-kinesis

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

Amazon Kinesis Limits的相关部分:

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

它明确提到每个分片每秒有5次读取和1024次写入。为什么读取比写入更昂贵,或者在这里我是否有一个关键的Kinesis概念?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

常见的用例是多个制作人将他们的活动写入Kinesis。例如,多个Web服务器,多个浏览器或多个移动设备。每个制作人可以逐个或多达500个事件的一批事件来编写多个事件。

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

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

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

相对于写入次数,读取次数仍然很小。在这种情况下,"快速"读者将每1/4秒阅读一次,以便对事件做出近乎实时的反应。因此,写入与读取的比率将 1024:5 (= 1 + 4)