1

我需要处理高峰期每秒100秒的记录。这些记录是简单的JSON体,它们应该被收集,然后处理/转换成数据库。Kinesis是我需要的正确工具吗? (和其他各种问题)

的几个问题...

1)是该室壁运动吧?或者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”而不是“最新”获取记录。如果是这样,我如何管理重复?换句话说,我的消费者如何从流中获取记录并处理消费者的关注等,并且始终知道他们正在获取所有记录?

谢谢!

+0

你打算做什么样的处理?你关心维护他们订单的消息吗? –

+0

嗨 - 消息不必维护订单,消费者所做的唯一处理就是转换为不同的格式并转发到其他服务。 –

回答

2
  1. Kinesis对流式传输数据或当您需要在消息之间进行严格排序时更有用。另一方面,您的使用案例似乎更像是两项服务之间的缓冲解决方案。所以,我宁愿SQS去Kinesis。 SQS也更便宜,更简单,并且应该轻松处理您所需的规模。
  2. 您共享的示例使用Kinesis的低级API。但是,您应该更愿意分别使用KPLKCL来实现您的生产者和消费者,因为它们提供更易于使用的更高级别的构造。
  3. 您可以在EC2或上运行Kinesis和SQS生产者和消费者。在后者中,AWS会照顾您的硬件管理。
  4. 是的,你应该去TRIM_HORIZON。如果您的数据中存在重复,则您的消费者应该通过自己做一些簿记来照顾他们。至于消费者下降等,KCL优雅地处理这些案件。
+0

感谢您的回答。问题:1)我将重新考虑SQS作为解决方案。谢谢。 2)KPL和KCL看起来更“复杂”,以比SDK API更少的文档运行。此外,它看起来像只在Redhat/RHEL上运行。 (至少从我的快速阅读安装文档)。 3)明白了,这是有道理的,还需要阅读。 4)因此,如果我使用TRIM_HORIZON,消费者将在流的开始处开始阅读......如何标记我在流中的位置。那是我会跟踪的shard_iterator还是别的? –

+0

我不知道您是否使用低级API。但KCL会自动在DynamoDB中写入检查点,因此您不必自行担心 –

相关问题