python - Kinesis 是满足我需求的正确工具吗? (以及其他各种问题)

标签 python amazon-web-services amazon-kinesis amazon-kinesis-firehose amazon-kcl

我需要在峰值时每秒处理 100 条记录。这些记录是简单的 JSON 主体,应该收集它们,然后处理/转换到数据库中。

几个问题...

1) Kinesis 适合这个吗?还是SQS更适合?

2) 使用 kinesis 时,我是否要使用如下所示的 python 示例:https://aws.amazon.com/blogs/big-data/snakes-in-the-stream-feeding-and-eating-amazon-kinesis-streams-with-python/或者我应该在 KCL 中实现我的生产者和消费者?有什么区别?

3) Kinesis 是否为消费者的管理提供任何功能,或者我只是在 EC2 实例上运行它们并自己管理它们?

4)访问数据的正确模式是什么 - 我不能错过任何记录,所以我假设我将从“TRIM_HORIZON”而不是“LATEST”中获取记录。如果是这样,我该如何管理重复项?换句话说,我的消费者如何从流中获取记录并处理消费者下降等问题,并始终知道他们正在获取所有记录?

谢谢!

最佳答案

  1. Kinesis 对于流数据或需要消息之间严格排序时更有用。另一方面,您的用例似乎更像是两个服务之间的缓冲解决方案。因此,相比 Kinesis,我更喜欢 SQS。 SQS 更便宜、更易于使用,并且可以轻松满足您所需的规模。
  2. 您共享的示例使用 Kinesis 的低级 API。但是,您应该更喜欢使用 KPLKCL分别用于实现生产者和消费者,因为它们提供了更易于使用的更高级别的构造。
  3. 您可以在 EC2 或 Lambda 上运行 Kinesis 和 SQS 生产者和使用者。在后者中,AWS 将负责您的硬件管理。
  4. 是的,您应该选择TRIM_HORIZON。如果您的数据中有重复项,您的消费者应该通过自己记账来处理它们。至于消费者下降等情况,KCL 会妥善处理。

关于python - Kinesis 是满足我需求的正确工具吗? (以及其他各种问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42098225/

相关文章:

Python:NameError:未定义全局名称 'sortList'(递归期间)

python - 鸭子类型(duck typing)实践 - Python 3.7

java - 用于 Java 应用程序的 Amazon Kinesis Data Analytics : Avro issue in deserialization incoming messages

python - Django/python 验证 JSON

python - 如何从 txt 文件中读取路径并将这些文件复制到新目录?

java - 创建n个任务并在Spring Batch中并行执行它们

amazon-web-services - AWS S3指定etag值

java - 在 AWS Elasticbeanstalk 中部署时网页资源未加载

amazon-sqs - 向 Amazon Kinesis 写入数据的推荐方式

amazon-web-services - 到 Kinesis Firehose 的 AWS API Gateway 服务代理