22

RPC 在消息传递方面的缺点是什么?

4

2 回答 2

29

您是在谈论 RPC 与消息传递吗?就像(通常)异步消息传递一样?如果这就是您所说的,那么消息传递往往会以复杂性和额外基础架构为代价变得更加健壮。

最简单的例子是,如果你有一个 RPC->RPC->RPC 的场景,你最终会得到一个深度为 3 个进程/机器的调用堆栈。这些进程/机器中的任何一个都可能在处理过程中发生故障,并且整个堆栈都会展开。

如果您正在发送消息,则进程之间的实际连接性要少得多。你把消息传递出去,你就在路上。现在,如果其中一个进程失败,它很有可能会在它停止的地方重新启动,因为通常情况下,消息仍然位于某个队列中,等待新进程获取它。总时间可能会更长,但它是一个更强大的系统。

请注意,这不是万能药,异步架构存在很多缺陷,但这种健壮性是 RPC 和消息传递系统之间的主要区别。

于 2009-07-30T18:02:48.937 回答
19

作为一般规则,RPC 提供了比其他一些进程间通信方式更高的抽象级别。这可能使它比较低级别的原语更容易使用。对于这种抽象,您可能会因编组/解组而在性能上付出一些代价,并且可能必须为简单场景处理额外的配置复杂性。

您可能会对 Jackie Silcock 的这篇论文(pdf)感兴趣,该论文讨论了消息传递、RPC 和分布式共享内存之间在几种不同的性能和实现度量方面的差异。您还可以阅读基于论文的论文之一:Message Passing, Remote Procedure Calls and Distributed Shared Memory as Communication Paradigms for Distributed Systems (pdf)

于 2009-06-07T18:55:39.623 回答