我正在开展一个基本上是生产者/消费者长链的项目。这意味着第一个进程从用户(巨大的csv文件)获取数据,逐行处理数据,传递到另一个消耗此数据的进程/线程,进程然后传递给另一个进程/等等。
该链条长约8-10个单位,每个单位充当消费者,然后是生产者
我曾想过使用AWS lambdas来做这件事。我也可以使用Java流。我在AWS lambda中看到的优势是您可以对每个节点设置单独的限制限制
因此,如果您的节点的工作是更新dynamodb记录,我们可以限制此节点以匹配dynamodb的写入单位等。
我看到使用lambda的另一个优点是我不必编写代码来管理多处理(或多线程),我的数据处理也不依赖于我选择的硬件 - 我还可以通过选择来节省成本一个低级硬件,其唯一的工作就是作为第一个制作人,但我还是要为aws lambda付费。
答案 0 :(得分:1)
看起来reactive streams
(而不是java流或AWS lambdas)是适合您任务的最佳工具。他们提供:
有许多reactive streams
实现:JavaRx2,Project Reactor(包含在Spring 5中),Akka Streams等。
答案 1 :(得分:0)
听起来你应该使用步骤函数将lambda链接在一起。