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