分散システムの特性とソリューション

分散システムの特性とソリューション

スケーラビリティの
第二の可用性
3つの一貫
4、高性能


大規模なサイトは、分散システムの一部である多くの成分を含有する分散システムであり、私は今、多くの成分を含む大規模なサイト、各成分が分散システムであると考えて、そのような分散として記憶されています分散システムは、メッセージキューは、分散システムです。

スケーラビリティ、パフォーマンス、可用性、一貫性。この機能は、システムを測定するためのいくつかの指標を配布され、正確に様々な程度にこれらの特性を満たすために(または、これらの目標を達成する)ために、様々なアルゴリズムを設計する、プロトコル、および、ビジネス・ニーズに基づいてこれらの特性のバランス。

これらの特性を解決なぜ、何の問題も、何か良い解決策を解決するため、これらの機能のニーズを満たすために。

まず、スケーラビリティ
  スケーラビリティ場合システムタスク(作業)が増加すると、リソースを増加することにより、タスクの成長に対処する能力を指します。スケーラビリティは、分散システムの概念によって決定される任意の分散システムの本質的な特徴である:
分散システムは、からなるタスク共通の座標系を完了するためにコンピュータノードのグループによって、ネットワークを介して通信します
  単一のコンピュータを解決するために、分散コンピューティングシステムの出現は、ストレージ・タスクを完了することはできません。タスク増加の規模は、必然的に複数のノードを追加する必要があるときに、これはスケーラビリティです。
  ターゲット・スケーラビリティは、システム内のノードは、もちろん、ときにノードの動的な追加、負荷分散がより安定した負荷、タスク(計算することができる、データストレージであってもよい)、移行の必要性を作動させることです動的平衡を達成するためです。

  だから、考慮すべき最初の質問は、各ノードのサブセットにタスクを割り当てる、タスクを分割する方法である、我々はこのプロセスの問題パーティション(シャーディング)を呼び出します。パーティションについて、私は実際に記事に「分散システムを断片化したデータの問題で学習は、」それがここに要約され、詳細に記載されています。

最初:断片画分、すなわち、どのようにタスク分割アルゴリズム
  共通のアルゴリズムが含まれる:データ範囲(レンジ基準)に基づいて、ハッシュ(ハッシュ)、一貫したハッシング(整合性ハッシュ)。各メソッドは、独自の利点と欠点があり、また、独自のアプリケーションシナリオを持っています。

第二:断片キー、パーティションキー
  パーティションキー値データは、上述した任意のタイル法の特徴である、それを選択する方法、パーティションキーに依存して、次に
  キータスクがスライス間影響仕切りますバランスの取れた、といくつかのシステム(MongoDBは)ほとんどパーティション・キーを再選択することはできませんので、あなたが持っているとき、明らかに設計考えること

第三:フラグメンテーションの追加利益
  増加のパフォーマンスと同時実行:異なる要求が異なるスライスに配布され
  、使い勝手を向上させる:スライスは他の断片に影響を与えずにハングアップ

第四:断片化の問題が発生し
  、操作が複数のフラグメントにまたがる場合は、効率が非常に低くなり、このような参加などのオペレーティングデータを

第五:メタデータ管理
  、我々はメタデータサーバを呼び出した、メタデータを管理するメタデータが断片化し、ノード、ノード状態、および他のコアとの間のマッピング情報を記録し、分散システム、専用のノード(ノードクラスタ)。:メタデータサーバは、次のような特徴がある
  高パフォーマンスを:キャッシュ
  可用性:高速フェイルオーバーの冗長性に加えて
  、強い一貫性(一つだけのノードが同時にサービスを提供します)

第六:ダイナミックバランスタスク
  の動的平衡を達成するためには、データ移行の必要性は、移行の過程に残ることが保証サービスを提供するために、どのように、これは慎重にニーズを設計し、複雑な問題です。


可用性第二に、
可用性(アベイラビリティ)システムは、可用性が程度の問題で、継続的にサービスを提供する能力である、最高の目標は、常にオンラインであること、7 * 24です。:以下に示すように、システムの可用性を測定することは通常は数9と、しかし、実際には不可能
  つまり、あなたはその後、4可用性9(99.99%)、年のみ52.6に到達したい場合分が利用できない、これは大きな課題である
  分散システムは、これがために、分散システムの故障の可能性が高いので、考慮に入れ、それの可用性を取らなければならない理由。異種分散システムとノードからなるネットワークの多数によって、ノードは、電源障害、ディスクの破損、ネットワークパケットロスができ、待ち時間、ネットワークのセグメンテーションをクラッシュしてもよいです。規模システムは、故障の確率を増幅するので、分散システムは、障害がノルムです。そして、一つの目標は、使いやすさである、部分的な障害が発生した場合には、まだサービスを提供し、フォールトトレラント分散システムを設計することです。

冗長性、可用性、信頼性の魔法を改善することです。
  冗長性は、分散ストレージとして、シーンの状態を維持する必要性が広く用いられている、複数のノードが、同一のタスクに責任があることを意味します。このような作業者が異常に遅い実行MapReduceのような分散コンピューティングでは、マスターはまた、冗長であると考えられるシステムのスループットを向上させるために、別の作業者に再スケジュールワーカーをタスクであろう。しかし、ストレージの冗長性の面で多くの複雑な計算と比較して、それほど冗長ストレージの主な考慮事項。
  複数のノードは、同じデータが複数のコピーと呼ばれている維持します。レプリカセットにデータを書き込むとき私たちは、ノードは、中央集中型の分散化、そして契約書のコピーとの間の差であるために、更新することを決定しましたがあるかどうか、データ、同時実行の一貫性を確保するために、どのように、問題を考えます。

