3

我使用 python 的boto.kinesis模块将记录写入AWS Kinesis。达到的最大吞吐量约为 40 次放置/秒。但是,根据Kinesis FAQ

每个分片每秒最多可支持 1000 条 PUT 记录。

所以我目前的方法只能达到理论上可能的 4%,这似乎非常低。

有谁知道如何提高吞吐量?

设置:Kinesis Stream 是一个带有一个分片的实例。生产者位于与 Kinesis Stream 相同区域的专用 AWS EC2 实例 (t3.medium) 上。它创建大约 20 个字符长度的字符串,并通过boto.kinesis.Connection.put_record("my_stream", my_message).

简化代码:

from boto import kinesis
import time

connection = kinesis.connect_to_region(REGION)
stream = connection.create_stream("my_stream", shard_count=1)
time.sleep(60)  # wait a minute until stream is created

for i in range(NUM_MESSAGES): 
    my_message = "This is message %d" % i
    connection.put_record(my_message, "my_stream", "partition_key")
4

1 回答 1

2

http://docs.aws.amazon.com/kinesis/latest/dev/service-sizes-and-limits.html

限制是记录/秒,您应该使用 putRecords 来提高写入吞吐量。你这样做的方式是在同一个调用中放置多个记录。所以你继续追加,最后你做 put 记录。


看看:https ://github.com/awslabs/kinesis-poster-worker

于 2015-06-23T18:55:26.683 回答