Scala:你知道任何高级的演员文档/教程吗?

时间:2012-02-01 03:53:35

标签: scala concurrency actor akka

我已经和Scala合作了一段时间,我已经开始深入研究并发性了。凭借我对Java并发的了解,我已经实现了我必须做的简单事情,但我正在尝试更多地了解Actors世界。

问题是我找不到任何高级教程或文档而不是这个:

http://docs.scala-lang.org/overviews/core/actors.html(相当不错的BTW)

当然我已阅读API,但我想提供一些代码示例,良好做法,建议等。

注意:我在谈论有关主流文档未涵盖的内容的文档。我知道演员的核心概念。另外,我读过这些书:

Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition

Programming Scala: Scalability = Functional Programming + Objects

编辑:感谢您的所有答案。我知道关于演员的书,但我正在寻找免费的sutff。

3 个答案:

答案 0 :(得分:3)

我的出发点是阅读一些Erlang教程,例如Learn You Some Erlang for Great Good。 Erlang已经存在了一段时间,有很多教程,书籍和演示文稿。 Erlang的核心是actor模型,即在没有共享的actor之间传递消息(在Erlang中称为进程),因此这是一种让概念失效的好方法。

然后当您转向Scala语法时,请使用Akka,因为它的API与基本Scala actor的Erlang更接近。从根本上说,使用Akka的Scala中的演员非常简单。真正的挑战是采用一种设计,并根据没有共享数据的参与者重新设计它。 Scala有一种诱惑,就是只使用一些Java库和一些面向对象的设计,并最终得到与actor不完全兼容的东西。

我建议从一个演员的角度出发,挖出一个可行的设计,然后用Java类和面向对象的技术来增强它。例如,在我的第一个基于Akka的应用程序中,我使用普通的Java AMQP库来使用消息而不是Akka抽象,因为Java类很简单,而且我已经非常熟悉AMQP。

答案 1 :(得分:2)

还有this book。它写得很好,虽然当我读它时,它根本没有谈论Akka,这有点尴尬,因为Akka使用很多。事实上,如果Scala自己的演员和Akka的演员在不久的将来(对Akka的模特)有一些融合,我不会感到惊讶。

Actors in Scala

答案 2 :(得分:1)

Here是我编写的一个小代码示例,它解决了使用Akka actor的Project Euler问题之一。它使用类似于map / reduce操作的actor,其中worker正在并行处理数据并将其结果发送给收集器。整个过程是异步的,可以(假设)扩展到数千或数百万个节点。

代码已经经历了几次迭代,因为我已经学习了更多关于如何使用Actors的知识(我还在学习!),所以查看之前的版本可能会让你对我如何达到当前设计有所了解。