Answers:
免责声明:我是Akka的PO
这些就是我脑海中的那些。
另一方面,使用Akka意味着您可以使用Scala,Java,Groovy或JRuby编写应用程序。
在Erlang中,保证大约每减少1000次切换一次。在这样一个天真的框架中,例如Scala / Akka代理拥有一个调度程序,直到它完成接收工作为止。将军。游戏结束。Hasta la vista :)人们,不要把时间浪费在伪技术上。我很震惊,这里的人们将Scala与Erlang进行了比较。
此外,还有许多其他所谓的“杀手级功能”,但这是我的建议,不要以功能为出发点,请考虑启用特定语言的成语。Scala窃取了“最佳功能”,Erlang使用正确的习惯用法来启用/实施正确的习惯用法,以可靠地构建系统,并使用从这些正确习惯用法驱动的高级语言。当您学习Erlang时,您将在重新建立思维,以自己的方式思考分布式可靠系统,Erlang会教您并进行升级。Scala只是另一种命令性语言(哦,对不起,多范式,有趣的单词),它试图从其他语言中窃取良好的功能。
几乎没有人提到进程隔离。如果不能保证“您的线程不会惹上我的垃圾”,那么分布式系统就很难推理了。(使用 Erlang的过程已经很困难了。)
AFAIK(考虑到我有限的直接使用JVM的经验,这并不算遥遥),只有Erlang实际上在JVM上获得了“正确”的进程隔离。Google先生可以为Fox和Candea(?)在使用“微重启”技术(“面向恢复的计算”)的研究系统上提供研究建议。一位Erlang开发人员阅读了该研究并说了几句话:
对我而言,在整个Erlang集群中进行热代码交换而不会造成停机(例如make:all([netload]
:)是Erlang的杀手级功能之一。
但是,让我们扭转一下您的问题:Akka没有Erlang的什么?当然,您可以向Java添加数十个扩展和库(scala,akka,spring,osgi等),以尝试接近Erlang。但是,重点在哪里?总而言之,所有这些扩展都比学习简单的Erlang语言要复杂得多,Erlang语言已经证明了20多年,可以在零停机时间内提供最高的可扩展性。