Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有Java(流)多线程/处理的生产者-消费者_Java_Multithreading_Lambda_Aws Lambda_Java Stream - Fatal编程技术网

具有Java(流)多线程/处理的生产者-消费者

具有Java(流)多线程/处理的生产者-消费者,java,multithreading,lambda,aws-lambda,java-stream,Java,Multithreading,Lambda,Aws Lambda,Java Stream,我正在从事一个项目,它本质上是一个生产者/消费者的长链。这意味着第一个进程从用户(巨大的csv文件)获取数据,逐行处理数据,传递到另一个进程/线程,该进程/线程使用该数据,处理数据,然后传递到另一个进程/线程,以此类推。 链长约8-10个单元,每个单元分别充当消费者和生产者。 我曾想过使用AWS lambdas来实现这一点。我也可以使用Java流。我在AWS lambda中看到的优点是,您可以在每个节点上设置单独的节流限制。 因此,如果您的节点的任务是更新dynamodb记录,那么我们可以限制此

我正在从事一个项目,它本质上是一个生产者/消费者的长链。这意味着第一个进程从用户(巨大的csv文件)获取数据,逐行处理数据,传递到另一个进程/线程,该进程/线程使用该数据,处理数据,然后传递到另一个进程/线程,以此类推。
链长约8-10个单元,每个单元分别充当消费者和生产者。
我曾想过使用AWS lambdas来实现这一点。我也可以使用Java流。我在AWS lambda中看到的优点是,您可以在每个节点上设置单独的节流限制。
因此,如果您的节点的任务是更新dynamodb记录,那么我们可以限制此节点以与dynamodb的写入单元相匹配,依此类推。
使用lambda的另一个优点是,我不必编写代码来管理多处理(或多线程),我的数据处理也不会依赖于我选择的硬件——我还可以通过选择一个低级硬件来节省成本,该硬件的唯一工作是充当第一生产商,但我仍然需要支付aws lambda的费用

  • 如果我使用Java lambda并以与使用AWS lambda相同的方式使用它们,那么使用Java流是否类似?我可以在Java lambdas中使用节流吗
  • 如果我使用Java streams,是否有一种简单的方法来管理多处理(线程)
  • 除了限制和管理池之外,使用lambda还有其他好处吗?有什么缺点吗
  • 除了上述两项,还有其他选择吗
  • 如果链中的某些节点需要多个使用者,该怎么办?e、 g.消费者消费数据、处理数据并将其传递到链中的下一个,但我们还必须记录数据或将其存储在数据库中

  • 听起来您应该使用步骤函数来链接lambda。

    听起来您应该使用步骤函数来链接lambda。

    看起来反应流(而不是java流或AWS lambda)是最适合您的任务的工具。它们提供:

    • 背压,即平衡消费者和生产者的速度
    • 并行执行管道链的所有步骤
    • 为同一生产商连接多个消费者

    有许多
    反应流
    实现:JavaRx2、Project Reactor(包含在Spring 5中)、Akka streams和其他。

    看起来
    反应流
    (而不是java streams或AWS lambdas)是最适合您的任务的工具。它们提供:

    • 背压,即平衡消费者和生产者的速度
    • 并行执行管道链的所有步骤
    • 为同一生产商连接多个消费者
    有许多
    反应流
    实现:JavaRx2、projectreactor(包含在spring5中)、Akka流和其他