Kinesis是否适合我的需求? (及其他各种问题)

时间:2017-02-07 19:23:16

标签: 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 个答案:

答案 0 :(得分:2)

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