我想知道Kahn流程网络和演员模型之间的实际差异是什么。实际上,如果我抬头看定义,它们都是其中通过无界缓冲区交换消息的计算实体(两个案例中的演员...)的模型。此外,在这两种情况下,由于过程总是可以发送消息,因此异步发送这些消息。它不需要等待收件人准备好接收。

因此我的问题,有什么实际差异吗?

非常感谢!

有帮助吗?

解决方案

Kahn Process Network保证是确定性的。进程之间的所有FIFO连接都是已知的,并且在执行过程中它们不会动态地改变。相比之下,在演员模型(引用维基百科)的情况下:

响应它收到的消息,演员可以做出本地决策,创建更多的演员,发送更多消息,并确定如何响应接收的下一个消息。

演员模型,因此不能保证确定性。引用Wikipeda:

actor模型特征在数学模型中捕获的是不受染色的非eterminism,它将使用域理论在数学模型中捕获。

另一个重要区别是通信如何进行

在KPN的情况下 - 为了保留确定性,所有通信都是通过FIFO渠道。但是在演员模型的情况下没有这样的要求。引用维基百科:

[在kpn中,如果需要输出消息排序,则无需对消息到达的顺序无需要求,那么它可以由提供此功能的队列Actor建模。这样的队列演员将队列到达的消息,以便可以以FIFO顺序检索它们。因此,如果演员X向演员Y发送消息M1,而后x向Y发送了另一个消息M2,则没有要求M1在M2之前到达Y.

在这方面,演员模型反射镜分组交换系统,不保证必须按顺序收到分组。没有提供交付顺序保证允许数据包切换到缓冲数据包,使用多个路径发送数据包,重新发送损坏的数据包,并提供其他优化。

从上面的讨论中非常清楚,KPN是一个更约束的场景,可以通过添加额外限制来使用actor模型进行建模。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top