分散システム
CORBAは、現在のNoSQL Hadoopのクラウドデータにクラスタから、EJB、WebおよびSOAに元からシステムを分散特性に大規模な分散システム、水平横方向延長Scalaのうち/のような分散システムの設計、フォールトトレランスの信頼性であります2つの品質の指標です。
分散システムとは何ですか?
- 多数のサーバのコレクションは、ユーザーがまだコヒーレント全体的なシステムです。
- A.タネンバウムは、定義された:分散ネットワーク構成要素内のコンピュータ間の連携動作は、メッセージを介して通信します。
- G. Coulouris定義:あなたが知っている場合にはそこにコンピュータのクラッシュがあるが、あなたがソフトウェアを実行して停止することはありません。
- レスリー・ランポートの定義:分散システムは、システムである:、あなたが処理要素の物理的なアーキテクチャを使用することができるアプリケーションやサービスの開発をサポートするために設計された複数の自律的ではなく、共有のメインメモリで構成されていますが、メッセージは、ネットワークを介して非同期に協力を送っています。
- アプリケーション階層間差分:層状のアプリケーション(例えば、レイヤ3)は、アプリケーションロジックの分割、層状ロジックではなく物理的であり、そしてDSは、物理階層分散システムであって、実際の展開に関連します。
伝統的な中央集中型のシステムと比較すると:
集中型システムは、/の縦拡張をスケールアウトまたはメインフレーム、または多核のアップグレードに上向きサーバをアップグレード、CPUコアの数を増やすことで、集中垂直拡張は、重合データの比較的高度を計算するように適合され、分散コンピューティング緩いデータ、非構造化、または半構造化データ。取るためにどちらの伸縮拡張プログラム、ビジネスデータの特徴に基づいてする必要があります。
コンピューティングとストレージ:任意の分散システムは、常に2つのタスクを達成する必要があります。単離されたコンピューティングとストレージは、分散システムの重要な特徴です。SQL文が実際に計算されるように、通常の集中またはスタンドアロンシステムでは、そのようなメモリからデータを取得するために照会し、単一のSQL文の並べ替えクエリを達成するように、2つを組み合わせることが可能である、順位が計算され、所属そしてストレージが一緒に結合されました。並行処理で大規模なデータや大したことの場合には、この便利なバンドルパフォーマンスの問題、および複雑さをもたらすために、分散コンピューティングと分散ストレージものの、だけでなく、システムの処理能力の増加拡張のためのスペースを開きます。
分散システムの特徴:
- 同時実行:共有リソース、またはACID基本原則を取るには、以下を参照してくださいCAP定理を。
- 分散システムの設計は、CAP定理を次の、CAPは次のとおりです、CAP 3、2つのみ満たす信頼性、CAP定理の状態を呼ば一貫性(一貫性)、可用性(アベイラビリティ)、およびパーティション・トレランス(パーティションのフォールトトレランス)種。
- スケーラビリティは、スケーラブルな、高いパフォーマンスとスループットが低遅延レイテンシーを拡大することによって得ることができる重要な機能です。
- 信頼性/可用性:障害検出と回復処理とフォールトトレランス。機能システムの時間スケールでのプレゼンス。ユーザーは比例して、システムの増加にアクセスすることができない場合は、それが使用不可能と考えられています。可用性の式:
- 可用性=稼働時間/(稼働時間+ダウンタイム)
- すべてがまだ正常に動作して、エラーが発生した場合に、システムのフォールトトレラントフェイルオーバーを指します。これは、システムがエラーの寛容であることを示しています。
- メッセージング:ようにRabbitMQのZeroMQネッティーと:特定の製品。
- 異質性:異なるオペレーティングシステムのハードウェアプログラミング言語の開発、ミドルウェアソリューションです。
- 安全性:その上、認可および認証SSOシングルサインオンのOauthと。
位置決めコマンド:
- URLは、リソースを識別します
- サービス・ネーミングサービスの命名
- ポジショニング探して検索
- SOAのルックアップで主なサービスを参照してください。飼育係は、サービスの発見と実現しました。
透明性:
- アクセス透過性:同じ動作し、ローカルとリモートのリソース
- 場所の透過性:その物理的またはネットワークの場所を知らなくても、リソースにアクセスします
- 同時透明性:複数の処理を同時に実行することができ、その処理の流れを妨害しないことができ、目詰まりするとき、共有リソースを使用してアクセス
- レプリケーションの透明性:リソースの複数のインスタンスがコピーされた信頼性とパフォーマンスを向上させるために使用されるが、特別に、ユーザーのアプリケーション・プログラムによって調製する必要はないことがあります。
- 透明性障害:ソフトウェアとハードウェアの障害、ユーザーやアプリケーションがそのタスクは影響を受けません完了し続けることができるとき。
- モバイル透明性:彼女は、システム内のモバイルリソースとクライアントの存在を可能にします。
- 透明性のパフォーマンス:システムパフォーマンスの負荷変動を改善できるようにするために再構成
- 透明スケーリング:アプリケーション構造の場合にシステムを拡張または伸張する能力は、スループット処理能力を増加させるために、サイズが変化しません。
分散システムの課題
分散システムは、理解し、設計、構築、および管理することは困難であり、それらが設計に導入された単一のマシン変数よりもさらに乗じ、アプリケーションの問題の根本的な原因は、より困難見つけるために。SLA(サービスレベルアグリーメント)が(月額たとえば、99.9または99.99%の可用性)増加し、最新のアプリケーションは通常、数「9」により、所望の弾性のSLAレベルを持って、ダウンタイムおよび/または標準のパフォーマンスの低下の尺度です。各追加9は、達成することがますます困難になってきています。
物事をさらに複雑にするためには、我々はより多くの一般的な参照点である。(一般的に電圧低下として知られている)、断続的なエラーやパフォーマンスの低下のための障害のパフォーマンス分散システム。故障モードは、診断に時間がかかります。例えば、ジョエントそのクラウド・コンピューティング・インフラストラクチャの一部として、いくつかの分散オペレーティングシステム。高可用性、分配されたキー/値の記憶を含むそのようなシステムでは、ジョエントは最近、一時的なアプリケーションのタイムアウトを経験しました。ほとんどのユーザーのために、通常、オペレーティングシステムは、反応は、SLAの遅延の範囲内です。10のリクエスト事前定義されたタイムアウト時間を超えた-しかし、5パーセントがあります。このような失敗は、彼らはしばしば、数分から数時間から「消える」、開発やテスト環境で再現されていません。これは、データ・ストレージ・システムの障害が発生うち基本的なルールは、分析の多くを必要としています。
これらのシステムは、次のとおり、データ記憶API(ノードJS)、RDBMS ( リレーショナルデータベース管理システム)、およびシステム(PostgreSQLの)とエンドユーザアプリケーションとオペレーティングシステムによって内部的に使用され、キー/値のシステムに依存しています。最後に、過度の基本的な問題へのリードは、アプリケーションのセマンティクスにロックされますが、かなりのデータ収集と決定する前に、関連する作業を必要としている、などのエンジニアは、異なる分野の専門的な知識を学ぶために時間と労力を費やします。
2つの物理的要因の限界からなる分散システム:
- ノードの数(および格納するために必要な計算能力を増加させることができます)
- ノード間の距離(距離情報は、好ましくは、光の速度で送信されます)
このような状況が発生し、次の2つの制約に値する課題につながります。
- 独立したノードの数が発生した故障の確率を高めるために増加するにつれて(可用性及び管理コストを低減)
- 独立したノードの数がノード間の通信の消費を増加させることができるように(低減性能を有するサイズが増大)
- リモート・ノード間の通信遅延の距離(特定の操作の還元性能)を改善するために増加
分散システムを構築する方法
分散システムアーキテクチャのための最も一般的な用語は、SOA(サービス指向アーキテクチャ)です。SOAは、WSによって不快なCORBA(共通オブジェクト・リクエスト・ブローカ・アーキテクチャ)、避けることができる - *標準、小さな独立した機能を完了するための疎結合のWebサービスのセット、および互いに独立に、彼らは柔軟な分散システムの基礎です。コントラストの世代、新サービスプロセスは、彼らが個別の機能の抽象化システムの適切なレベルです。
サービス指向アーキテクチャーを構築するための最初のステップは、各機能の機能一体型ビジネスの目的は、個別のサービスに、これらのサービスをマッピングする方法を決定するものであり、個別の障害境界、スケーラビリティおよびデータロードを持っています。各サービスのための決定は、次のことを考慮する必要があります。
- 地理学。システムは、個別に、グローバルまたは地域的に実行されますか?
- データ分離。システムは、単一またはマルチテナント・モデルを提供し?
- SLA。スループットは、一貫性の可用性を遅らせ、冗長性を定義する必要があります。
- セキュリティ。IAAA(アイデンティティアイデンティティ、認証、承認、認可、および監査の監査を確認する)データの機密性とプライバシーが考慮されなければなりません
- 可用性の追跡は、このような容量計画として、毎日システムのシステム日々のオペレーションを使用することを学びます。また、使用および/または管理会計システム(クォータ/速度制限)を行うために使用することができます。
- 展開と構成管理システムは、更新プログラムを展開する方法ですか?
分散システムの抽象モデル
- システムモデル(非同期/同期)
- 故障モード(クラッシュ、パーティション)
- 一貫性モデル(強い、最終)
一般的に、我々は、(例えば、分散システム上の共有メモリ抽象化)最も身近なモードがあまりにも高価ですしています。分散システム、移動の自由度を確保するため、さらに大きな性能の可能性を完全ことができる複数の要素より脆弱 - それはまた、管理が困難につながる可能性があります。これは、偉大な知恵を持って管理のしやすさと引き換えにパフォーマンスを犠牲にしないように私たちを必要とします。したがって、分散システムは、単一の、統一されたシステムは、分散システムの展開の妨げになるように考えてみました。
分散システムは、CAPの法則に従って、高可用性と耐障害性との間に高い整合性が2つのパーティションを選択します:
- 二段階トランザクションを使用したCAは、(一貫性の高い一貫性+可用性高可用性)2PC保証コミットします。欠点は、パーティションのフォールトトレランスを実現することができない、一度操作が失敗し、システム全体が間違っていると(魚へのきれいな水)容認することはできません。
- CP(一貫性の高い一貫+パーティション公差パーティションのフォールトトレランス)。パクソス可用性低下を確保するために使用されます。
- AP(可用性パーティション+高可用性フォールトトレランスのためのパーティション・トレランス)。最終的な一貫性はダイナモのように、のようなゴシップを使用して達成しました。
- CAP理論を理解するには?
分散システムの設計スキル:パーティショニングとレプリケーション
次の2つの方法で設定、設計データの場合:
- パーティション:より多くの並列処理を可能にするために、複数のノードに分割することができます。パフォーマンスの向上が、低フォールトトレランス。
- コピー:それもコピーまたは異なるノードにキャッシュされ、クライアントとサーバーの、より大きなフォールトトレランスが、レプリケーションの消費性能との間の距離を短くすることができます。キーは、データ複製間の整合性です。弱い一貫性は低レイテンシと高可用性を提供します。
分散システムの設計スキル:クロックと順序
コンピューティングおよびストレージのための分散システムポリシー主にデータストレージパーティショニング及び複製のために、異なっており、分散コンピューティングタスクは、ように、イベント駆動型、例えば嵐のようであり、そしてのでイベントを確実にするための計算のために主にあります。そして、一連のイベントは、ビジネス・ロジック、イベント、時には巣ツリーイベントの順序を表し、その信頼性を確保しなければならない木があるすべてのイベントのセットが実行されているウェブサイトは、トランザクションの原子であります