リムナンテスは愉快な気分

徒然なるままに、言語、数学、音楽、プログラミング、時々人生についての記事を書きます

「分散システム 原理とパラダイム 第2版」第4章解答

英語版の解答の翻訳

ソース:https://www.distributed-systems.net/my-data/ds2/ds-solutions.pdf

google翻訳そのままの箇所は訳がクソです。あしからず。

 

第4章

 

1. Q:マニラリングされたプロトコルでは、各層に独自のヘッダーがあります。確かに、各メッセージの前に単一のヘッダーを置いて、これらの別々のヘッダーよりも完全に制御する方がよいでしょう。なぜやっていないの?

A:各レイヤーは他のレイヤーから独立していなければなりません。 layerk + 1downtolayerkから渡されたデータは、ヘッダーとデータの両方を含みますが、layerkcannottellはどちらですか。すべてのレイヤーが読み書きできる単一の大きなヘッダーを持つと、この透明性が破壊され、他のレイヤーに見える1つのレイヤーのプロトコルが変更されます。これは望ましくない。


2. Q:分散型アプリケーションの構築には不適切なトランスポートレベルの通信サービスがしばしばあります。

A:アプリケーション開発者は、独自のソリューションにつながる通信の実装に重要な注意を払う必要があります。その効果は、たとえば、ソケットの上に直接構築された分散アプリケーションは、ポートとは異なり、他のアプリケーションと相互運用することです。

 

3. Q:信頼できるマルチキャストサービスは、送信者が受信者の集まりに確実にメッセージを渡すことを可能にする。

A:原則として、信頼性の高いマルチキャストサービスは、トランスポート層ネットワーク層の一部である可能性があります。たとえば、信頼性の低いIPマルチキャストサービスが実装されているとしますそのようなサービスは現在入手不可能であるため、一般にトランスポートレベルのサービスを使用して実装され、ミドルウェアに自動的に配置されます。どのようにスケーラビリティを考慮すると、アプリケーションの要件が考慮される場合にのみ、信頼性を保証できることが分かりました。これは、より一般的ではない層で、そのようなサービスを実装するための強力な証拠です。

 

4. Q:twitteregerのパラメータを持つプロシージャを考えてみましょう。手続きは各パラメータに1を追加します。次に、同じ変数の変数、たとえばasincr(i、i)で呼び出されたとします。最初は0であれば、参照による呼び出しが使用されている場合、後でどのような値になりますか?もしコピー/リストアが使用されていたらどうすればいいですか?

A:参照による呼び出しが使用されていれば、ポインタは2回インクリメントされます。結果は2になります。ただし、コピー/リストアでは、値は2回、最初の値は0になります。両方ともインクリメントされるので、両方ともnowbe1です。両方ともコピーバックされ、2回目のコピーオーバラップは1回目のコピーオーバーライトです。 Ånal値は2.5ではなく1になります。

 

5. Q:レコードのáeld(Cでastructと呼ばれる)がいくつかの選択肢を持つことができるunionというコンストラクションです。実行時には、そこにあるものを知るための方法があります。 Cのこの機能は、リモートプロシージャコールに影響を与えませんか?あなたの答えを説明してください:

A:ランタイムシステムは、どのタイプの値がåeldにあるかを知ることができない場合、それを正しくマーシャリングすることはできません。RPCシステムでは共用体は許容できません。タグはユーザーの制御下にあってはいけません。

 

6. Q:RPCシステムでパラメータ変換を処理する1つの方法は、各マシンにネイティブ表現でパラメータを送信し、必要に応じて変換を行うもう1つのパラメータを送信することです。ネイティブシステムは、最初のバイトにコードで示すことができます。しかし、最初のバイトに最初のバイトを配置することが問題になっているので、これは実際に動作しますか?

A:最初に、あるコンピュータがバイト0を送信すると、それは常に0バイトで到着します。宛先コンピュータは単にバイト0を使用して(バイト命令を使用して)コードがそこに入ります。これが下位バイトであるか上位バイトであるかは関係ありません。代替スキームは、årstワードのすべてのバイトにコードを入れることです。そして、どのバイトが調べられても、コードはそこにあります。

 

7. Q:クライアントがサーバーに対して非同期RPCを呼び出した後、サーバーが別の非同期RPCを使用して結果を返すまで待機するとします。 thisapproachは、クライアントに通常のRPCを実行させるのと同じですか?非同期RPCを非同期RPCで使用した場合はどうなりますか?

A:いいえ、これは同じではありません。非同期RPCは、呼び出し元に確認応答を返します。つまり、クライアントによるårst呼び出しの後に、追加のメッセージがネットワーク経由で送信されます。同様に、サーバは、その応答がクライアントに配信されたことを確認する。信頼性の高い通信が保証されていれば、2つの非同期RPCも同じである可能性があります。これは一般的にcase.8ではありません。

 

