この記事はWeChatの公開アカウント「Mu Niao雑記」から転載したもので、著者はMunioです。この記事を転載する場合は、Mu Niao Za Ji の公開アカウントにご連絡ください。 分散システムには、デザイン パターンとも呼ばれる古典的なルーチンが数多くあります。各デザイン パターンは、典型的なタイプの問題を解決できます。それらを蓄積していくと、わずかな変更やトレードオフを行い、ニーズを満たすアーキテクチャ構成を設計できるようになります。しかし、この点に関して経験を共有している人はあまり多くないようですので、後ほど仕事や勉強の経験をメモとしてまとめ、皆さんの参考になればと思います。スペースと能力が限られているため、すべてを網羅することが困難であったり、正確さに欠ける場合があります。不適切な部分がありましたら、遠慮なくご指摘ください。 各記事は、概要の背景、アーキテクチャ モジュール、概要の拡張ごとに個別に分析されます。この記事は最初の記事です: Master-Workers アーキテクチャ。 概要マスター ワーカー アーキテクチャ (大まかに言えば、マスター スレーブ アーキテクチャ) は、GFS のマスター サーバーやチャンク サーバーなどの分散システムで一般的な組織化方法です。 MapReduce のマスターとワーカー。分散システム内の多数の個別のマシン リソースに直面すると、マスター スレーブ アーキテクチャは最も自然で直接的な組織化方法です。これは、人々のグループと同様に、この人々のグループの外部出力機能を最大化するために、組織化と調整の最終決定権を持つリーダーが存在します。 これは、コンピュータ システムで一般的な分割統治の考え方を反映したものでもあります。つまり、複雑なシステムは、明確な機能境界と相互作用インターフェースを持つ、比較的凝集性が高く結合度の低いいくつかのサブモジュールに分割され、システムの理解、保守、拡張が容易になります。マスタースレーブアーキテクチャの場合、マスターは通常、クラスターのメタデータを維持し、スケジューリングにはこのメタデータを使用します。ワーカーは通常、特定のデータ スライスの読み取りと書き込み (ストレージ システム) を担当したり、サブタスクの実行ユニットとして機能したり (コンピューティング システム) します。 アーキテクチャモジュールマスタースレーブアーキテクチャシステムは通常、単一のマスターと複数のワーカーで構成されます。ちなみに、ここでの英訳でSlaveを使わなかったのは、Workerの方が中立的だと思うからです。もちろん、単一のマスターではパフォーマンスのボトルネックや可用性の問題が発生するため、通常は複数の解決策がありますが、これについては後で詳しく説明します。しかし、単一のマスターの利点は明らかです。マスターは制御ノードとして、複数のコピーによって生じる一貫性の問題に対処する必要がないため、実装の難しさが大幅に軽減されます。 私がよく知っているストレージ システムのアーキテクチャを例にとると、そのアーキテクチャ図は通常次のようになります。 マスターワーカーアーキテクチャ システム内のマスターとワーカーに加えて、システムを使用する外部ユーザーも存在します。通常、これをクライアントと呼びます。クライアントは、システムによって公開されるインターフェース (RPC、HTTP など) を介してシステムと対話します。 マスター マスターは通常、システムのメタ情報を保存します。メタ情報とは何ですか?これは、マスターの頭の中にあるクラスター構成情報の反映、またはビューとして理解できます。たとえば、クラスター内にワーカーがいくつあるか、各ワーカーの残り容量はどれくらいか、負荷はどれくらいか、どのワーカーがどのデータを保存しているか、などです。 メタ情報はどのように収集されますか?主な状況は 2 つあります。
このメタデータにより、マスターはクラスター全体を十分に理解し、一連の決定を下すことができます。以下にいくつか例を挙げます。
マスターの可用性 システム全体の可用性はマスターに完全に依存していることがわかります。業界には次のような多くのソリューションもあります。
各戦略は比較的大きなトピックであり、将来的には別の記事で説明される可能性があります。スペースの制限により、この記事では詳しく説明しません。 労働者 ストレージ システムでは、ワーカーが実際のデータを保存し、外部にデータ IO サービスを提供します。 スタンドアロンの観点から見ると、Worker はビジネス ニーズを満たし、データを効率的に保存するスタンドアロン エンジンを設計する必要があります。スタンドアロン エンジンの設計も大きなトピックなので、ここで簡単に触れておきます。
複数マシンの観点から見ると、マシンの数が増えるにつれて、システム内の単一マシンの障害の可能性が大幅に増加します。この正規化された障害に対処するには、次のことが必要です。 運用と保守の自動化。マシンが使用できなくなった場合は、自動的に削除され、修理後にすぐにオンラインに戻る必要があります。 データの冗長性。マシン障害後にデータが失われないように、各データを複数のコピーで保存し、冗長性のために EC アルゴリズムを使用する必要があります。 まとめマスターワーカーアーキテクチャは、分散システムで最も一般的に使用される組織化方法です。このアーキテクチャは、人間のコミュニティが組織される方法に似ています。システムの役割は次の部分に分かれています: マスターはメタデータを収集し、それに応じてタスクをスケジュールします。ワーカーは実際の作業負荷を担当し、効率的なスタンドアロン エンジンとグローバルな冗長性の設計を必要とします。アーキテクチャはシンプルでわかりやすいですが、強力です。 |
<<: Redisson 分散ロック ソースコード 8: MultiLock のロックとロック解除
少し前、インターネット上で最もホットな話題の一つは、テンセント、バイドゥ、新浪などのインターネット大...
おそらく、多くの場合、私たちは百度の度重なるコンテンツ要求に負けています。記事を書ける友達はそれほど...
2017年から運営しているAlphavpsは、2017年のブラックフライデーに低価格のVPSを提供し...
海外では、企業や個人の80%がマーケティングプロモーションにネットワークメディア手法を選択します。ぜ...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています今は新鮮な...
これまで私はデータ分析についての記事を書いてきましたが、主にデータ分析のプロセスとデータ分析のアイデ...
1. フレンドリーリンクの定義と重要性フレンドリーリンクの定義これは、ウェブサイト間の協力の単純な形...
BATの推進により、オンライン旅行市場の大規模な「再編」が始まった。 4月16日、eLongとTon...
[51CTO.com からのオリジナル記事] ゲームといえば、NetEase Games について触...
8月4日、アリババクラウドは、ワンストップアプリケーションホスティングプラットフォームであるServ...
ホームページの最適化の重要性は疑う余地がありません。ホームページの重要性が高いだけでなく、ホームペー...
本日お伝えしたいのは、Web サイトの初期段階で強固な基盤を築く方法です。良いスタートは必ずしも戦い...
たとえば、更新戦略が Recreate であるアプリケーションがあり、次のように削除コマンドを実行し...
現代のテクノロジーが進歩し、即時の満足を求める人間の欲求を満たすにつれて、消費者は製品プロバイダーを...
2011年10月中旬からこのプロジェクトにコンタクトを取り、計画を立て始めました。当時、企業情報の検...