メッセージパッシングに関するRPCの欠点は何ですか?
2 に答える
RPCとメッセージングについて話しているのですか?(通常)非同期メッセージングのように?それがあなたが話していることであるならば、メッセージングは複雑さと余分なインフラストラクチャを犠牲にしてより堅牢になる傾向があります。
最も単純な例は、RPC-> RPC-> RPCのシナリオがある場合、3つのプロセス/マシンの深さのコールスタックを持つことになります。これらのプロセス/マシンのいずれかが処理中に失敗し、スタック全体が巻き戻される可能性があります。
メッセージングを行っていた場合、プロセス間の実際の接続ははるかに少なくなります。あなたはメッセージを手渡し、そしてあなたはあなたの道を進んでいます。これで、プロセスの1つが失敗した場合、中断したところから再開される可能性が高くなります。これは、通常、メッセージがキューに残っており、新しいプロセスがメッセージをフェッチするのを待っているためです。全体の時間は長くなる可能性がありますが、はるかに堅牢なシステムです。
万能薬ではないことに注意してください。非同期アーキテクチャには多くの落とし穴がありますが、この堅牢性はRPCシステムとメッセージングシステムの主な違いです。
原則として、RPCは、プロセス間通信の他の手段よりも高いレベルの抽象化を提供します。これにより、おそらく、低レベルのプリミティブよりも使いやすくなります。この抽象化では、マーシャリング/アンマーシャリングのためにパフォーマンスにいくらかのペナルティを支払う可能性があり、単純なシナリオの構成の複雑さの増加に対処する必要がある場合があります。
パフォーマンスと実装のいくつかの異なる測定値に関して、メッセージパッシング、RPC、および分散共有メモリの違いについて説明しているJackie Silcockによるこの論文(pdf)に興味があるかもしれません。論文に基づいた論文の1つを読むこともできます:メッセージパッシング、リモートプロシージャコール、分散システムの通信パラダイムとしての分散共有メモリ(pdf)