gpt4 book ai didi

multithreading - Akka Actor 优先级

转载 作者:行者123 更新时间:2023-12-02 06:45:05 25 4
gpt4 key购买 nike

我有一个基于参与者的系统,它执行定期的、CPU 密集型数据摄取并为 RESTful 端点提供服务。我使用 Akka actor 来发出信号/控制摄取过程的各个阶段,并使用 Spray(当然是基于 Akka 构建的)来为我的 Restful 端点提供服务。

我的问题是这样的:当摄取开始时,它会消耗大部分 CPU,导致 RESTful 端点挨饿,直到完成为止。

降低摄取优先级的最佳方法是什么?目前,摄取和喷射模块共享相同的 ActorSystem,但如果这有助于解决方案,则可以将它们分开。

最佳答案

系统中的不同参与者似乎需要位于不同的调度程序中。为 CPU 密集型参与者创建一个新的调度程序,并将 Web 服务参与者保留在默认调度程序中(或者如果您认为合适,也可以将它们移动到另一个调度程序)

您可能想要调整新创建的调度程序 - 例如,如果您说您的摄取 Actor 执行计算密集型作业,您应该将调度程序的并行度降低到接近 1.0

将你的 Actor 系统分成不同的调度程序可以防止出现与你遇到的类似的问题 - 如果某些 Actor 开始占用底层线程,它们最终会使运行它们的调度程序饱和。通过将 Web Actor 放在另一个调度程序中,您可以限制 CPU 密集型 Actor 对系统其余部分的影响。这个有点类似于"bulkheading"的概念。

以下是有关 Akka 调度程序的更多信息: http://doc.akka.io/docs/akka/2.2.0/scala/dispatchers.html

要配置新的调度程序,还值得查看文档的配置部分: http://doc.akka.io/docs/akka/2.2.0/general/configuration.html

关于multithreading - Akka Actor 优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18450666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com