13

私は分散システムを研究していますが、RPCの部分に関しては、これら2つのセマンティクス(最大で1回と正確に1回)について聞いたことがあります。重複して実行したくない場合、インスタンスのデータベースで最大1回使用されることを理解しています。

最初の質問:

これはどのように達成されますか?サーバーは、リクエストを再度実行してはならないことをどのように認識しますか?重複している可能性がありますが、正当な要求でもある可能性があります。

2番目の質問は次のとおりです。

タイトルの2つのセマンティクスの違いは何ですか?私は読むことができます :)。せいぜい1回はまったく実行されない可能性があることを私は知っていますが、正確に1回は実行を保証しますか?

4

5 に答える 5

1

ヘスパーの答えを修正するには-

以前は、正確に 1 回 RPC を実現することはできませんでしたが、2015 年の研究論文 [1] で実現可能であることが証明されました。基本的に、RIFL パラダイムは、実行される RPC の 1 回の実行が永続的に保存されることの安全性を保証します。

[1]: リー、コリン、他。「大規模かつ低レイテンシーでの線形化可能性の実装。」オペレーティング システムの原則に関する第 25 回シンポジウムの議事録。ACM、2015

于 2016-12-13T06:31:25.720 に答える
0

バンプ、私もこれを勉強していて、これを見つけました。

少なくとも1回と最大1回?

例を見てみましょう: クライアントとサーバーが稼働している場合はロックを取得し、 クライアントが失敗した場合はクライアントがロック を
受け取ります 。once: クライアントは試行を続けます at-most-once: クライアントは例外を受け取ります 例外が発生 した場合、クライアントは何をしますか? アプリケーション固有のプロトコル ask サーバーを実装する必要があります。ロックはありますか? サーバーには、再起動後も状態を記憶するための計画が必要 です。たとえば、ロックをディスクに保存するなどです。 少なくとも 1 回 (絶対にあきらめなければ) クライアントは試行を続けます。サーバーはプロシージャを数回実行する場合があります












リクエストがべき等ではないが、すべてのリクエストをべき等にするのが難しい場合 、
サーバー
は 重複を処理するためにアプリケーションの状態を使用する必要 があります
。は正しい? RPC が使用される場所によって異なります。 単純なアプリケーション: せいぜい 1 回はクール (プロシージャ コールに似ている) より洗練されたアプリケーション: どちらの場合もアプリケーション レベルの計画が必要 明確ではない一度に有利になる => マシン障害の処理は RPC をプロシージャ コールとは異なるものにする









分散システムとパラダイム第 2 版から引用

于 2013-06-07T15:38:12.997 に答える