我正在做一个项目,本质上是一个很长的生产者/消费者链。这意味着第一个进程从用户获取数据(巨大的csv文件),逐行处理数据,传递到另一个进程/线程,该进程/线程消耗这些数据,进程然后再传递到另一个进程,以此类推。
这条链大约有8-10个单元长,每个单位都是消费者,然后是生产者。
我已经考虑过使用AWS lambdas来做这件事。我也可以使用Java流。我在AWS中看到的优点是,您可以在每个节点上设置单独的节流限制。
因此,如果您的节点的任务是更新dynamodb记录,我们可以节流此节点以匹配dynamodb的写入单元等等。
我发现使用lambda的另一个优势是,我不必编写代码来管理多处理(或多线程),而且我的数据处理将不依赖于我选择的硬件--我也可以通过选择一个低级硬件来节省成本,它的唯一工作将是充当第一个生产者,但我仍然会为aws lambda付费。
发布于 2018-05-02 01:36:14
看起来,reactive streams (而不是java流或AWS )是最适合您的任务的工具。它们规定:
有许多reactive streams实现: JavaRx2、项目反应堆(包含在Spring 5中)、Akka等。
发布于 2018-05-02 00:20:09
听起来您应该使用step函数将lambda链接在一起。
https://stackoverflow.com/questions/50122163
复制相似问题