Akka提供了一些高性能:
50 million msg/sec on a single machine. Small memory footprint; ~2.5 million actors per GB of heap.
actor的行为类似于单个线程,这意味着您可以并行处理消息。我很好奇它如何在后台实现,以便每GB堆可以有约250万个actor?这是否意味着我可以使用参与者执行250万个并行任务?显然,每GB不能有那么多线程。
最佳答案
您不需要250万活跃角色即可处理5000万消息/秒。 Akka团队在48核机器上工作的96位 Actor 达到了50M msg/sec的速度(请参阅下面的链接,以了解详细信息)。
基本上,这些数字(“每GB 5000万个消息/秒”和“每GB约250万个actor”)彼此无关。
“每GB约250万个actor”表示Akka actor重量轻且几乎没有内存占用(但是当然它们一次都不能处于 Activity 状态-这在很大程度上取决于内核的数量和线程的数量)调度程序设置)。
“5000万msg/sec”表示可以通过仔细调整actor池大小和调度程序设置(see details here)来达到此性能水平。
关于multithreading - Akka如何达到如此高的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20463362/