不同的 Scala Actor 实现概述

Posted

技术标签:

【中文标题】不同的 Scala Actor 实现概述【英文标题】:Different Scala Actor Implementations Overview 【发布时间】:2011-02-23 18:30:34 【问题描述】:

我正在尝试找到“正确”的演员实现。我意识到有一堆,选择一个有点令人困惑。就我个人而言,我对远程演员特别感兴趣,但我想完整的概述会对许多其他人有所帮助。这是一个非常笼统的问题,因此请随意回答您所了解的实现。

我知道以下 Scala Actor 实现 (SAI)。请补充缺少的。

Scala 2.7(区别于) Scala 2.8 阿卡 (http://www.akkasource.org/) 电梯 (http://liftweb.net/)

Scalaz (http://code.google.com/p/scalaz/)


这些 SAI(轻量级与“重型”企业框架)的目标用例是什么?

他们支持远程参与者吗?远程参与者在 SAI 中有哪些缺点? 他们的表现如何? 社区的活跃度如何? 他们上手的难易程度如何?文档有多好? 它们的扩展有多容易? 它们有多稳定?哪些项目正在使用它们? 它们有什么缺点? 他们的设计原则是什么? 它们是基于线程还是基于事件(接收/反应)或两者兼而有之? 嵌套接收 热交换 Actor 的消息循环

【问题讨论】:

***.com/questions/3357332/…一些有用的答案 【参考方案1】:

截至Scala 2.10,scala actor 现在已弃用,Akka Actors 现在是标准分发的一部分

【讨论】:

【参考方案2】:

这是我目前看到的最全面的比较:

http://doc.akka.io/docs/misc/Comparison_between_4_actor_frameworks.pdf 通过http://klangism.tumblr.com/post/2497057136/all-actors-in-scala-compared

【讨论】:

@Frank :您的链接也不再可用。【参考方案3】:

我意识到 akka 强制执行穷举匹配。因此,即使在技术上接收期望一个偏函数,该函数也不能是偏函数。这意味着您必须立即处理每条消息。

【讨论】:

【参考方案4】:

Scala 2.7.7。与The Scala 2.8.0 RC3 distribution之后的2.8相比:

New Reactors 提供了更轻量级、纯基于事件的 Actor,以及可选的隐式发送者标识。添加了对具有守护程序样式语义的参与者的支持。 Actor 可以配置为使用高效的 JSR166y fork/join 池,从而显着提高 1.6 JVM 的性能。调度程序现在可插入且更易于自定义。

还有Haller的设计文档:Scala Actors: Unifying Thread-based and Event-based Programming

【讨论】:

【参考方案5】:

据我所知,只有 Scala 和 Akka 支持远程 Actor。

Akka 由可扩展的解决方案支持,该解决方案为 akka 提供商业支持和插件。 Akka 似乎是一个重量级的解决方案,其目标是与现有框架(camel、AMQP、JTA、Comet、Spring、Redis)以及另外的 STM 和持久性集成。

与 Scala 相比,Akka 不支持嵌套接收,但支持热交换 Actor 消息循环,并且同时具有基于线程和基于事件的 Actor,以及所谓的“基于事件的单线程”。

【讨论】:

以上是关于不同的 Scala Actor 实现概述的主要内容,如果未能解决你的问题,请参考以下文章

Scala笔记整理:Actor和AKKA

Scala 中的多个 Actor 实现有何不同?

scala学习笔记-Actor(19)

Scala框架Akka学习

《Scala 语言》Scala 中的 Actor 编程

Scala的actor