Elasticsearch は、可用性とスケーラビリティに優れたシステムを構築するために使用されます。スケーリングは、より優れたサーバーを購入する (垂直スケールまたはスケールアップ) か、またはより多くのサーバーを購入する (水平スケールまたはスケールアウト) ことによって実行できます。
Elasticsearch はより強力なハードウェアを使用することでより優れたパフォーマンスを得ることができますが、垂直拡張には限界があります。実際の拡張は水平方向、つまりノードを追加することで負荷を分散し、信頼性を高めることが必要です。 ほとんどのデータベースでは、スケールアウトとは、新しく追加されたデバイスを活用するためにアプリケーションを大幅に変更する必要があることを意味します。対照的に、Elasticsearch は本質的に分散されており、高いスケーラビリティと高可用性を実現するためにノードを管理する方法を知っています。つまり、プログラムではこの点について心配する必要はありません。 ES はどのようにして配布を実現するのでしょうか? インデックスの追加 es にデータを格納するための基本単位はインデックスです。 ES にデータを追加するには、インデックスを追加する必要があります。 ここで、ES のインデックスとシャードの関係について説明する必要があります。シャードは最小レベルの「ワーカー ユニット」であり、インデックス内のすべてのデータの一部のみが格納されます。すべてのドキュメントはシャードに保存され、アプリケーションと直接やり取りするドキュメントは繰り返しインデックス化されます。 ホテル検索を例に挙げて、すべてのホテルインデックスhotel_idxを追加してみましょう。
3 つの ES ノードを起動します。現在、hotel_idx には 3 つのプライマリ シャードが割り当てられており、各プライマリ シャードには 1 つのレプリカ シャードがあります。 1. ES クライアントはノードを選択します。上記ではNODE1が選択されており、これがデータを書き込むコーディネーションノードになります。現時点では、ES はドキュメント (ホテルデータの一部) をどのシャードにルーティングするかをどのように判断できるのでしょうか?実際、それは次の式に基づいています:
ルーティングは変数値です。デフォルトはドキュメントの _id です。ホテルの hotel_id などのカスタム値に設定することもできます。ルーティングはハッシュ関数を通じて数値を生成し、この数値を number_of_primary_shards (プライマリ シャードの数) で割って余りを取得します。 0 と number_of_primary_shards-1 の間の余りは、探しているドキュメントが配置されているシャードの場所です。 2. P0 を書き込んだ後、そのコピーである R0 と同期されます。同期が成功すると、調整ノード Node1 に返され、最終的にクライアントに返されます。 3. ESクライアントはプライマリシャードとセカンダリシャードの両方からデータを読み取ることができる 高可用性を確保する方法
拡大方法 ES では、インデックスを作成するときにプライマリ シャードの数を指定する必要があるため、プライマリ シャードを拡張することはできません。ストレージ容量が現在の ES ノードを超える場合、一部の運用方法では通常、現在のインデックスよりも多くのシャードを持つ新しいインデックスを作成し、データをインポートします。しかし、これにはいくつかの欠点もあります。そうすると、許容できない時間が消費されてしまいます。 当社では、事前に割り当てておくのが一般的です。事前に計画を立て、事前割り当てを行うことで、この問題を完全に回避することができます。 その中で、レプリカ シャードは動的に拡張できます。読み取りボリュームが大きいシナリオでは、レプリカを適切に拡張するとスループットが向上します。
シャード容量の見積もり方法 これを説明するのは実際には困難です。使用するハードウェア、ドキュメントのサイズと複雑さ、ドキュメントのインデックス作成と分析の方法、実行するクエリの種類、実行される集計、データ モデルなど、関連する要因が非常に多いためです。 制作における経験と提案: 1. 運用で使用する予定のハードウェアに基づいて、単一ノード クラスターを作成します。 2. 運用環境で使用するのと同じ構成とアナライザーを使用して、プライマリ シャードを 1 つだけ使用し、レプリカ シャードを使用しないインデックスを作成します。実際のドキュメント(または可能な限りそれに近いドキュメント)をインデックスします。 3. 実際のクエリと集計(またはそれにできるだけ近いもの)を実行します。 基本的には、現実世界の使用パターンを再現し、それをすべて 1 つのシャードに押し込んで「破損」させる必要があります。何が正確に中断するかはあなた次第です。ユーザーによっては、50 ミリ秒以内にすべての応答を必要とする場合があります。 5 秒待つだけで満足する人もいます。 したがって、単一のシャードの容量を定義すると、インデックス全体のシャードの数を簡単に推測できます。インデックスを作成する必要があるデータの総量と予想される増加分を合計し、それを 1 つのシャードの容量で割ります。結果が、必要なプライマリ シャードの数になります。 |
<<: 3つの主流の分散トランザクションソリューションの長所と短所の詳細な説明
>>: 知りたいDevOpsの実践方法はすべてここにあります
【はじめに】「マーケティングはサービスです」と何昌氏は語り、「黄太極のマーケティングは完全に携帯電話...
この記事はLeiphone.comから転載したものです。再印刷が必要な場合は、Leiphone.co...
LeaseWeb は、オランダのアムステルダムに拠点を置くホスティング プロバイダーです。1999 ...
現在、ウェブサイトのビジュアルレイアウトやユーザーエクスペリエンスに関するインターネット上の記事のほ...
海外メディアの報道によると、市場調査会社マーケット・リサーチ・フューチャーが発表したレポートでは、2...
インターネット時代の漸進的な発展により、SEO の需要が高まっています。SEO 技術の普及と検索エン...
最近、「小さくて美しい」という言葉が流行っています。タオバオでは、この言葉の普及に力を入れており、多...
エッジ AI はエッジ コンピューティングから生まれました。エッジコンピューティングは、エッジ処理と...
chicagovps の Web サイトは完全に刷新され、新しいインターフェース スタイルは以前より...
desivps はクリスマス プロモーションを開始しました。米国西海岸のサンノゼ データ センターの...
クラウドコンピューティング企業は、流行の影響に耐えただけでなく、ビジネスの成長も達成しました。しかし...
DevOps は長年にわたって存在しており、2021 年も間違いなく成長を続けるでしょう。多くの組織...
これは、グループ購入が初めて登場した 2010 年に書かれた古い記事です。その年は百連隊作戦の年で、...
ウェブサイトの価値を評価する方法に関して、非常に簡単だと考える人もいます。サイトの価値を測定できるウ...
1930年代には『ウォータールー橋』『風と共に去りぬ』『ミッキーマウスとドナルドダック』など優れた映...