8. Q:DCEのようにサーバーをデーモンに登録させるのではなく、常に同じエンドポイントを割り当てることもできます。そのエンドポイントは、サーバーのアドレス空間内のオブジェクトへの参照で使用できます。このスキームの主な欠点は何ですか?

A:主な欠点は、オブジェクトをサーバーに動的に割り当てることがはるかに難しくなることです。さらに、多くのエンドポイントは、単なる(すなわち、デーモン用の)エンドポイントではなく、元に戻す必要があります。おそらく多数のサーバーを持つマシンの場合、エンドポイントの静的割り当ては良い考えではありません。

 

9. Q:静的なものと動的なものの間にも違いはありますか?

A:そうです。同じ理由から、遠隔のオブジェクトの呼び出しには便利です。それは、よりシンプルなものです。しかし、その欠点は、 RPCはårstplace.10で導入されました。

 

10. Q:クライアントとサーバーの間のコネクションレス通信が、sockets.

A使用時にどのように進行するかを記述します。クライアントとサーバーの両方がソケットを作成しますが、サーバーのみがソケットをローカルエンドポイントにバインドします。その後、サーバーは、任意のクライアントからの着信データを待つブロッキング・リードコールを実行できます。同様に、ソケットを作成した後、クライアントはサーバーにデータを書き込むブロッキング呼び出しを行います。接続を閉じる必要はありません。

 

11. Q:プリミティブの間の違いを説明してください.MPI.

A:プリミティブ・マニフェスは、呼び出し元が送信されるメッセージを含むバッファ全体を通過するバッファリングされた通信をローカルのMPIruntimeシステムに伝えます。呼び出しが完了すると、メッセージは転送されたか、またはローカルバッファにコピーされました。これとは対照的に、呼び出し元はメッセージへのポインタのみをローカルMPIランタイムシステムに渡し、その後即座に処理を継続します。呼び出し元は、コピーまたは転送されるまで、指示されているメッセージを上書きしないようにします。

 

12. Q:非同期受信プリミティブのみを含む、一時的な非同期通信プリミティブを使用できるとします。

A:非同期通信を使用してサーバーにメッセージを送信することです。ローカルオペレーティングシステムがローカルバッファに入ってくるメッセージをローカルバッファに格納するとすれば、別の実装では、オペレーティングシステムからメッセージが到着したという信号を受信するまでそのブロックをブロックすることである。呼び出し元は非同期受信を行います。

 

13. Q:過渡的な同期通信プリミティブのみを使用できるとします。 あなたはtransientasyn-chronouscommunicationのためのプリミティブをどのように実装しますか?
A:この状況は実際にはより単純です。アシスタント送信は、呼び出し側がメッセージを実際のメッセージ転送を処理するプロセスと共有するバッファに追加することによって実装されます。クライアントがメッセージをバッファに追加するたびに、 続いてバッファからメッセージを除去し、元の送信プリミティブへのブロッキング呼び出しを使用してその宛先を送信する。受信機は、アプリケーションによって着信メッセージをチェックできるバッファを提供することによって同様に実現される。

 

14. Q:RPCを使用して永続的な非同期通信を実装するのは難しいですか?

A:はい、ただし、ホップツーホップベースでのみ、キューを管理するプロセスがRPCを使用してメッセージを次のキューマネージャに渡します。事実、キューマネージャーによって別のキューマネージャーに提供されるサービスは、メッセージの記憶域です。呼び出しキューマネージャーは、リモートキューのインターフェイスのプロキシーインプリメンテーションを提供され、各操作の成功または失敗を示す状況を受け取ります。このようにして、キュー管理者はキューのみを参照し、それ以上の通信は表示されません。

 

15. Q:テキストでは、入力キューからfetchmessagesへのプロセスを自動的に開始するために、入力キューを監視するデーモンがよく使用されると述べました。大金を使用しない代替的な実装を提供してください.

A:単純な仕組みは、受信者側のプロセスが、そのプロセスがメッセージを自分のキューに入れるたびに、着信するメッセージをチェックすることです。

 

16. Q:IBM WebSphereと他の多くのメッセージキューイングシステムのルーティングテーブルは手動で構成されています。この自動化を行う簡単な方法を説明します。

A:最も単純な実装は、キューイングネットワークのトポロジが維持される。このコンポーネントは、既知のルーティングアルゴリズムを使用してキューマネージャのペア間のすべての最適なルートを単純に計算し、各キューマネージャのルーティングテーブルを生成します。これらのテーブルは、各マネージャによって個別にダウンロードできます。キューマネージャーを分散させることです。各キューマネージャーは、ネットワークトポロジーを見直し、他のマネージャーへの最も近いルートを計算します。このようなソリューションは、コンピュータネットワークに広く適用されています。それらをメッセージキューネットワークに適用するための原則の反対はありません。

 

