我想弄清楚Akka是如何工作的以及使用Actor模型的最佳做法。
我对此有几个问题。
问题:
在为下面提到的场景配置演员和主题总数时,我们应该记住哪些决定因素?
方案:
一个。在actor(Fire和Forget)上只调用 tell 。
湾正在调用问(期货和承诺)。
使用路由器,例如RoundRobinRouter(X)而不是手动创建者,有什么优势/劣势。
调度程序如何协调邮箱,演员和线程以进行邮件处理。
答案 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