分散システムにはさまざまな種類があり、非常に広範囲にわたります。システムの種類によって特性が異なります。バッチ コンピューティングとリアルタイム コンピューティングは非常に異なります。
画像はPexelsより この記事では、分散ストレージ システム、分散検索システム、分散分析システムなどの分散データ システムの設計に焦点を当てます。まず、Elasticsearch のアーキテクチャを簡単に見てみましょう。 Elasticsearch クラスター アーキテクチャ Elasticsearch は非常に有名なオープンソースの検索および分析システムであり、現在インターネットのさまざまな分野で広く使用されています。 特に、次の 3 つの領域が際立っています。
Elasticsearch の詳細な紹介は公式 Web サイトにあります。まず、Elasticsearch の重要な概念をいくつか見てみましょう。
ノードは通常、同じインデックスまたは異なるインデックスに属する可能性のある複数のシャードを管理します。ただし、信頼性と可用性を確保するために、同じインデックスのシャードは可能な限り異なるノードに分散されます。シャードには、プライマリ シャードとレプリカ シャードの 2 種類があります。
上記のように、グラフィック表現は次のようになります。
システムの可用性を考慮すると、同じシャードのプライマリとレプリカを同じノードに配置することはできません。 ここで、Shard1 の P1 と R1 はそれぞれ Node3 と Node2 に配置されています。 Node2 がダウンした場合でも、P1 と R2 は引き続き利用可能であるため、サービスは基本的に影響を受けません。 マスタースレーブアーキテクチャであるため、プライマリシャードに障害が発生した場合は切り替える必要があります。この時点で、レプリカを新しいマスターとして選出する必要があります。少し時間がかかるだけでなく、データが失われるリスクもあります。 インデックスプロセス インデックスを構築する際、ドキュメントは最初にルーティング ルールを通じてプライマリ シャードに配置され、その後インデックス作成のためにプライマリ シャードに送信されます。成功した場合、ドキュメントはインデックス作成のためにシャードのレプリカに送信されます。レプリカ上にインデックスが正常に構築された後にのみ成功が返されます。 このアーキテクチャでは、すべてのインデックス データがシャードに保存され、1 つのコピーがプライマリ シャードに保存され、もう 1 つのコピーがレプリカ シャードに保存されます。 レプリカ シャードまたはプライマリ シャードが失われた場合 (たとえば、マシンのダウンタイムやネットワークの中断により)、失われたシャードを他のノードで復元する必要があります。 このとき、新しいシャードを構築するには、このシャードのすべてのデータを他のレプリカ (レプリカ) から新しいノードにコピーする必要があります。 このコピー プロセスには時間がかかり、その間は残っているプライマリ レプリカのみがトラフィックを伝送できます。リカバリが完了する前に、フェイルオーバーが完了するまで、システム全体が比較的危険な状態になります。 これは、レプリカが存在する理由の 1 つを反映しており、データの損失を回避し、データの信頼性を向上させることです。 レプリカが存在するもう 1 つの理由は、読み取り要求の数が多い場合、1 つのノードではすべてのトラフィックを処理できないことです。このとき、クエリ機能を拡張するために、クエリ負荷を分散するためのレプリカが必要です。 ロール展開方法 次に、役割を分担する 2 つの異なる方法を見てみましょう。 Elasticsearch は上記の両方の方法をサポートしています。
ハイブリッド展開 (左に表示):
このデプロイメント モードでは、これら 2 つの異なるタイプのノード ロールが同じノードに配置されます。これは、データとトランスポートの 2 つの機能を持つノードに相当します。
このノードはグローバル ルーティング テーブルを保持し、ルーティング テーブルを通じて適切なノードを選択し、これらのノードに要求を送信し、すべての要求が返された後、結果をマージしてユーザーに返します。ノードは 2 つの役割を果たします。
この場合、各ノードは他のすべてのノードとの接続を維持する必要があり、システム内の接続数には上限があるため、接続数によってクラスターのサイズが制限されます。
階層化展開(右図参照):
データノードはデータを処理するため、CPU、ネットワーク、ディスクなどの単一マシンのリソースが完全に占有されやすくなります。
クラスター内のデータ ノードの数はトランスポート ノードの数よりもはるかに多いため、クラスターの規模を大きくすることができます。 さらに、トランスポート ノードをグループ化して、固定グループ内のデータ ノードにのみ接続するようにすることもできます。これにより、Elasticsearch の接続数の問題が完全に解決されます。
上記では、Elasticsearch のデプロイメント レイヤー アーキテクチャについて紹介しました。さまざまなシナリオに応じて、さまざまな展開方法が適しています。ニーズに応じて適切な方法を選択する必要があります。 Elasticsearch データ層アーキテクチャ 次に、現在の Elasticsearch データ層アーキテクチャを見てみましょう。 データストレージ Elasticsearch のインデックスとメタは現在、ローカル ファイル システムでのストレージをサポートしており、niofs、mmap、simplefs、smb などのさまざまな読み込み方法もサポートしています。最高のパフォーマンスは、インデックスをメモリに直接ロックする mmap メソッドです。 デフォルトでは、Elasticsearch は読み込み方法を自動的に選択しますが、設定ファイルで自分で設定することもできます。ここにはいくつか詳細がありますので、詳細については公式ドキュメントを参照してください。 インデックスとメタデータの両方がローカルに保存されるという事実は、マシンがクラッシュしたりディスクが破損したりするとデータが失われるという問題を引き起こします。この問題を解決するには、レプリカ機能を使用できます。 レプリカ 各インデックスに対して、レプリカの数という構成項目を設定できます。レプリカの数を 2 に設定すると、シャードは 3 つになり、そのうち 1 つがプライマリ シャード、他の 2 つがレプリカ シャードになります。 3 つのシャードは、マスターによって可能な限り異なるマシンまたはラックにスケジュールされます。これら 3 つのシャード内のデータは同じであり、同じサービス機能を提供します。 レプリカには 3 つの目的があります。
質問 上記でいくつかの利点について説明しましたが、このアーキテクチャでは、シナリオによっては問題が発生する可能性もあります。 Elasticsearch は、ローカル ファイル システムに基づく技術アーキテクチャを使用し、レプリカを使用してデータの信頼性を確保します。このアーキテクチャは、ある程度、ほとんどの要件とシナリオを満たすことができます。 しかし、いくつか残念な点もあります。
上記では、Elasticsearch データ層のアーキテクチャと、レプリケーション戦略の長所と短所について紹介しました。以下では、分散データ システム アーキテクチャのさまざまな形式について簡単に紹介します。 分散システム ローカルファイルシステムに基づく分散システム 上の図は、ローカル ディスクに基づいてデータを保存する分散システムを示しています。インデックスには合計 3 つのシャードがあります。各シャードには、プライマリ シャードに加えてレプリカ シャードがあります。 ノード 3 のマシンがクラッシュするか、ディスクが破損した場合、まず P3 が使用できなくなったことを確認し、R3 をプライマリ シャードとして再選択し、このシャードでマスターとスレーブの切り替えが行われます。次に、新しいマシン Node 7 を見つけて、Node 7 で P3 の新しいレプリカを再起動します。 データはローカル ディスクに保存されるため、シャード 3 のデータをノード 6 からノード 7 にコピーする必要があります。 200G のデータがあり、ネットワークがギガビットの場合、コピーには 1600 秒かかります。レプリカがない場合、これらのシャードは 1600 秒以内に使用できません。 信頼性を確保するには冗長なシャードが必要であり、これにより物理リソースの消費量が増加します。このアイデアのもう 1 つの具体化は、デュアル クラスターを使用してクラスター レベルのバックアップを実行することです。 このアーキテクチャでは、データが HDFS/HBase などの他のストレージ システムで生成される場合、準備されたデータを対応するマシンに配布するためのデータ転送システムも必要になります。 このアーキテクチャの可用性と信頼性を確保するには、実稼働環境でデュアル クラスターまたはレプリカを使用する必要があります。メリットと副作用については、上記で Elasticsearch を紹介した際に紹介したので、ここでは繰り返さないことにします。 Elasticsearch はこのアーキテクチャアプローチを使用します。 分散ファイルシステムに基づく分散システム 最初のアーキテクチャの問題に対処するための別のアプローチは、ストレージとコンピューティングを分離することです。 最初のアプローチの問題の根本的な原因は、データの量が多く、データのコピーに時間がかかることです。では、データのコピーを回避する方法はあるのでしょうか? この目標を達成するための 1 つのアイデアは、基盤となるストレージ層で共有ストレージを使用することです。各シャードは、分散ファイル システム内のディレクトリ/ファイルに接続するだけで済みます。シャードにはデータは含まれず、コンピューティング部分のみが含まれます。 つまり、各ノードはコンピューティング部分のみを担当し、ストレージ部分は HDFS などの別の基盤となる分散ファイル システムに配置さます。 上の図では、ノード 1 は最初のファイルに接続されています。ノード 2 は 2 番目のファイルに接続されます。ノード 3 は 3 番目のファイルに接続されます。 ノード 3 がダウンした場合は、ノード 4 に空のシャードを作成し、基盤となる分散ファイル システムの 3 番目のファイルに接続するための新しい接続を構築するだけで済みます。接続は非常に速く確立され、かかる合計時間も非常に短くなります。 これは、ストレージとコンピューティングを分離した典型的なアーキテクチャであり、次のような利点があります。
このアーキテクチャには欠点もあります。分散ファイル システムへのアクセスのパフォーマンスは、ローカル ファイル システムへのアクセスほど良くない可能性があります。 これは、以前の世代の分散ファイルシステムではより明白な問題でしたが、さまざまなユーザーモード プロトコル スタックの使用により、そのギャップはますます小さくなってきています。 HBase はこのアーキテクチャを使用しており、Solr もこのタイプのアーキテクチャをサポートしています。 要約する 上記の 2 つのアーキテクチャには、それぞれ長所と短所があります。一部のアーキテクチャの欠陥や不具合については、さまざまなアイデアやソリューションも大きく異なりますが、アイデアの範囲が広ければ広いほど、一般的にメリットも大きくなります。 上記では、分散データ(保存/検索/分析など)システムのストレージ層の 2 つの異なるアーキテクチャ方式のみを紹介しました。皆様のお役に立てれば幸いです。 ただし、分散システム アーキテクチャの設計には、幅広いコンテンツ、多くの詳細、および多くのトレードオフが伴います。特定の分野や側面にご興味がある場合は、メッセージを残していただければ、後ほどご相談させていただきます。 |
<<: Yuntutongは、企業がクラウドコンピューティングの国内独立管理を実現できるよう支援します
>>: 隠れたJVMオンライン悲劇の分析、調査、解決を記録する
人を鏡として使うと、自分の得失を理解するのに役立ちます。成功しているサイトを真似して学ぶことで、他の...
ピークサーバーズはかなり変わったビジネスです。本当に驚きました。すぐになくなるだろうと思っていました...
最近、世界有数のソフトウェア インテリジェンス企業である Dynatrace は、Dynatrace...
大学は常に最先端技術を最初に応用する重要な場所であり、クラウド デスクトップ テクノロジーも例外では...
最先端技術の継続的な発展とクラウドコンピューティングサービスの普及により、AI as a servi...
今年に入ってから新型コロナウイルス感染症の感染拡大が続いており、さまざまな生産活動が予定通りに実施で...
最近、TikTokに関する報道が多くなってきました。なぜなら、議会から学界、多国籍企業から中小企業、...
1年前に国内の有名なSEO研修機関のオンライン研修に参加した時のことを思い出します。当時私が勤めてい...
実は、福建省の「Fanli.com」が崩壊する前、業界の多くの人々は「Fanli.com」の収益モデ...
[51CTO.com からのオリジナル記事] クラウド コンピューティング テクノロジーの開発は、2...
bitaccelは、真新しいVPS業者と言えます。オプションのデータセンターには、バッファロー、ニュ...
みなさんこんにちは。私は徐子宇です。先ほどの記事「3つの大きな目標を指針にウェブサイトコンテンツマー...
2006年12月にPHP 7.0がリリースされて以来、PHP 7.1.0がリリースされ、2013年6...
tmzvps は tmzhosting 傘下の VPS ブランドで、2 年間運営されています。tmz...
過去1年間、中国のインターネット市場は大きな変化を遂げ、To Bが新たなトレンドとなりました。産業用...