- データ配信
- 分散システムの特徴
- 互換性
- 耐障害性
- ミドルウェアとAPI
- 建築
- クライアントサーバーアーキテクチャ
- ピアツーピアアーキテクチャ
- マルチレベルアーキテクチャ
- プロセッサグループアーキテクチャ
- 分散システムのタイプ
- クラスターコンピューティング
- ネットワークコンピューティング
- クラウドコンピューティング
- ゴール
- リソースを共有する
- 抽象化
- オープニング
- 相互運用性と移植性
- スケーラビリティ
- 用途
- Erlang仮想マシン
- Bittorrent
- 利点
- 短所
- 分散システムの例
- StackPath
- インターネット
- 参考文献
分散システムは、複数のコンピュータの動作を調整するために使用されるソフトウェアの一部です。この調整は、メッセージの交換、つまり情報を送信するデータの断片を介して行われます。
分散システムには、並行コンポーネント、通信ネットワーク、および同期メカニズムが必要です。ネットワークに接続されたシステムによる、ソフトウェアを含むリソースの共有を可能にします。したがって、システムは、コンピューターを接続し、メッセージのルーティングを処理するネットワークに基づいています。
aおよびb(分散システム)。b(並列システム)。Miym / CC BY-SA(https://creativecommons.org/licenses/by-sa/3.0)
分散コンピューティングは、分散システムの分析を担当するコンピューティングの領域です。分散システムで実行されるコンピュータプログラムは、分散プログラムと呼ばれます。
大規模なインターネット企業では一般的な割合である数百または数千のコンピュータが存在する可能性がある状況では、ハードウェア、ネットワーク、ディスクなどのコンポーネントの障害が発生することは非常に一般的であり、システムは常に彼らと向き合う準備をしている。
データ配信
分散は、非常に大規模なデータ複合体を処理できるようにするための鍵です。これは、システムに新しいリソースを追加することによってデータプールが増大したときに安定したパフォーマンスを維持する手段であるスケーラビリティのために必要です。
一方、分散には一連の技術的な問題があり、分散コンピューティングとストレージの設計と実装を考慮することが重要になります。考慮すべき1つのポイントは、起こり得る障害のリスクです。
分散システムの特徴
aおよびb(分散システム)。b(並列システム)。Miym / CC BY-SA(https://creativecommons.org/licenses/by-sa/3.0)
互換性
デバイスは、さまざまなオペレーティングシステムで動作します。これは、常に同じサービスをユーザーに提供することを妨げるものではありません。このため、接続されているすべてのデバイスは互いに互換性があります。
もう1つの基本的な問題は、ソフトウェアの設計です。これは、各コンピューター上にあるすべてのシステムおよびユーザーとも互換性があるためです。
耐障害性
多くのコンピューターを含む単一のネットワークであるため、そのコンポーネントのいずれかに障害が発生しても、他のコンポーネントは機能を完全に実行し続け、エラーをすばやく回避できます。
このため、タスクが単一のデバイスではなく別のコンピューターに存在するため、システムが完全に失敗することは非常にまれであるため、分散システムはそれらを使用するときに多くの信頼を提供する傾向があります。
ミドルウェアとAPI
さまざまなプロセッサがディストリビューションミドルウェアを使用し、さまざまなリソースと機能を共有して、ユーザーに一貫性のある統合ネットワークを提供します。また、セキュリティやクラッシュリカバリなどの多くのサービスをアプリケーションに提供します。
今日は、アプリケーションが通信できるゲートウェイとして機能するアプリケーションプログラミングインターフェイス(API)について詳しく説明します。アプリケーションは、API以外のアプリケーションについて何も知る必要はありません。
建築
クライアントサーバーアーキテクチャ
サーバーと呼ばれる特定のコンピューターは、サービスと呼ばれる特定のタスクを実行できます。たとえば、ネットワーク経由でファイルを提供したり、特定のコマンドを実行したり、データをプリンターにルーティングしたりできます。クライアントは、サービスを要求するコンピューターです。
主に提供するサービスで知られているコンピューターは、プリントサーバー、ファイルサーバーなどと呼ばれます。
ピアツーピアアーキテクチャ
各コンピュータには同様の機能があり、他のコンピュータにサービスを提供する専用のマシンはないと想定しています。この例は、小規模オフィスのマイクロコンピュータのセットです。
このネットワークでは、人々はお互いのファイルにアクセスして電子メールを送信できますが、特定のサービスセットを提供するコンピューターはありません。
マルチレベルアーキテクチャ
特定のサービスについては、階層的な接続を持つことが理にかなっています。例えば:
- タスクを実行するサーバーは、異なるタイプの別のサーバーに接続できます
- クライアント/サーバーアーキテクチャは2層アーキテクチャです。
プロセッサグループアーキテクチャ
オペレーティングシステムは、アイドル状態のコンピューターでプロセスを自動的に開始し、使用可能なCPUサイクル数が多いシステムにプロセスを移行することもできます。他の場合では、ユーザーは使用可能なシステムでプロセスを手動で開始または移動できます。
分散システムのタイプ
クラスターコンピューティング
これは、高速ローカルエリアネットワークを介して接続された同様のコンピュータの集まりです。これは、単一の計算集中型プログラムが複数のコンピューターで並列に実行される並列プログラミングによく使用されます。
各クラスターは、マスターと呼ばれる1つ以上のノードによって監視および管理される一連の計算ノードで構成されます。
ネットワークコンピューティング
これは、ハードウェアとネットワーク技術に顕著な違いがあるノードで構成されています。特定のタスクに対してノードの特定の構成を使用するという現在の傾向により、ネットワークコンピューティングで最も一般的な多様性がさらに高まっています。
クラウドコンピューティング
これは、クラウドプロバイダーのデータセンターに格納されている一連の仮想化リソースです。お客様は仮想化インフラストラクチャを確立して、さまざまなクラウドサービスを利用できます。
ユーザーには、自分専用のコンピューターをレンタルしているようです。ただし、実際には他の顧客と共有している可能性があります。同じことが仮想ストレージにも当てはまります。
これらの仮想化リソースは動的に構成できるため、スケーラビリティが可能になります。より多くのコンピューティングリソースが必要な場合、システムはさらに購入できます。
ゴール
リソースを共有する
ストレージ設備、データファイル、サービス、ネットワークなど、経済的な理由から、これらのリソースをアプリケーション間で共有することができます。
複数のアプリケーション間でストレージを共有するほうが、アプリケーションごとにストレージを購入して維持するよりもはるかに安価です。
抽象化
プロセスとリソースが複数のコンピューターに分散され、地理的に分散されている可能性があることを隠す。つまり、プロセスとリソースはユーザーから抽象化されます。
オープニング
基本的に、分散システムは他のシステムと簡単に統合できる要素で構築されていることを示しています。標準化されたルールに準拠しているため、そのインターフェースを持つプロセスは、同じインターフェースを持つ別のプロセスと通信できます。
相互運用性と移植性
これは、異なるメーカーの2つのシステムが連携して動作できる場合を指します。移植性は、システムA用に作成されたアプリケーションが変更なしでシステムBで機能できる範囲を決定します。
スケーラビリティ
より多くのリソースを必要とするユーザーが増加した場合に必要です。良い例は、毎週金曜日の夜にNetflixの視聴者が増えることです。
これは、より多くのビデオ送信を許可してネットワーク容量を増やし、消費量が正常化するとネットワーク容量を減らすなど、リソースを動的に追加することを意味します。
用途
Erlang仮想マシン
LYMEソフトウェアパッケージはErlangに基づいており、LAMPの代替を提供します。Shmuel Csaba Otto Traian / CC BY-SA(https://creativecommons.org/licenses/by-sa/3.0)
Erlangは、並行性、分散、およびフォールトトレランスのための優れたセマンティクスを持つ関数型言語です。Erlang仮想マシンは、Erlangアプリケーションの配布を処理します。
このモデルは、多くの分離されたプロセスによって機能し、すべてが組み込みのメッセージングシステムを介して互いに通信する機能を備えています。
Erlang仮想マシンは、別の場所にある他の仮想マシンに接続できます。この仮想マシンの群れは単一のアプリケーションを実行し、別のノードで実行するようにスケジュールすることにより、1つのマシンの障害を処理します。
Bittorrent
BitTorrentネットワーク操作。Mrjavi / CC BY-SA(https://creativecommons.org/licenses/by-sa/4.0)
これは、Web上の大きなファイルを転送するために最も広く使用されているプロトコルの1つです。主なアイデアは、メインサーバーを経由することなく、ネットワーク上の異なるピア間でのファイル転送を容易にすることです。
BitTorrentクライアントを使用すると、世界中の複数のコンピューターに接続してファイルをダウンロードできます。コーディネーターとして機能するコンピューターは、目的のファイルを持つネットワーク上のノードを表示するのに役立ちます。
BitTorrentを使用すると、ファイルを自主的にホストし、ファイルを必要とする他のユーザーのためにアップロードできます。ネットワークに貢献するためのインセンティブを提供するのは、その種の最初のものであったため、非常に人気があります。
利点
-より多くのノードを分散システムに簡単に追加できます。つまり、必要に応じて拡張できます。
-分散システムのすべてのノードが相互に接続されている。したがって、各ノードは他のノードとデータを簡単に共有できます。
-プリンターなどのリソースは、1つだけに制限されるのではなく、複数のノードで共有できます。
-1つのノードの障害は、分散システム全体の障害にはつながりません。他のノードは相互に通信できます。
短所
-あるノードから別のノードに移動すると、一部のメッセージとデータがネットワーク上で失われる可能性があります。
-ノードと接続の両方を保護する必要があるため、分散システムで適切なセキュリティを提供することは困難です。
-分散システムのすべてのノードが同時にデータを送信しようとすると、ネットワークの過負荷が発生する可能性があります。
-分散システムに接続されたデータベースは、シングルユーザーシステムに比べて非常に複雑で管理が困難です。
分散システムの例
分散システムは、電子バンキングシステム、大規模なマルチプレーヤーオンラインゲーム、センサーネットワークなど、多くの場合に使用できます。
StackPath
特に大規模な分散システムを使用して、コンテンツ配信ネットワークサービスを強化しています。その存在ポイント(PoP)のそれぞれにノードがあり、世界中に分散したシステムを形成しています。
StackPathは、使用されているサイトに最も近い場所に、最新かつ頻繁に要求されたコンテンツを格納します。
仮想コンピュータを相互接続することにより、最先端のコンピューティングの速度と俊敏性を活用するだけでなく、システムは数千の同時要求を非常に迅速に処理できます。
インターネット
世界最大の分散システムです。何百万ものコンピュータで構成されていても、ユーザーは1つのシステムのように感じます。
抽象化の概念では、データの保存場所、関係するサーバーの数、または情報がブラウザーにどのように届くかはわかりません。ブラウザはインターネットの複雑さを解消します。
これは、Gmailメールやその他の使用可能なアプリケーションにも当てはまります。すべての人が日常的に分散アプリケーションと対話します。
参考文献
- Paul Krzyzanowski(2018年)。分散システム。取得元:cs.rutgers.edu。
- キャサリン・パガニーニ(2019)。入門書:分散システムとクラウドネイティブコンピューティング。新しいスタック。取得元:thenewstack.io。
- バレンシア国際大学(2020)。分散システム、特性、および分類。universidadviu.comから取得。
- デビッド・メアドール(2018)。分散システム。チュートリアルポイント。取得元:tutorialspoint.com。
- ロバート・ギブ(2019)。分散システムとは何ですか?blog.stackpath.comから取得。
- スタニスラフ・コズロフスキー(2018)。分散システムの完全な紹介。無料のコードキャンプ。取得元:freecodecamp.org。