集中および集中の
  一次時間で分散スケジュールデータを更新する責任つのマスタノード(プライマリマスタ)であり、単純なプロトコルの利点は、操作のシーケンスに同時操作は、欠点がprimarがボトルネックになる可能性があり、故障再選挙の時には利用できないがあるでしょう。
  分散が困難に一貫性を確保するために、欠点は、複雑なプロトコルであり、高可用性の利点を更新データを開始することができ、すべてのノードが等しいステータスを有することです。
  センターと呼ばれ、多くの有名なのは、分散型環境での一貫性を確保しようとするダイナモ、カサンドラ、定足数を使用し、ベクトルクロックアルゴリズムです。中心部には、この1のために、それは学ぶためにどのように現在ないので、レプリカセットのメインセンターの以下の議論。契約書の一元コピーのために、私は単にここにまとめ、詳細に説明記事「を、問題に複製セットの学習センターを分散します」。

ポリシーノード更新
  クライアントは、レプリカセットのフロア内のすべてのノードにデータを待つ必要があるかどうか、つまり、二次ノードまたは非同期データに同期のプライマリノードを。
  同期強い整合性が、可用性および性能(応答遅れ)が不良であるという利点、非同期反対。

データフロー
  二次ノードへのプライマリノードからのデータ、およびマスタ・スレーブモードがチェーンを有する方法です。
  チェーンは、ネットワーク帯域幅の利点をフルに活用し、一次圧を減少させますが、欠点は、書き込みレイテンシである場合には大きくなります。GFS、MongoDBの(デフォルトでは)連鎖されています。

書面でのいくつかのノード
  の理論は、レプリカセットの複数のノードからのデータは一貫性があるので、理論的に取引をする必要があり、より多くのデータを書き込む必要があります:すべてが起こるか起こらないのどちらか。それが失敗した場合でも、(たとえば2PCなど)分散トランザクションは、複雑な、非効率的なプロセスであり、レプリカセットは、一般的にベストエフォート個ある更新、もう一度試して、またはアプリケーション自体を教えてください。

予備選挙
  自律システム、その他のシステムコンポーネントに依存:契約書のコピーの中央には、プライマリノードがプライマリノードがハングアップしたときに、選出された方法が、また、新しいプライマリノードにそれを選択する方法、2つの方法があります。(PS、Iが発明二つの名前...)
  は、いわゆる自律システムは、内部ノードは、MongoDBは、TFS、飼育係として、自身の投票オプションであり、
  他のシステムコンポーネントに依存して、一次を参照して、レプリカ・セットの後にアセンブリが任命されますこうした飼育係のハートビートによって選出されたプライマリマスタ(GFSメタデータサーバ)によって任命されたGFS、HDFSメタデータ名前ノードとして。

二外部サービスかどうか(サービス読み込み)
 二読み込みサービスは、一貫性のためのシステム要件に応じて、外部提供するかどうかを、複製セットの中心を。
  以前に非同期であってもよいポリシーノードを更新するために導入されたので、一次と比較セカンダリ上のデータは、いくつかの遅延があるような場合、強い整合性の要件を満たしていない場合、セカンダリからデータを読み出します。
  このようなメタデータとして、それが唯一のプライマリからデータを読み取る一般的で、強い整合性の保証が必要です。また、一般的には、マスタノードがノードからスタンバイ(スレーブ)に、(マスタ)がアクティブであることを特徴とします。この場合、高速フェイルオーバーの冗長性を追加することにより、可用性を確保します。

第三に、一貫性の
高可用性を実現するため、冗長性(コピー)メカニズムの導入、およびメカニズムのコピーは、一貫性の問題をもたらすために。冗長性、冗長かデータ(状態)が存在しない場合はもちろん、その後一貫性は、MapReduceのような問題ではありません。

  分散システムにおける一貫性と可用性の間の関係は、そこに、十分に研究されてCAP理論を形成しています。その理論CAP分散ファイルシステムは、パーティションは、両方のフォールトトレランス(P、分割耐性)整合(C、一貫性)、可用性(A、可用性)を満足することができ、。しかし、問題は、の一貫性と可用性の度合いで0-1で、だけでなく、0と1の両極端。
  ユーザの視点及びシステムの観点の一貫性とは異なるレベルがあります。

角システムの一貫性
  の強い整合性、弱一貫、最終の一貫

ユーザポイントの一貫性
  単調には一貫性、一貫性単調な書き込みは、読んで一貫性を読み書き、書き込み後読み取りの一貫性

第四に、高性能
正式なスケールアップ単一ノードがタスクを完了することはできませんので、私たちは、タスクを完了するために、多数のノードで、スケールアウトする必要があり、分散システムの理想的な目標は、線形成長の一定割合に応じてノードの作業です。

測定
  高同時
  高スループット
  、低レイテンシ
  、例えばMapReduceのように、同じではない異なるシステムがコア指標に焦点を当て、それ自体をオフライン計算、待ち時間であります

実現可能な方法の
  スケールアップ単一ノード
  スライス(パーティション)
  バッファ:メタデータのような
 短いトランザクション

 

おすすめ

転載: www.cnblogs.com/muzinan110/p/11239004.html