卡恩过程网络与演员模型的区别

8
我想知道Kahn Process Network和Actor Model之间的实际区别。事实上,如果我查看定义,它们都是模型,在这些模型中,计算实体(在两种情况下都称为Actor)通过无限缓冲区交换消息。此外,在两种情况下,这些消息都是异步发送的,因为过程总是可以发送消息。它不需要等待接收者准备好接收。
因此,我的问题是,是否有任何实际区别?
非常感谢!
1个回答

5
Kahn过程网络保证是确定性的。所有进程之间的FIFO连接在执行过程中事先已知,且不进行动态更改。相比之下,对于Actor模型(引用自维基百科):
“响应收到的消息后,一个actor可以做出本地决策,创建更多的actors,发送更多的消息,并确定如何响应接收到的下一条消息。”
因此,Actor模型无法保证确定性。引用自维基百科:
“演员模型具有无限的非确定性,这被Will Clinger使用域论在数学模型中捕获。”
另一个重要区别是通信方式。
在KPN的情况下-为了保持确定性,所有通信都通过FIFO通道进行。但是在Actor模型中不存在这种要求。引用自维基百科:
“[在KPN中没有]对消息到达顺序的要求[....]如果需要输出消息排序,则可以将其建模为提供此功能的队列Actor。这样的队列Actor会将到达的消息排队,以便按FIFO顺序检索。因此,如果Actor X向Actor Y发送消息M1,随后X向Y发送另一条消息M2,则不存在M1必须在M2之前到达Y的要求。”
在这方面,Actor模型反映了不保证包必须按发送顺序接收的分组交换系统。不提供交付顺序保证允许分组交换缓冲数据包,使用多个路径发送数据包,重新发送损坏的数据包以及提供其他优化。
从上述讨论中可以看出,KPN是一个更受限制的场景,可以通过添加额外的限制来使用Actor模型进行建模。

尽管KPN不如actor表达能力强,但它们仍然是图灵完备的。 - optevo
1
我使用Haskell和KPN实现了一个早期的共识区块链,链接在这里:https://github.com/dolla-consortium/consensus。 :-) - Nicolas Henin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接