数据流编程与 Actor 模型

Posted

技术标签:

【中文标题】数据流编程与 Actor 模型【英文标题】:Dataflow programming vs Actor model 【发布时间】:2013-09-18 09:09:31 【问题描述】:

如何描述“数据流编程”和“Actor 模型”之间的区别?据我了解,它们并非无关,但又不相同。 DF是不是一个更广泛的概念,主要是区别于Control Flow模型,而Actor模型是DF的更精细和理论上的继承者?

【问题讨论】:

【参考方案1】: 数据流是确定性的,允许并行。 Actor 是不确定的,允许并发。

【讨论】:

我没有这样想。你能详细说明一下吗? '是确定性的' - 这是否意味着 DF 图是硬编码的,因此对于相同的输入我们得到相同的结果;而 Actor 模型允许动态图重新配置,因此它是不确定的(至少可能是这样),对吧?但我看不出并行与并发以及确定性与非确定性之间的联系...... 似乎这里有一个解释:***.com/questions/8582580/… 适合我。顺便说一句,您能否推荐一本 CS 文献,其中将描述您提供的区别? 关于声明式/数据流并发的最佳书籍是 Concepts, Techniques, and Models of Computer Programming,作者是 Peter Van Roy 和 Seif Haridi。它很好地解释了基础知识以及它与逻辑、FP 和命令式风格的关系,涵盖了参与者、共享状态并发等等。强烈推荐。 确定性数据流还允许并发sites.uclouvain.be/blog-ingi/2011/12/…。数据流也不一定是确定性的。 如果我在数据流中间的某处放置一个随机数生成器,那么确定性算法又会怎样呢? ;-)【参考方案2】:

DF 更宽。一个 DF 节点可能有多个输入端口,并在设置所有输入时触发。 Actor 是具有单个输入端口的 DF 节点。彩色 Petri 网甚至更宽,允许从一个地方馈送多个转换,但很难实现。

可以在Dataflow4Java 找到 Java 中的 DF 实现。

【讨论】:

以上是关于数据流编程与 Actor 模型的主要内容,如果未能解决你的问题,请参考以下文章

Actor模型及原理

数据流编程术语词典

Erlang VS Akka- Actor模型介绍

Actor模型

分布式高并发下Actor模型

GO常用并发模式