定义Akka Actor Count的最佳做法是什么?

时间:2016-09-14 14:19:27

标签: java scala akka actor

我想弄清楚Akka是如何工作的以及使用Actor模型的最佳做法。

我对此有几个问题。

问题:

  1. 在为下面提到的场景配置演员和主题总数时,我们应该记住哪些决定因素?

    方案:

    一个。在actor(Fire和Forget)上只调用 tell

    湾正在调用(期货和承诺)。

  2. 使用路由器,例如RoundRobinRouter(X)而不是手动创建者,有什么优势/劣势。

  3. 调度程序如何协调邮箱,演员和线程以进行邮件处理。

1 个答案:

答案 0 :(得分:1)

Futures and Promises可以独立于Actors和路由器使用。下面的Alvin Alexander链接在将Futures / Promises与Threads(与Java相同)方面做得相当不错。

您应该使用的路由类型取决于您的特定应用需求。通常,您应该选择一种路由技术来反映您尝试解决的现实问题。例如。它更像是邮箱,公共汽车/广播,还是循环赛。

如果您不使用Akka提供的内置路由器,那么您可能会想要编写自己的路由器。然而,你可能很难改进Akka库:在下面的akka​​.io文档中,他们解释了一些路由工作被库委托给了演员,以处理路由器是单一的这一事实 - 螺纹的。

如果你有几千兆字节的RAM,一台典型的计算机可以让你启动成千上万的线程或演员。但是,在任何一个时刻,实际运行的线程数都不会超过CPU中的核心数。

以下是一些文章,可以帮助您确定使用哪种技术以及适合的线程和角色数量:

http://doc.akka.io/docs/akka/2.4.10/scala/routing.html

Akka messaging mechanisms by example

How many actors can be launched in scala?

http://alvinalexander.com/scala/differences-java-thread-vs-scala-future

How many threads can ran on a CPU at a time