【问题标题】:Read and write transactions in Amazon Kinesis在 Amazon Kinesis 中读取和写入事务
【发布时间】:2015-08-26 08:51:47
【问题描述】:

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

相关部分来自Amazon Kinesis Limits:

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

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

【问题讨论】:

    标签: amazon-web-services amazon-kinesis


    【解决方案1】:

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

    【讨论】:

    • 所以每秒 5/1024 次事务仅适用于单个 GetRecords 和 PutRecord(s) 调用,其中单个 GetRecords 可能会返回数千条记录供我处理?
    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-03-31
      • 2021-03-11
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多