画期的なJavaのインタビュー(14) - 分散型検索エンジンアーキテクチャ

ES弾性検索では、次の表

0 のGithub

1つの顔の質問

ESの分散アーキテクチャの原則についてのトーク

2つのテストサイト分析

この検索では、Luceneの最も人気のある検索ライブラリ一度。
業界では一般的に数年を依頼する前に、あなたはそれをLuceneを知っていますか?あなたは転置インデックスの原則にそれを知っていますか?
ElasticSearch -しかし、今、今、基本的にはプロジェクトベースの分散Lucene検索エンジンので、質問しません。

検索は現在、基本的なインターネットは特に人気があり、標準的なシステムは、一般的な使用Solrのために数年前に、ESであるとなっている分散します。しかし、最近では、企業やプロジェクトの実質的な大多数は、ESを回っています。

だから、インターネットのインタビュー、分散型検索エンジンは確かに我々は確かにESに話をします、あなたと話します!

インタビュアーが最初にあなたに質問をする場合、通常はそれについての私達に伝えることができる分散アーキテクチャをESを尋ねるのですか?あなたに分散検索エンジンアーキテクチャの基本的な理解をご覧ください。

3件のコメント

ESの設計思想は、検索エンジンを配布されますが、それはまだで、基礎となるLuceneをベースにしています。
核心思想それは、複数のマシン上で構成されるESクラスタをマルチESインスタンスのプロセスを開始することです。

3.1基本的な単位

データが格納ES 基本单位れるインデックス化は
たとえば、今、あなたはESデータに注文数を格納したい、あなたはESにインデックスを作成する必要がありorder_idx、すべての注文データがインデックスに書き込まれます。
概念的なインデックスでは、ほとんどのMySQLのと同じです表インチ

index -> type -> mapping -> document -> field。

3.2例

理解を容易にするために、私は類推するここです。覚えている、唯一のアナロジー!絶対に等しいです!

インデックス内のMySQLはテーブルに対応し、
とMySQLを使ったタイプ類推は行くことができない、
あなたは複数のタイプを持つことができますインデックスは、フィールドの各タイプが似ている、若干の違いがあります。

受注指数、専門の格納順序データを仮定します。
あなたは、MySQLのテーブルを構築するというような

  • いくつかの受注は、そのような衣服、靴など物理的な商品の受注、あります
  • いくつかの受注は、ゲームカード、プリペイド再充電などの仮想グッズ、受注しています

2ご注文のフィールドは同じですが、フィールドの小さな部分がわずかに異なっている残っています。

同様に、ESは順序インデックスでは、2つのタイプが構築されます

  • これは、物理的な財受注のタイプです
  • これは、仮想財受注のタイプです

2つのほとんどのタイプフィールドは、フィールドの小さな部分が同じではありませんが、同じです。

多くの場合、インデックスはおそらくタイプだったが、それは、インデックスの例複数の種類がある場合と言うん

mapping typesこの概念は完全に基づいて詳細に説明し、ElasticSearch 7.Xを削除された公式文書

あなたは、MySQLのテーブルを表し、各タイプのための特定、カテゴリインデックステーブルと考えることができます。
各タイプは、マッピングを持ち、テーブルの特定のタイプを想定し、インデックスが属するタイプのより多くを表しタイプ、およびマッピング、このタイプのあるテーブル定義構造
あなたはどのようなフィールドを持つテーブル構造を定義するようにしてください、MySQLでは、テーブルを作成し、各フィールドがどのようなタイプである。
実際には、あなたは内部に入力するための指標データの書き込み、文書と呼ばれる、
行のMySQLへの同様のテーブルに文書、
各文書の複数のフィールドと、
各フィールドは、文書内のフィールドの値を表します。

3.3構造原理

あなたは、インデックスが複数に分割ターンであり、インデックスを構築するshard各シャードデータ記憶部。
シャードを複数に分割することは有利です。

  • 水平方向の拡張サポートしてい
    ます3T、3のGeシャードは、各シャードの1T上のデータは、今4Tにデータ量の増加は、どのように拡張した場合、このようなデータの量などを、?

とても簡単!4シャード新しいインデックス、データのインポート

  • パフォーマンスの向上
    、すなわち、複数のシャード、複数のサーバー間でデータを、すべての操作は、システムのスループットと性能を向上させる、複数のマシンに分散並行して行われます。

それぞれが、つまり、複数のバックアップを持っているそして、このデータのシャードは、実際にされshardているprimary shardデータを書き込むための責任を、いくつかがありますreplica shard
primary shardデータを書き込んだ後、データは他のいくつかに同期されますreplica shard真ん中。


レプリカ方式で、各シャードは、複数のデータのバックアップを持っている
ノードがダウンした場合でも、同様に他のノード上のデータは、高可用性を満たすために。

3.4主な特徴

クラスタのES複数のノードは、ノードが自動的にマスターノードとして選出されます。
マスターノードは、このような、インデックス・メタデータを維持し、スイッチングなどの一部の管理業務を担当して primary shardおよび replica shardようにアイデンティティと、
マスターノードがダウンした場合、それはノードがマスターで再選出されます。

そうでない場合は、マスターノードがダウンした上で、マスターノードは、ノードがダウンしている可能 primary shard 他の利用可能なノードに転送アイデンティティreplica shard
あなたがダウンしているノードを修正する場合はその後、再起動、マスター制御ノードが失われます replica shard背中の割り当てを、そして、なるようにクラスタが正常に戻ってデータのクラス同期の後続の変更、。

更简单点,若某非 master 节点宕机了,那么该节点上的 primary shard 不也就没了嘛.
那好,master 会让 primary shard 对应的 replica shard(在其他节点上)切换为 primary shard.待宕机的节点修复了,修复后的节点也不再是 primary shard了,而是 replica shard.

以上就是 ElasticSearch 作为分布式搜索引擎最基本的架构设计.

参考

《Java工程师面试突击第1季-中华石杉老师》

更多干货资源请关注JavaEdge公众号

おすすめ

転載: yq.aliyun.com/articles/706494