分散システムにはさまざまな種類があり、非常に広範囲にわたります。システムの種類によって特性が異なります。バッチ コンピューティングとリアルタイム コンピューティングは非常に異なります。この記事では、分散ストレージ システム、分散検索システム、分散分析システムなどの分散データ システムの設計に焦点を当てます。 まず、Elasticsearch のアーキテクチャを簡単に見てみましょう。 Elasticsearch クラスター アーキテクチャ Elasticsearch は、よく知られているオープンソースの検索および分析システムです。現在、インターネットのさまざまな分野で広く利用されていますが、特に以下の 3 つの分野で利用されています。 1 つ目は検索フィールドです。 Solr と比較すると、これは本当に注目の的であり、多くの検索システムの第一選択肢となっています。 2 つ目は Json ドキュメント データベースです。これは MongoDB よりも読み取りおよび書き込みパフォーマンスが優れており、より豊富な地理的位置クエリと数値とテキストの混合クエリをサポートします。 3つ目は時系列データの分析と処理です。現在、当社は監視データのログ処理、保存、分析、可視化において非常に優れた成果を上げており、この分野のリーダーであると言えます。 Elasticsearch の詳しい紹介については、公式 Web サイトをご覧ください。まず、Elasticsearch の重要な概念をいくつか見てみましょう。
グラフで表すと次のようになります。
インデックスプロセス インデックスを構築する際、ドキュメントは最初にルーティング ルールを通じてプライマリ シャードに配置され、その後インデックス作成のためにプライマリ シャードに送信されます。成功すると、ドキュメントはインデックス作成のためにシャードのレプリカに送信されます。レプリカ上にインデックスが正常に構築された後にのみ成功が返されます。 このアーキテクチャでは、すべてのインデックス データはシャード内に配置され、1 つのコピーがプライマリ シャードに保存され、もう 1 つのコピーがレプリカ シャードに保存されます。レプリカ シャードまたはプライマリ シャードが失われた場合 (たとえば、マシンのクラッシュやネットワークの中断により)、失われたシャードを他のノードで復元する必要があります。この時点で、新しいシャードを構築するには、シャードのすべてのデータを他のレプリカから新しいノードにコピーする必要があります。このコピー プロセスには時間がかかり、その間は残っているプライマリ レプリカのみがトラフィックを伝送できます。リカバリが完了する前に、フェイルオーバーが完了するまで、システム全体が比較的危険な状態になります。 これは、レプリカが存在する理由の 1 つを反映しており、データの損失を回避し、データの信頼性を向上させることです。レプリカが存在するもう 1 つの理由は、読み取り要求の数が多い場合、1 つのノードではすべてのトラフィックを処理できないことです。このとき、クエリ機能を拡張するために、クエリ負荷を分散するためのレプリカが必要です。 ロール展開方法 次に、役割を分担する 2 つの異なる方法を見てみましょう。 Elasticsearch は上記の 2 つの方法をサポートしています。 1. ハイブリッド展開(左)
2. 階層型展開(右図):
上記では、Elasticsearch のデプロイメント レイヤー アーキテクチャについて紹介しました。さまざまなシナリオに応じて、さまざまな展開方法が適しています。ニーズに応じて適切な方法を選択する必要があります。 Elasticsearch データ層アーキテクチャ 次に、現在の Elasticsearch データ層アーキテクチャを見てみましょう。 データストレージ Elasticsearch のインデックスとメタは現在、ローカル ファイル システムでのストレージをサポートしており、niofs、mmap、simplefs、smb などのさまざまな読み込み方法もサポートしています。最高のパフォーマンスを実現する MMap 方法は、インデックスをメモリに直接ロックすることです。デフォルトでは、Elasticsearch は読み込み方法を自動的に選択しますが、設定ファイルで自分で設定することもできます。ここにはいくつか詳細がありますので、詳細については公式ドキュメントを参照してください。 インデックスとメタデータをローカルに保存すると、マシンがクラッシュしたりディスクが破損したりすると、データが失われるという問題が発生します。この問題を解決するには、レプリカ機能を使用できます。 レプリカ 各インデックスに対して、レプリカの数という構成項目を設定できます。レプリカの数を 2 に設定すると、シャードは 3 つ存在し、そのうちの 1 つは PrimaryShard、他の 2 つは ReplicaShard になります。これら 3 つのシャードは、マスターによって可能な限り異なるマシンまたはラックにスケジュールされます。これら 3 つのシャード内のデータは同じであり、同じサービス機能を提供します。 レプリカには 3 つの目的があります。
質問 上記でいくつかの利点について説明しましたが、このアーキテクチャでは、シナリオによっては問題が発生する可能性もあります。 Elasticsearch は、データの信頼性を確保するために、ローカル ファイル システムとレプリカに基づく技術アーキテクチャを使用します。このアーキテクチャは、ある程度までほとんどのニーズとシナリオを満たすことができますが、いくつか残念な点もあります。
上記では、Elasticsearch データ層のアーキテクチャと、レプリケーション戦略の長所と短所について紹介しました。以下では、分散データ システム アーキテクチャのさまざまな形式について簡単に紹介します。 分散システム ***: ローカルファイルシステムに基づく分散システム 上の図は、ローカル ディスクに基づいてデータを保存する分散システムを示しています。インデックスには合計 3 つのシャードがあります。各シャードにはプライマリ シャードとレプリカ シャードがあります。ノード 3 のマシンがクラッシュするか、ディスクが破損した場合、まず P3 が使用できないことを確認し、R3 をプライマリ シャードとして再選択し、このシャードでマスターとスレーブの切り替えが行われます。次に、新しいマシン Node 7 を見つけて、Node 7 で P3 の新しいレプリカを再起動します。データはローカル ディスクに保存されるため、Shard 3 のデータを Node 6 から Node 7 にコピーする必要があります。200G のデータとギガビット ネットワークがある場合、コピーには 1600 秒かかります。レプリカがない場合、これらのシャードは 1600 秒以内に機能できません。 信頼性を確保するには冗長なシャードが必要であり、これにより物理リソースの消費量が増加します。 このアイデアのもう 1 つの具体化は、デュアル クラスターを使用してクラスター レベルのバックアップを実行することです。 このアーキテクチャでは、データが HDFS/HBase などの他のストレージ システムで生成される場合、準備されたデータを対応するマシンに配布するためのデータ転送システムも必要になります。 このアーキテクチャの可用性と信頼性を確保するには、実稼働環境でデュアル クラスターまたはレプリカを使用する必要があります。メリットと副作用については、上記で Elasticsearch を紹介した際に紹介したので、ここでは繰り返さないことにします。 Elasticsearch はこのアーキテクチャを使用します。 2番目のタイプ: 分散ファイルシステム(共有ストレージ)に基づく分散システム 最初のアーキテクチャの問題に対処するための別のアプローチは、ストレージとコンピューティングを分離することです。 最初のアイデアの問題の根本的な原因は、データの量が多く、データのコピーに時間がかかることです。では、データのコピーを回避する方法はあるのでしょうか?この目標を達成するための 1 つのアイデアは、基盤となるストレージ層で共有ストレージを使用することです。各シャードは、分散ファイル システム内のディレクトリ/ファイルに接続するだけで済みます。シャードにはデータは含まれず、コンピューティング部分のみが含まれます。つまり、各ノードはコンピューティング部分のみを担当し、ストレージ部分は HDFS などの下部にある別の分散ファイル システムに配置さます。 上の図では、ノード 1 は最初のファイルに接続されています。ノード 2 は 2 番目のファイルに接続されます。ノード 3 は 3 番目のファイルに接続されます。ノード 3 がダウンした場合は、ノード 4 に空のシャードを作成し、基盤となる分散ファイル システムの 3 番目のファイルに接続するための新しい接続を構築するだけで済みます。接続は非常に速く確立され、かかる合計時間も非常に短くなります。 これは、ストレージとコンピューティングを分離した典型的なアーキテクチャであり、次のような利点があります。
このアーキテクチャには欠点もあります。分散ファイル システムへのアクセスのパフォーマンスは、ローカル ファイル システムへのアクセスほど良くない可能性があります。これは、以前の世代の分散ファイルシステムではより明白な問題でしたが、さまざまなユーザーモード プロトコル スタックの使用により、そのギャップはますます小さくなってきています。 HBase はこのアーキテクチャを使用します。 Solr もこの形式のアーキテクチャをサポートしています。 要約する 上記の 2 つのアーキテクチャには、それぞれ長所と短所があります。一部のアーキテクチャの欠陥や不具合については、さまざまなアイデアやソリューションも大きく異なりますが、アイデアの範囲が広ければ広いほど、一般的にメリットも大きくなります。 上記では、分散データ(保存/検索/分析など)システムのストレージ層の 2 つの異なるアーキテクチャ方式のみを紹介しました。皆様のお役に立てれば幸いです。ただし、分散システム アーキテクチャの設計には、幅広いコンテンツ、多くの詳細、および多くのトレードオフが伴います。特定の分野や側面にご興味がある場合は、メッセージを残していただければ、後ほどご相談させていただきます。 |
著者は 1994 年以降に生まれた SEO 実践者です。私は最年少の SEO 実践者だと考えられてい...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています電子メール...
SEO について話すとき、最初に頭に浮かぶ要素は、キーワード、外部リンク、包含ステータスなどです。こ...
SEOquake は、主要な SEO メトリックのほか、SEO 監査などの便利なツールも提供する無料...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています作戦に関し...
みなさんこんにちは。2006 年と 2007 年に、<年収 2 万元で Web マスターの仲間...
インターネットの発展に伴い、電子商取引は事業主からますます注目を集めるようになりました。おそらく、T...
良いドメイン名はケーキの上のアイシングであり、良い運用はタイムリーな助けです。良いドメイン名がうまく...
[51CTO.comより引用] 2019年12月16日、中国電子技術標準化協会主催の「第9回中国クラ...
マイクロサービス アプリケーションのログ チェーンは通常長く、ログ収集 → ログ バッファリング →...
現在、「クラウドネイティブ」という概念が世界を席巻しています。特にデジタル経済の急速な発展と拡大に伴...
検索エンジン最適化では、SEO 戦略が最終的な最適化効果に影響します。 SEO 戦略は中小規模のウェ...
Baidu は 12 月から継続的に更新しています。3 日から 7 日が経ちました。75% の割合か...
10月14日、海外メディアは、新型コロナウイルスの流行が多くの企業に影響を与えているが、一部の企業は...
今日は日曜日なので、少し時間を取ってアリババ国際駅のSEOを分析した記事を書きます。この記事はA5で...