17. Q:永続的な通信では、受信者は一般に、受信者が実行していないときにメッセージを格納できるローカルバッファを持っています。 そのようなバッファを作成するには、そのサイズを指定する必要があります。 これがなぜ望ましいか、またサイズの指定に対するものではないのかどうかを確認してください。
A:ユーザーがサイズを指定すると、実装が容易になります。システムは、指定されたサイズのバッファを作成して完了します。 バッファの管理が容易になります。バッファが空になった場合、メッセージが失われる可能性があります。 通信システムは、デフォルトのサイズから始めて、必要に応じてバッファを増やす(または縮小する)バッファサイズを管理します。 この方法は、部屋の不足のためにメッセージを破棄する必要性を減らすが、システムのより多くの作業を必要とする。

 

18.Q:過渡的な同期通信に固有のスケーラビリティの問題があり、その解決方法について説明してください.

A:問題は地理的なスケーラビリティが限られていることです。同期通信では、メッセージが受信されるまでブロックされているため、受取人は正しくない。問題を解決する唯一の方法は、呼び出しアプリケーションを設計して、通信が行われている間に行う他の有用な作業があり、効果的に非同期通信の一形態を確立することです。

 

19. Q:マルチキャストディスクリートデータストリームにも役立つ例を挙げます.

A:Webサービスやソフトウェア配布のミラーサイトを更新する場合など、大規模なデータを多くのユーザに渡す。

 

20. Q:センサーネットワークでは、測定された温度はセンサーによってタイムタンピングされませんが、ただちにオペレーターに送信されるとします。エンドツーエンドの最大遅延を保証するのがよいでしょうか?

A:オペレータは、測定が行われたときにもそれを知る必要がある。この場合、測定が受信されたときにタイムスタンプを添付することができますが、これはエンドツーエンドの遅延を最小限に抑えるためにも必要です。

 

21. Q:コンピュータコレクションが(論理的または物理的な)リングで構成されている場合、エンドツーエンドの最大遅延をどのように保証できますか?

A:トークンをリングに循環させます。トークンを保持している場合にのみ、各コンピュータはリングを介して(トークンと同じ方向に)データを送信することができます。さらに、nocomputerはT秒以上トークンを保持することができます。効果的には、2つの隣接するコンピュータ間の通信が限定されていると仮定すると、トークンの最大循環時間は送信される各パケットの最大エンドツーエンド遅延に相当する。

 

22. Q:コンピュータコレクションが(論理的または物理的な)リングで構成されている場合、エンドツーエンドの最小遅延をどのように保証できますか?

A:不思議なことに、これは最大遅延を保証するよりはるかに困難です。原則的には、経過時間の前に受信データがないはずです。唯一の解決策は、必要に応じてパケットをバッファリングすることです。バッファリングは送信者、受信者、またはその中間のどこか、たとえば中間局で行うことができます。その時点で、データ配信を遅らせる可能性のある予期せぬ障害が存在するため、受信側ではデータをバッファに格納しておく必要があります。受信側では、単純にバッファからデータを取り出し、簡単なタイミングメカニズムを使用してアプリケーションに渡すだけです。欠点は、十分な緩衝能力が提供される必要があることである

 

23. Q:マルチキャストは技術的に実現可能ですが、インターネットに展開するサポートはほとんどありません。この問題に対する答えは、現実世界のビジネスモデルに求められています。誰も本当にマルチキャスティングの方法を知っているわけではありません。

A:問題は主にISPによって引き起こされます。なぜなら、帯域幅を節約する理由がなく(顧客がとにかく支払っている)理由がないからです。ただし、以下のような事件は変更される可能性があります。インターネット放送サービスは、様々なISPによって約束された一定のサービス品質を支払う。これらのISPのそれぞれは、これらのQoS要件を満たしていない場合、収入が低下することがあります。この時点で、マルチキャスティングアステカンの導入を開始するインセンティブは、より良い(保証された)サービスを提供することになりました。

 

24. Q:通常、アプリケーションレベルのマルチキャストツリーは、遅延またはホップ数の点で測定されるストレッチに合わせて最適化されます。例:このメトリックは非常に貧弱なツリーにつながる可能性があります。

A.基本的な前提は、通信遅延があらかじめ優位なパフォーマンスであるということです。しかし、例えばビデオ放送の場合には、それは利用可能なものである。その場合、我々は、その最大値(帯域幅の点で測定)が25であるツリーを作成することになります。

 

25. Q:非構造化ピアツーピアシステムでファイルを検索するとき、自分と同じÅlesを持つノードに検索を制限することができます。 Exploshowhowossingは、これらのノードに役立つことができます。

A:アイデアは非常に簡単です。つまり、ゴシッピングの間にノードがメンバーシップ情報を交換すると、すべてのノードが最終的にシステム内の他のすべてのノードについて知ることになります。 新しいノードが発見されるたびに、それは意味の近接性に関して評価することができます(例えば、共通点の数を数えるなど)。 次に、検索クエリを提出するために、意味的に最も近いノードが選択される。