ElasticSearch分散アーキテクチャの認識(5)

4175 ワード

1、ESの分布式アーキテクチャを解析する
1.1分散アーキテクチャの透明隠蔽特性ElasticSearchは分散システムであり、複雑な処理メカニズムを隠蔽している.
(1)クラスタ発見メカニズム(cluster discovery):例えば現在esプロセスを起動しており、2番目のesプロセスを起動すると、このプロセスはnodeとして自動的にクラスタを発見し、参加している
(2)shard負荷等化:例えば現在10 shardあり,クラスタに3つのノードがあり,esは各ノード等化の負荷要求を維持するために等化して割り当てられる.
1.2拡張機構
垂直拡張:新しい機械を購入し、既存の機械の水平拡張を交換する:直接機械を増加する
1.3 rebalance
ノードを増やしたり減らしたりすると自動的に均等になります
1.4マスターノード
プライマリノードの主な役割は、インデックスの作成や削除など、クラスタ操作に関連するコンテンツを追跡し、クラスタの一部であるノードを追跡し、関連ノードに割り当てられるスライスを決定することです.安定したプライマリノードはクラスタの健康にとって非常に重要である.
1.5ノードピア
各ノードは、要求を受信することができ、各ノードは、要求を受信した後、関連データのある他のノードで元の要求を受信したノードにルーティングしてデータを収集し、クライアントに返すことができる.
2、スライスとコピー機構
(1)indexは複数のshardを含む
(2)各shardは最小作業ユニットであり、一部のデータを担持する.各shardはluceneインスタンスであり、インデックスの確立とリクエストの処理に完全な能力があります.
(3)ノードを増減するとshardはnodesで自動的に負荷等化する
(4)primary shardとreplica shard,各documentは必ずあるprimary shardとそれに対応するreplica shardにのみ存在し,複数のprimary shardには存在しない
(5)replica shardはprimary shardのコピーであり、フォールトトレランスを担当し、リードリクエスト負荷を担当する
(6)primary shardの数はインデックス作成時に固定されており,replica shardの数は随時変更可能である.
(7)primary shardのデフォルト数は5、replicaのデフォルトは1、デフォルトは10 shard、5 primary shard、5 replica shard
(8)primary shardは自分のreplica shardと同じノードに置くことはできない(そうでなければノードがダウンタイムし、primary shardもレプリカも失われ、フォールトトレランスの役割を果たさない)が、他のprimary shardのreplica shardと同じノードに置くことができる
3、単一ノード環境でインデックス分析を作成する
PUT /myindex
{
   "settings" : {
      "number_of_shards" : 3,
      "number_of_replicas" : 1
   }
}

この場合、3つのprimary shardのみが1つのnodeに割り当てられ、他の3つのreplica shardは割り当てられません(1つのshardのコピーreplicaでは、2つは同じノードにはできません).クラスタは正常に動作しますが、ノードのダウンタイムが発生すると、データがすべて失われ、クラスタが使用できなくなり、リクエストを受信できません.
4、2つのノード環境でインデックス分析を作成する
3つのprimary shardを1つのnodeに割り当て、他の3つのreplica shardを別のノードに割り当てます.
primary shardおよびreplica shard同期を維持primary shardおよびreplica shardは、クライアントの読み取り要求を処理することができる
5、水平拡張の過程
(1)拡張後primary shardとreplica shardは自動的に負荷等化(2)拡張後に各ノードのshardが減少すると、各shardに割り当てられたCPU、メモリ、IOリソースがより多くなり、性能が向上(3)拡張の限界があり、6つのshardがあれば拡張の限界は6つのノードであり、各ノードの1つのshardは、拡張の限界を超えたい場合、例えば9つのノードに拡張し、では、replica shardの個数(4)6個のshard、3個のノードを増やすことができ、最大何個のノードがあるサーバのダウンタイムに耐えられるのでしょうか.(フォールトトレランス)どのサーバでもダウンタイムが発生すると、データの一部が失われます.
フォールトトレランスを向上させるためにshardの個数を9個(primary shard 3個、replicashard 6個)増やし、最大2台のサーバのダウンタイムを許容できます.
まとめ:拡張は、システムのスループットを向上させるとともに、フォールトトレランスを考慮します.つまり、できるだけ多くのサーバをダウンタイムさせ、データを失わないようにします.
6、ElasticSearchフォールトトレランス機構
9つのshard、3つのノードを例に挙げます.
(1).master nodeがダウンタイムした場合、primary shardがすべてActive statusではないため、クラスタ状態はredになります.
フォールトトレランス処理の第一歩:1台のサーバをmasterフォールトトレランス処理として選択する第2歩:新しく選出されたmasterは掛けられたprimary shardのあるreplica shardをprimary shardに昇格させ、このときクラスタの状態はyellowであり、1つのreplica shardが少なくなったため、すべてのreplica shardがactive statusではない
フォールトトレランス処理の第3ステップ:フェイルオーバを再起動すると、新しいmasterはすべてのコピーをノードにコピーします(ダウンタイム後に発生した変更を同期します).クラスタの状態はgreenです.primary shardとreplica shardはすべてActive statusです.
7、文書の核心メタデータ
(1)_index:
1つのドキュメントがどのインデックスに格納されているかを説明します.同じインデックスの下に格納されているのは似たようなドキュメント(ドキュメントのfieldの多くは同じ)です.インデックス名は小文字でなければなりません.下線で始まることはできません.カンマは含まれません.
(2)_type:
ドキュメントがインデックスのどのタイプに属するかを示す1つのインデックスの下に1つのtypeタイプ名しかありません.大文字でも小文字でもかまいません.下線で始まることはできません.カンマを含めることはできません.
(3)_id:
ドキュメントの一意のID、インデックス、タイプを組み合わせて、ドキュメントが手動で値を指定したり、esで値を生成したりすることができます.
8、文書id生成方式
(1)手動指定
put/index/type/88
通常は他のシステムの既存のデータをesにインポートする場合
(2)esによるid値の生成
post/index/type
Esが生成するidの長さは20文字でbase 64符号化を使用し、URLは安全であり、GUIDアルゴリズムを使用し、分布式でid値を同時に生成する際に衝突しない
9、_sourceメタデータ分析
ドキュメントを追加するときのrequest bodyの内容です
返される結果に含まれるフィールドを指定します:#デフォルト_ソースはすべてのフィールドのデータを返します
get/index/type/1?_source=name