我最近一直在关注akka,这令人印象深刻.看起来它具有erlang的大部分杀手级功能 - 位置透明度,监督层次结构等等.有没有任何功能erlang有akka没有?
Vik*_*ang 123
免责声明:我是Akka的PO
那些是我头脑中的那些.
另一方面,使用Akka意味着您可以使用Scala,Java,Groovy或JRuby来编写应用程序.
小智 74
在Erlang过程中,保证大约每1000次减少一次.在这样一个天真的框架中,Scala/Akka代理拥有一个调度程序,直到它完成接收工作.将军.游戏结束.Hasta la vista :)人们,不要在伪技术上浪费你的时间.我震惊的是,这里的人比较Scala和Erlang.
还有许多其他所谓的"杀手特征",但这里是我的建议,不要在功能方面思考,考虑能够使特定语言的习语.Scala窃取"最佳功能",Erlang使用正确的习惯用来实现您可靠地构建系统,使用高级语言来驱动这些正确的习语.当你学习Erlang时,你正在重建你的思想,思考分布式可靠系统的方式,Erlang会教你并升级你.Scala只是另一种命令(哦,抱歉,多范式,有趣的词)语言试图窃取其他语言的好功能.
Sco*_*hie 39
几乎没有人提到过程隔离.如果没有"你的线程不能搞乱我的垃圾"的保证,分布式系统就更难以推理了.(对于 Erlang的流程,他们已经足够困难了.)
AFAIK(由于我对JVM的直接经验有限,并不是很远),只有Erlang实际上在JVM上获得了"正确"的进程隔离.谷歌先生可以提供一些关于Fox和Candea(?)在使用"微重启"技术("恢复导向计算")的研究系统上的研究结果的一些提示.一位Erlang开发人员阅读了该研究并说了几件事:
Rum*_*ilz 14
对我来说,热代码交换整个Erlang集群而不停机(例如make:all([netload]:)是Erlang杀手功能之一.
但是让我们改回你的问题:akka对Erlang没有什么影响?当然,您可以向Java添加许多扩展和库(scala,akka,spring,osgi,...)以尝试接近Erlang.但重点在哪里?总而言之,所有这些扩展都比学习20多年来已经证明的简单Erlang语言复杂得多,它可以提供顶级可扩展性,零停机时间.
Erlang 可能更适合更大的分布式系统(遵循 vjache 的回答),但对于普通服务器,当您只想使用多个 CPU 的全部功能时,Akka 是不错的选择——提供良好的抽象、性能和与 Java 生态系统的集成。