在 Amazon Kinesis 中读写事务
Read and write transactions in Amazon Kinesis
我是 Kinesis 的新手,所以这似乎是一个非常基本的问题,但对于 Kinesis 流中的读写事务之间的实际区别,我一直无法找到明确的答案。
来自Amazon Kinesis Limits的相关部分:
- GetShardIterator can provide up to 5 transactions per second per open shard.
- GetRecords can retrieve 10 MB of data.
- Each shard can support up to 5 transactions per second for reads, up to a maximum total data read rate of 2 MB per second.
- Each shard can support up to 1024 records per second for writes, up to a maximum total data write rate of 1 MB per second (including partition keys). This write limit applies to operations such as PutRecord and PutRecords.
它清楚地提到每个分片每秒 5 次读取和 1024 次写入。为什么读取比写入贵这么多,还是这里有一个关键的 Kinesis 概念我没有掌握?
Kinesis 使您能够将粒度数据提取到流中并读取成批记录以处理信息。因此,每秒可读取的兆字节数比每个分片获得的读取事务数重要得多。例如,您可能有一个繁忙的网站,每分钟产生数千次浏览,并且有一个 EMR 集群来处理您的访问日志。在这种情况下,您将拥有比读取事件更多的写入事件。这同样适用于点击流、金融交易、社交媒体提要、IT 日志和位置跟踪事件等。
常见的用例是多个生产者将他们的事件写入 Kinesis。例如多个 Web 服务器、多个浏览器或多个移动设备。每个生产者可以写入多个事件,可以一个一个地写入,也可以批量写入,最多 500 个事件。
另一方面,事件的消费者是少数进程。简单用例是 "slow" reader 从运动流中读取成批事件(例如,每 10 秒 10,000 个事件)并将它们作为单个日志文件写入 S3。
在这种情况下,您正在编写数千个事件(大部分是一个接一个),但您每秒只读取一次(或在上面的示例中为 10 秒)所有添加到流中的事件一段的时间。因此,写入与读取的比率为1024:1。
在大多数情况下,kinesis 流中只有少量消费者,而不是单个 reader。例如,在上面的 "slow" reader 之上,您可以有一个 "fast" reader 来扫描传入的事件并过滤它们或汇总它们的值,以便能够实时做出反应。这种快速 reader 可以识别欺诈交易并阻止它们,或者计算操作仪表板的实时计数器。
读的次数还是会少一些,相对于写的次数。在这种情况下,"fast" reader 将每 1/4 秒读取一次,以便对事件做出近乎实时的反应。因此,写入与读取的比率将为 1024:5 (=1+4)
我是 Kinesis 的新手,所以这似乎是一个非常基本的问题,但对于 Kinesis 流中的读写事务之间的实际区别,我一直无法找到明确的答案。
来自Amazon Kinesis Limits的相关部分:
- GetShardIterator can provide up to 5 transactions per second per open shard.
- GetRecords can retrieve 10 MB of data.
- Each shard can support up to 5 transactions per second for reads, up to a maximum total data read rate of 2 MB per second.
- Each shard can support up to 1024 records per second for writes, up to a maximum total data write rate of 1 MB per second (including partition keys). This write limit applies to operations such as PutRecord and PutRecords.
它清楚地提到每个分片每秒 5 次读取和 1024 次写入。为什么读取比写入贵这么多,还是这里有一个关键的 Kinesis 概念我没有掌握?
Kinesis 使您能够将粒度数据提取到流中并读取成批记录以处理信息。因此,每秒可读取的兆字节数比每个分片获得的读取事务数重要得多。例如,您可能有一个繁忙的网站,每分钟产生数千次浏览,并且有一个 EMR 集群来处理您的访问日志。在这种情况下,您将拥有比读取事件更多的写入事件。这同样适用于点击流、金融交易、社交媒体提要、IT 日志和位置跟踪事件等。
常见的用例是多个生产者将他们的事件写入 Kinesis。例如多个 Web 服务器、多个浏览器或多个移动设备。每个生产者可以写入多个事件,可以一个一个地写入,也可以批量写入,最多 500 个事件。
另一方面,事件的消费者是少数进程。简单用例是 "slow" reader 从运动流中读取成批事件(例如,每 10 秒 10,000 个事件)并将它们作为单个日志文件写入 S3。
在这种情况下,您正在编写数千个事件(大部分是一个接一个),但您每秒只读取一次(或在上面的示例中为 10 秒)所有添加到流中的事件一段的时间。因此,写入与读取的比率为1024:1。
在大多数情况下,kinesis 流中只有少量消费者,而不是单个 reader。例如,在上面的 "slow" reader 之上,您可以有一个 "fast" reader 来扫描传入的事件并过滤它们或汇总它们的值,以便能够实时做出反应。这种快速 reader 可以识别欺诈交易并阻止它们,或者计算操作仪表板的实时计数器。
读的次数还是会少一些,相对于写的次数。在这种情况下,"fast" reader 将每 1/4 秒读取一次,以便对事件做出近乎实时的反应。因此,写入与读取的比率将为 1024:5 (=1+4)