我想知道Akka Actor模型的适用性。akka演员模型vs java在以下场景中的使用
我知道这是很有用的情况下,大量的Actor实例被创建和销毁。例如一个呼叫服务器,每一个来电都会创建一个演员实例并与其他几个演员进行通信,并在通话结束后被杀死。
它是在下列情况下也是有用的:
服务器具有超过演员实现几个处理元件(10〜50)。这些处理元件的寿命是无限的。其中一些不维护状态和一些维护状态。处理元素处理消息并以固定的方式将消息传递给其他参与者。系统接收来自外部的大量消息并通过处理元素传递出系统。
我的直觉是我们不能通过使用Akka Actor模型,甚至在Scala中实现这个服务器来获得任何优势。因为Akka设计的用例在这里不适用。如果放大意味着处理元素动态增加,那么它将适用。
对于固定的拓扑结构,我认为如果我在Java中实现它,它将在原始性能方面更有利。 Scala的“不变性”功能会导致更多副本,从而降低性能。所以我相信我更好地坚持Java。
我的理解是否正确?我想知道为什么我应该离开Java并在上面的应用场景中使用Scala/Akka。我的目标是每秒处理100万条消息。
我认为这是一个很好的Akka用例。处理单元,一些有状态的,全部交换消息。你为什么不使用它?没有理由Akka不适合固定演员拓扑。 – 2013-05-07 14:34:13
同上。演员的无限生命这一事实与阿卡在这里的适用性无关。事实上,大多数管道式处理任务 - 你的情况看起来像 - 是一个很好的匹配。 – 2013-05-07 14:53:19
感谢您的意见。我在我的问题中错过了它,但我想说的是,对于固定拓扑,Akka actor模型与Java中实现的相同事物的优点是什么。最后,Scala使用Java数据结构fr队列等。所以我认为Java会给我更多的原始性能。如果是这样的话,那么为什么有人应该考虑Scala的原始性能? – weima 2013-05-07 19:36:56