我想知道 Akka Actor 模型的适用性。
我知道它在创建和销毁大量 Actor 实例的情况下很有用。例如,一个呼叫服务器,每个来电都会创建一个参与者实例并与少数其他参与者通信,并在呼叫结束后被杀死。
在以下情况下是否也有用:
一个服务器有一些处理元素(10~50)在 Actor 上实现。这些处理元件的寿命是无限的。其中一些不保持状态,一些保持状态。处理元素处理消息并以固定方式将消息传递给其他参与者。系统从外部接收大量消息,并通过处理元素并离开系统。
我的直觉是,我们无法通过使用 Akka Actor 模型甚至在 Scala 中实现这个服务器来获得任何优势。因为 Akka 设计的用例在这里不适用。如果放大意味着动态增加处理元素,那么它将是适用的。
对于固定拓扑,我认为如果我在 Java 中实现它,它将在原始性能方面更有利。Scala 的“不变性”特性会导致更多的副本,从而降低性能。所以我相信我最好坚持 Java。
我的理解正确吗?我是一个坚果壳,我想知道为什么我应该离开 Java 并在上面的应用场景中使用 Scala/Akka。我的目标是每秒处理 100 万条消息。