我一直在学习Erlang,但我也一直盯着其他技术,比如Scala。有谁知道Scala的多节点性能与Erlang相比如何?
答案 0 :(得分:14)
[免责声明:我在Akka团队中]
我真的很鼓励你好好看看Scala框架Akka
我们真的努力提供一个水平和垂直扩展的平台,并且包含无法启用自我修复系统。
Features: Actors for concurrency Software Transactional Memory (STM) for concurrent transactional composition Supervisor hierarchies for fault-tolerance Cluster Membership Java API with ActiveObjects (Java Actors sort of) Distributed persistence through MongoDB, Cassandra or Redis REST support through exposing Actors as JAX-RS endpoints + (Comet/Ajax Push) + much much more
希望尽快在邮件列表上见到你!
答案 1 :(得分:7)
Scala受Java线程相当大的限制。它不会像Erlang一样扩展线程数。
说实话,忘记在短期内在Scala中运行成千上万的演员。 编辑:请参阅下面的评论以获得相反的体验。在我的辩护中,我的意思是成千上万的线程成千上万的演员。
但是,演员不是基础语言的一部分。它们只是一个图书馆,由于Scala的内在优势,它们看起来就像是语言的一部分。这一点的重要性在于演员是可替换的。 Scala有两个重要的替代actor库。最着名的一个是Akka,其他人已经谈过,我只能认为值得认真看待。另一个是Lift的演员,通过提供一个更简单(和可靠)的演员实现来满足Lift自己的需求,并且不会试图超越它。
另一个有希望的发展是为Scala 2.8增加了分隔的延续。定界延续虽然难以使用,但可以实现非常快速的actor。为了清楚起见,很难用分隔的连续编写库(例如actor),但是这样的库与其他的actor库没有任何不同。
答案 2 :(得分:5)
Scala并非设计为一致的平台(如erlang),因此默认情况下不包含强大的分发功能。 scala actor库更像是erlang的语言改装过程模型。有些库提供类似OTP的功能和集群,即Akka。