首页 文章

akka与Erlang相比如何? [关闭]

提问于
浏览
94

我最近一直在关注akka,这令人印象深刻 . 看起来它具有erlang的大部分杀手级功能 - 位置透明度,监督层次结构等等 . 有没有任何功能erlang有akka没有?

5 回答

  • 71

    免责声明:我是Akka的PO

    • Erlang执行copy-on-send - Akka使用共享内存(不可变对象)进行VM内发送

    • Erlang执行每个进程GC - Akka使用JVM GC

    • Erlang有OTP - Akka与整个Java生态系统(Apache Camel,JAX-RS等)集成

    • Erlang为您完成流程调度 - Akka允许您使用具有无限配置机会的许多不同Dispatchers

    • Erlang重新加载热代码 - Akka可以支持它,但由于JVM类加载,它的灵活性较低

    那些是我头脑中的那些 .

    另一方面,使用Akka意味着您可以使用Scala,Java,Groovy或JRuby来编写应用程序 .

  • 4

    在Erlang过程中,保证大约每1000次减少一次 . 在这样一个天真的框架中,Scala / Akka代理拥有一个调度程序,直到它完成接收工作 . 将军 . 游戏结束 . Hasta la vista :)人们,不要在伪技术上浪费你的时间 . 我震惊的是,这里的人比较Scala和Erlang .

    还有许多其他所谓的“杀手特征”,但这里是我的建议,不要在功能方面思考,考虑能够使特定语言的习语 . Scala窃取“最佳功能”,Erlang使用正确的习惯用来实现您可靠地构建系统,使用高级语言来驱动这些正确的习语 . 当你学习Erlang时,你正在重建你的思想,思考分布式可靠系统的方式,Erlang会教你并升级你 . Scala只是另一种命令(哦,抱歉,多范式,有趣的词)语言试图窃取其他语言的好功能 .

  • 37

    几乎没有人提到过程隔离 . 如果没有"your thread cannot mess with my junk"的保证,分布式系统就更难以推理 . (对于Erlang的流程,他们已经足够困难了 . )

    AFAIK(由于我对JVM的直接经验有限,并不是很远),只有Erlang实际上在JVM上获得了“正确”的进程隔离 . 谷歌先生可以提供一些关于Fox和Candea(?)在使用“微重启”技术(“恢复导向计算”)的研究系统上的研究结果的一些提示 . 一位Erlang开发人员阅读了该研究并说了几件事:

    • 欢迎来到俱乐部,你花了这么长时间?

    • 尽管如此,JVM非常难以加入 . :-)

  • 119

    对我来说,在没有停机的情况下交换整个Erlang集群的热代码(例如: make:all([netload] )是Erlang杀手功能之一 .

    但是让我们改回你的问题:akka对Erlang没有什么影响?当然,您可以向Java添加许多扩展和库(scala,akka,spring,osgi,...)以尝试接近Erlang . 但重点在哪里?总而言之,所有这些扩展都比学习20多年来已经证明的简单Erlang语言复杂得多,它可以提供顶级可扩展性,零停机时间 .

  • 14

    对于更大的分布式系统,Erlang可能更好(遵循vjache的答案)但是对于普通服务器而言,当您只想使用多CPU的全部功能时,Akka是不错的选择 - 提供良好的抽象,性能和与Java生态系统的集成 .

相关问题