我一直在学习Erlang,但我也一直盯着其他技术,比如Scala.有谁知道Scala的多节点性能与Erlang相比如何?
[免责声明:我在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
希望很快能在邮件列表上见到您!
Scala受Java线程相当重的限制.它不会像Erlang那样按线程数进行扩展.
说白了,忘记在短期内在Scala中运行成千上万的演员.编辑:请参阅下面的评论相反的经验.在我的辩护中,我的意思是成千上万的线程成千上万的演员.
但是,演员不是基础语言的一部分.它们只是一个图书馆,由于Scala的内在优势,它们看起来就像是语言的一部分.这一点的重要性在于演员是可以替代的.Scala有两个重要的替代actor库.最着名的一个是Akka,其他人已经谈过,我只能认为值得认真看待.另一个是Lift的演员,这是另一种方式,通过提供一个更简单(和可靠)的演员实现,满足Lift自己的需求,并没有试图超越它.
另一个有希望的发展是为Scala 2.8增加了分隔的延续.定界延续虽然难以使用,但可以实现非常快速的actor.为了清楚起见,很难用分隔的连续编写库(例如actor),但是这样的库与其他actor库没有任何不同.
Scala并非设计为一致的平台(如erlang),因此默认情况下不包含强大的分发功能.scala actor库更像是erlang的语言改装过程模型.有些库提供类似OTP的功能和集群,即Akka.