Distributed : 計算タスクに含まれるプロセス全体が分割され、複数の計算ノードに割り当てられます。各ノードは、処理の一部を実行するときに、グローバルに最適化された結果を達成するために必要なシステムのすべての情報にアクセスできません。複数のノードからの結果の集約は、通常、複数のノードに分散された計算の複数の反復を通じて、グローバルな最適な結果に向かって収束します。
良い例は、各ルーターが近隣ルーターと交換する情報のみを持つルーター システムです。当初、ネイバーはネットワーク システム全体の一部しか知りませんでした。ルーターがネイバーからより多くの情報を取得すると、新しい情報をシステム全体のビューに組み込み、そのビューをネイバーに広げます。これらの手順を複数回繰り返すことで、それぞれが個々のルーターによって個別に計算され、すべてのルーターはネットワーク システム全体の一貫したグローバル ビューに落ち着きます。
もう 1 つの例は、ブラウザが最初によく注文される商品のリストを取得する Web 注文システムです。ブラウザには、ユーザーの閲覧行動を追跡し、サーバーから商品リストの別のカテゴリを取得する決定を下すロジックがある場合がありますが、すべてのユーザー行動パラメーターをサーバーに送信するわけではありません。この画像の例では、ブラウザはサーバーが知らないことを知っており、サーバーも知っています。したがって、アプリケーション全体が分散システムになります。分散された性質のこの部分に加えて、ユーザー認証はサーバーの 1 つで実行され、インベントリは別のサーバーで実行され、さらに別のサーバーで予約が実行されます。関連する各サーバーは、特定のユーザーのブラウジングおよび注文インスタンスのすべての情報を持っているわけではありません。
計算ロジックが常に全体像の情報を取得できるという点で、分散型の反対は集中型です。
このように考えると、クライアント側で重要な意思決定が行われると思われる場合、クライアント サーバーアプリケーションは分散システムと見なすことができます。または、クライアントがばかげていると思われる場合は、集中型システムにすることもできます。
サービス指向の用語は、機能的な処理能力をシステムに統合する方法に関するものです。サービス指向システムでは、新しい API 機能の検出、または変更されていない API の背後にある新しいロジック機能の検出によって、実行時に新しい機能がシステムに導入される場合があります。考えてみてください。最初は組み込み機能がほとんどないアプリケーションを構築し、サービス プロバイダーの新しい機能を発見して組み込むことで、その機能を拡張することができます。対照的に、従来のシステムはビルド時にビルドする必要があり、通常は人間が関与するディスカッション、設計、文書化活動の結果として行われます。サービス指向の設計は、分散システムに適しています。