Definition
分散システムは、分散コンピューティングとしても知られており、異なるマシン上に配置された複数のコンポーネントが、エンドユーザーには1つのまとまったシステムとして見えるように、通信や動作の調整を行うシステムです。
概要
分散システムを構成するマシンは、コンピュータ、物理サーバー、仮想マシン、コンテナなど、ネットワークに接続でき、ローカルメモリを持ち、メッセージを渡すことで通信できるあらゆるノードです。
分散システムは時に不明瞭な点もありますが、通常は次の3つの主要な特徴を持っています:すべてのコンポーネントが同時に実行される、グローバルクロックがない、すべてのコンポーネントが互いに独立して故障する。
分散システムの利点と課題
一般的にチームが分散システムの導入を決定する理由は次の3つです。
- 水平方向のスケーラビリティ-コンピューティングは各ノードで独立して行われるため、必要に応じてノードや機能を追加することが容易で、一般的に安価です。
- パフォーマンス-分散システムは、作業負荷を分割して複数のマシンに送ることができるため、非常に効率的です。
しかし、分散システムに課題がないわけではありません。
さらに、以下のような3つの課題があります。
- スケジューリング-分散システムでは、どのジョブがいつ、どこで実行されるべきかを決定しなければなりません。
- レイテンシー- システムが広範囲に分散しているほど、通信で発生するレイテンシーは大きくなります。
How a Distributed System Works
ハードウェアとソフトウェアのアーキテクチャは、分散システムを維持するために使用されます。
Types of Distributed Systems
分散システムは、一般的に次の4つの異なる基本アーキテクチャ モデルのいずれかに分類されます。
分散システムの例
分散システムには、電子銀行システム、多人数参加型オンラインゲーム、センサーネットワークなど、数え切れないほどの使用例があります。
StackPathでは、コンテンツ配信ネットワークサービスを提供するために、特に大規模な分散システムを利用しています。 各PoP(Point of Presence)には、世界規模の分散システムを構成するノードが存在します。
Distributed Systems at the edge
StackPathのエッジコンピュートサービス、仮想マシン、コンテナを使えば、ユーザーは自分で分散システムを作ることができます。
Key Takeaways
- 分散システムは、ネットワークに接続でき、ローカルメモリを持ち、メッセージを渡して通信することができるあらゆるマシンで構成されます。
- リクエストやワークロードを分散させることで、通常の単一システムよりもはるかに多くのリクエストやコンピュートジョブをサポートすることができます。
- StackPathのエッジコンピューティングコンテナや仮想マシンを相互に接続することで、独自の超高速分散システムを構築することができます。