【问题标题】:Is Kinesis the right tool for my needs? (& other assorted questions)Kinesis 是否适合我的需求? (和其他各种问题)
【发布时间】:2017-02-07 19:23:15
【问题描述】:

我需要在高峰时每秒处理 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”获取记录。如果是这样,我如何管理重复项?换句话说,我的消费者如何从流中获取记录并处理宕机的消费者等,并且始终知道他们正在获取所有记录?

谢谢!

【问题讨论】:

  • 你打算做什么样的处理?您是否关心维护其顺序的消息?
  • 嘿 - 消息不必维护顺序,我将由消费者执行的唯一处理是转换为不同的格式并转发到另一个服务。

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


【解决方案1】:
  1. Kinesis 更适用于流式传输数据或当您需要消息之间的严格排序时。另一方面,您的用例似乎更像是两个服务之间的缓冲解决方案。所以,我更喜欢 SQS 而不是 Kinesis。 SQS 也更便宜、更易于使用,并且应该可以轻松处理您所需的规模。
  2. 您分享的示例使用了 Kinesis 的低级 API。但是,您应该更喜欢使用 KPL 和 KCL 分别实现您的生产者和消费者,因为它们提供了更易于使用的更高级别的构造。
  3. 您可以在 EC2 或 Lambda 上同时运行 Kinesis 和 SQS 生产者和消费者。在后者中,AWS 将负责您的硬件管理。
  4. 是的,你应该选择TRIM_HORIZON。如果您的数据中有重复项,您的消费者应该通过自己进行一些簿记来处理它们。至于消费者倒下等情况,KCL 都会优雅地处理。

【讨论】:

  • 感谢您的回答。问题: 1) 我将重新考虑 SQS 作为解决方案。谢谢。 2) KPL 和 KCL 看起来比 SDK API 运行起来更“复杂”,需要更少的文档。而且,看起来它们只在 Redhat/RHEL 上运行。 (至少从我快速阅读安装文档来看)。 3)明白了,这很有意义,也需要阅读。 4)所以,如果我使用 TRIM_HORIZON,消费者将在流的开头开始阅读......我如何标记我在流中的位置。那是我要跟踪的 shard_iterator 还是其他什么?
  • 我不知道您是否使用低级 API。但是 KCL 会自动在 DynamoDB 中写入检查点,所以您不必自己操心
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多