我需要每秒处理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”中获取记录。如果是这样,我该如何管理副本?换句话说,我的消费者如何从流中获取记录并处理下降的消费者等,并始终知道他们正在获取所有记录?
谢谢!
最佳答案
Kinesis对于流数据或在消息之间需要严格排序时更有用。另一方面,用例似乎更像是两个服务之间的缓冲解决方案。因此,与Kinesis相比,我更喜欢SQS。 SQS的价格也更便宜,更简单,并且可以轻松处理所需的秤。
您共享的示例使用Kinesis的低级API。但是,您应该首选使用KPL和KCL分别实现生产者和消费者,因为它们提供了更易于使用的更高级别的构造。
您可以在EC2或Lambda上同时运行Kinesis和SQS生产者和消费者。在后者中,AWS将负责您的硬件管理。
是的,您应该使用TRIM_HORIZON
。如果您的数据中有重复项,那么您的消费者应该通过自己做一些簿记来处理它们。至于下跌的消费者等,KCL会妥善处理这些案件。
关于python - Kinesis是满足我需求的正确工具吗? (及其他各种问题),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42098225/