2009-06-07 5 views

答えて

11

RPCは一般的に、他のプロセス間通信手段よりも高いレベルの抽象化を提供します。これはおそらく、より低レベルのプリミティブよりも使いやすくなります。この抽象化では、マーシャリング/アンマーシャリングのためにパフォーマンスが低下する可能性があり、シンプルなシナリオでは複雑な設定を処理する必要があります。

これは、パフォーマンスと実装のいくつかの異なる尺度に関するメッセージの受け渡し、RPC、および分散共有メモリの違いについて説明しているJackie Silcock(thesis(pdf))に興味があります。論文に基づいて論文を読むこともできます:Message Passing, Remote Procedure Calls and Distributed Shared Memory as Communication Paradigms for Distributed Systems(pdf)

+0

リンクが切れているようです。あなたはその文書をどこに見つけるのか知っていますか? – SteinNorheim

+1

@ norheim.se - TRは消えたようですが、元の論文とそれに基づいた論文を追跡しました。うまくいけば、これらのリンクはもう少し長く続くでしょう。 – tvanfosson

+0

素晴らしい!どうもありがとう! +1 – SteinNorheim

22

RPC対メッセージングについてお話ししていますか? (通常)非同期メッセージングの場合と同じですか?それがあなたの話であるなら、メッセージングは​​複雑さと余分なインフラを犠牲にしてより堅牢になる傾向があります。

最も単純な例は、RPC-> RPC-> RPCのシナリオがあり、3つのプロセス/マシンの深い呼び出しスタックを持つことになります。これらのプロセス/マシンのいずれかが処理中に失敗し、スタック全体が巻き戻されます。

メッセージングを行っていた場合、プロセス間の実際の接続はずっと少なくなります。あなたはメッセージを手渡し、あなたはあなたのところにいる。プロセスの1つが失敗した場合、通常、メッセージは新しいプロセスがフェッチするのを待っているキューにまだ残っているため、途中で再開される可能性が高くなります。全体的な時間は長くなるかもしれませんが、はるかに堅牢なシステムです。

これは万能薬ではありませんが、非同期アーキテクチャの落とし穴がたくさんありますが、この堅牢性はRPCシステムとメッセージングシステムの主要な違いです。

関連する問題