ESインスタンスのクラスターに複数のノードを含めることができるという点で、Elastic Searchは分散トポロジでデプロイされることになっています。
私はAPIが好きで、有望に見えます。しかし、Elastic Searchが分散コンピューティングにおけるいくつかの標準的な問題をどのように解決するのでしょうか。私の「建築」の質問は、私が製品の使用に専念すべきかどうかを理解しようとすることに動機づけられています。
メンバーシップの問題を検討してください。クラスターにノードを追加した場合、Elastic Searchクラスターはそのノードを追加したいことをどのようにして知りたいですか?または、ノードがダウンした場合(またはノードが含まれているデータセンターへのネットワーク)が不安定になりすぎた場合Amazon Dynamoのようなゴシッププロトコルを使用していますか?
コンセンサスの問題を考えてみます。私がPOSTドキュメントをクラスタの1つのノードに送ると、変更は他のノードにどのように伝達されますか?もちろん、ドキュメントにインデックスを付ける必要があることを理解しています。そのため、検索クエリがすぐにそれを見つけることは期待できません。ESはPaxos
アルゴリズムを使用していますか?Raft
アルゴリズム?
オンラインには信じられないほどの詳細情報はありません Elasticsearch:The Definitive Guide ですが、次の点については十分です。
大規模なクラスターのスプリットブレインの問題、いわゆるdiscovery.zen.*
パラメーターを減らすために、サーバー構成に適用できるいくつかの微調整もあります。
ESの内部の仕組みやアルゴリズムについてはそれほど多くの情報はありませんが、評価中に見つけたのはサーバーのセットアップに関するリファレンスドキュメントでした。
特に、ESの良い点は、インストールのelasticsearch.yml
ディレクトリにある単一のファイル./config
を介してほとんどすべてのサーバー構成が行われることです。
それで、私は セットアップ構成 から始めて、あなたのインストールで実際の.ymlを開き続けます。それは本当によくコメントされており、多くのこと(スプリットブレインの問題を解決するために使用される「zen」パラメーターを含む)とWebページへのクロスリンクについて説明しています。