分散システムにはさまざまな種類があり、非常に広範囲にわたります。システムの種類によって特性が異なります。バッチ コンピューティングとリアルタイム コンピューティングは非常に異なります。この記事では、分散ストレージ システム、分散検索システム、分散分析システムなどの分散データ システムの設計に焦点を当てます。 まず、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 つの異なるアーキテクチャ方式のみを紹介しました。皆様のお役に立てれば幸いです。ただし、分散システム アーキテクチャの設計には、幅広いコンテンツ、多くの詳細、および多くのトレードオフが伴います。特定の分野や側面にご興味がある場合は、メッセージを残していただければ、後ほどご相談させていただきます。 |
現在、現代の産業システムは、デジタル経済と実体経済の深い統合の段階に入っています。産業のデジタル化の...
2006 年 2 月に Kenneth Odum 氏と Nick Rose 氏によって設立された V...
Bandwagonhost VPS に関する最新ニュース: 購入した Bandwagonhost V...
Google Cloud は、3 つの新しい通信関連製品をリリースすることでこれを実現します。これら...
編集者: @effyinはじめに:Foursquareがリリースされて間もなく、LBSはソーシャルマ...
無料のものを嫌いな人がいるでしょうか?自分のウェブサイトをもっと速くしたいと思わない人はいないでしょ...
パート01エッジコンピューティングソリューションの概念的定義図1上図1に示すように、「AIエッジコン...
検索エンジンに詳しい人なら誰でも、検索時にキーワードとして中国語、英語、数字を組み合わせたり、1 つ...
10月10日、ChinaSoft(002453.SZ)は北京で大戦略会議を開催し、金融技術発展戦略を...
今のSEOに携わる人たちは、とても惨めな人たちであることは明らかです。彼らは毎日、上司からの問い合わ...
EIG の 3 つの主要ホスティング ブランド (netfirms.com、domain.com、m...
平日は一番静かなライブ配信販売グループも、10月からはすごく賑やかになってきました。李佳琦のライブ放...
2017年に設立されたロシアのVPS業者nuxt.cloudは、主にロシアのモスクワとドイツのデータ...
クラウド コンピューティングの利点は誰もが知っています。将来について言えば、ハイブリッドクラウド、サ...
個人が個人ウェブマスターになる準備をする前に、自分のサイトをどのように準備または計画すればよいでしょ...