【ソースコード分析】エラスティックサーチ8.0.0の起動プロセス(2)

前回の記事の直後

1.NodeClientオブジェクトを作成します

これまでに関係したすべてのオブジェクトの構成ファイルを、リストコレクションの形式で収集します。

final List<Setting<?>> additionalSettings = new ArrayList<>();

次に、NodeClientオブジェクトがパラメーターとして作成されます。Nodeがノードの静的表現である場合、NodeClientはノードの動的表現であり、さまざまなアクションが実行されます。アクションとは何ですか?対応するシーンで話しましょう。ここでは、クエリ、新しいドキュメント、その他のアクションとして簡単に理解できます。

2.プラグインを分析します

プラグインは、開発者がesの機能をカスタマイズするための拡張ポイントです。ディスクからプラグインファイルディレクトリを読み取った後、操作のためにScriptPluginタイプのプラグインを抽出する必要があります。

以下のapiなどのesスクリプトを使用したかどうかにかかわらず、esapi操作についてどれだけ知っているかわかりません。クエリ結果を削除します。

jiaowu_school/_delete_by_query
{
    "query": {
        "match_all": {}
    }
}

または、クエリの結果を更新します

これらは、私が日常の開発でよく使用する2つのAPIです。これらの2つのAPIは、ここのScriptキーワードに対応しています。

スクリプトモジュールにはコンテキストの概念があります。これは、操作を実行する前に習得した情報として簡単に理解できます。

スクリプトの詳細な紹介については、別の記事を開いて紹介することができます。これは開始に関するものなので、過度に紹介することはできません。

解析後にメモリに入れる

public final Map<String, ScriptEngine> engines;
public final Map<String, ScriptContext<?>> contexts;

次は分析プラグインAnalysisPluginです

セグメント化の方法、フィルタリングの方法などのトークナイザーに関連するのは、このステップの登録に関連する

次のステップは、設定をモジュールにカプセル化することです。これには、クラスターの組み込みパラメーターなどが含まれ、すべてSettingsModuleオブジェクトにカプセル化されます。 

public SettingsModule(
            Settings settings,
            List<Setting<?>> additionalSettings,
            List<String> settingsFilter,
            Set<SettingUpgrader<?>> settingUpgraders) {
        this(
            settings,
            additionalSettings,
            settingsFilter,
            settingUpgraders,
            ClusterSettings.BUILT_IN_CLUSTER_SETTINGS,
            IndexScopedSettings.BUILT_IN_INDEX_SETTINGS);
    }

NetworkServiceも作成されています。作成時に、ユーザーがホストアドレスの取得方法を定義したかどうかの設定により判断されます。デフォルトでは、自分で定義するためのインターフェイスを実装してはなりません

次のステップは、プラグインのクラスター管理動作に関連するプラグインを見つけることです。これらのプラグインはすべて、ClusterPluginインターフェースを実装します。

デフォルトでは4

これまで、クラスター構成、クラスター名、およびスレッドプールを使用して、クラスター管理用にClusterServiceオブジェクトをカプセル化できます。クラスターのステータスを認識し、次のようなクラスターのイベントを監視するリスナーを追加する必要があります。ローカルノードがマスターノードになるか、マスターノードではなくなります

クラスターの操作中の一部の情報の統計もClusterInfoServiceオブジェクトをカプセル化しますが、これは主に静的な結果です。

フレームワークとして、esはいくつかの情報を監視し、監視サービスを具体的にカプセル化する必要があります。主に監視されるリソースは何ですか。

public MonitorService(Settings settings, NodeEnvironment nodeEnvironment, ThreadPool threadPool) throws IOException {
        this.jvmGcMonitorService = new JvmGcMonitorService(settings, threadPool);
        this.osService = new OsService(settings);
        this.processService = new ProcessService(settings);
        this.jvmService = new JvmService(settings);
        this.fsService = new FsService(settings, nodeEnvironment);
    }

Jvmガベージコレクションの状況、オペレーティングシステムの基本項目、プロセス情報、jvm情報、ファイルシステム情報

すべて1sビット単位で収集されます

3.重要なモジュールの分析

次に、ClusterModuleがカプセル化され、クラスターに関連する構成とサービスがここで処理されます。これは、クラスター全体に影響します。つまり、上記のClusterInfoServiceもClusterModuleの一部です。そして、上記のオブジェクトの多くがClusterModuleの準備のために作成されていることがわかります。

オブジェクトを作成するとき、この環境では、上記で作成したオブジェクトを使用するだけでなく、さまざまなAllocationDecidersのコレクションである組み込みの決定者コレクションもシステムに作成されます。現在、何を割り当てるかはわかりませんが、これらのAllocationDecidersは、それぞれのシナリオにおけるいくつかのルールとして理解でき、これらのルールが満たされた場合にのみ再割り当てできます。次に、フラグメント化された割り当てが作成され、最後にディサイダーセットとフラグメント化された割り当てが管理のためにAllocationServiceに統合されます。

次のステップは、IndexesModuleの分析です。

インデックスを扱うときは、マッピング関連の問題に対処する必要があります。IndicatorsModuleを作成するときに最初に行うことは、組み込みのマッパーを取得することです。現在、25種類あります。

ディスクからロードされたMapperPluginは、既存の25個のMapperPluginと同じにすることはできず、最終的なマッパーにも配置される必要があります。

メタデータマッパーとはどういう意味ですか?示されているように

これらの2つのマッパーは、インデックスモジュールの最も重要なコンテンツです。

おすすめ

転載: blog.csdn.net/weixin_39394909/article/details/108352914