分散システムのモデル
従来、モノリシック システムを複数のコンピューターで実行することは、システムを個別のクライアント コンポーネントとサーバー コンポーネントに分割することを意味します。 このようなシステムでは、クライアント コンポーネントはユーザー インターフェイスを処理し、サーバーはデータベース アクセス、印刷などのバックエンド処理を提供しました。 コンピューターが急増し、コストが低下し、帯域幅が増えるネットワークによって接続されるようになったので、ソフトウェア システムを複数のコンポーネントに分割する方が便利になり、各コンポーネントが異なるコンピューター上で実行され、特殊な機能が実行されました。 このアプローチでは、開発、管理、管理が簡素化され、多くの場合、1 台のコンピューターの障害によってシステム全体が無効になるわけではないため、パフォーマンスと堅牢性が向上しました。
多くの場合、システムは、次の図に示すように、分散システムが個々のノードで構成されている場合でも、必要な操作を実行する不透明なクラウドとしてクライアントに表示されます。
コンピューティング操作はクライアントの代わりに呼び出されるため、クラウドの不透明度は維持されます。 そのため、クライアントはクラウド内のコンピューター ( ノード) を見つけて、特定の操作を要求できます。操作を実行する場合、そのコンピューターは、追加の手順や実行されたコンピューターをクライアントに公開することなく、クラウド内の他のコンピューターで機能を呼び出すことができます。
このパラダイムを使用すると、分散型のクラウドのようなシステムの仕組みを、多数の個々のパケット交換、または個々のノード間の会話に分割できます。
従来のクライアント/サーバー システムには、固定の役割と責任を持つ 2 つのノードがあります。 最新の分散システムには複数のノードを含めることができます。多くの場合、それらの役割は動的です。 ある会話ではノードをクライアントにすることができますが、別の会話ではノードをサーバーにすることができます。 多くの場合、公開される機能の最終的なコンシューマーは、ユーザーがキーボードに座って出力を見ているクライアントです。 それ以外の場合、分散システムは無人で機能し、バックグラウンド操作を実行します。
分散システムには、特定のパケット交換ごとに専用のクライアントとサーバーがない場合がありますが、呼び出し元 (またはイニシエーターのいずれか、多くの場合はクライアントと呼ばれます) があることを覚えておくことが重要です。 呼び出しの受信者 (多くの場合、サーバーと呼ばれます) もあります。 分散システムの要求/応答形式で双方向パケット交換を行う必要はありません。多くの場合、メッセージは一方向にのみ送信されます。