クライアントに Solr を実装する予定です。.Net/SQL Server ベースの製品があります。DB が非常に大きくなったため、Solr を使用してクエリのパフォーマンス (オートコンプリート、選択リスト、グリッド検索など) を改善することにしました。大規模な IIS ボックス (クライアントによって異なります。一般的な構成には 16 コア、96 GB RAM などが含まれます) がありますが、ネットワークは低速です。DB は約 100 GB です。だから私はこの構成について考えています:
IIS と一緒に solr をホストする - IIS を実際に使い果たしておらず、ネットワークが遅いため、同じボックスでホストしたいと考えています。
Solr はデフォルトのコンテナー (Jetty) でホストされ、(IIS からの) ローカルホスト接続のみを受け入れることで保護されます。この作品の管理オーバーヘッドを最小限に抑えたい。
純粋なインデックス作成用の専用マスター コアと、純粋なクエリ用の複数のレプリケートされたスレーブ コア (10 の場合もあります) を用意します。すべてのインデックス データは SSD に存在できます。
今私の質問は次のとおりです。
負荷分散はどのように処理すればよいですか? solrcloud は自動的にそれを行いますか? (私が見た例(以下)は「シャーディング」と言っています-シャーディングは本当に必要ありません。)本番環境でアルファを使用しても大丈夫ですか?(100 の異なるクライアントと、対応する n/w、h/w 構成があります)
コードからコミットとレプリケーションを処理する必要がありますか、それとも solr に処理させるべきですか?
レプリケーションが発生した場合、リクエストを他のコアにルーティングするにはどうすればよいですか? (#1の一部としてカバー?)
レプリケーション中、マスター コアは以降の更新のためにロックアウトされますか? このケースをコードから処理する必要がありますか?
スレーブコアから「最後に更新された」データを引き出すことは可能ですか - 理想的には、ほぼリアルタイムの検索機能を使用したいのですが、solrcloud がうまくいかない場合は、このタイムスタンプを UI に表示して、ユーザーがデータがどの程度最新であるかを把握します。
http://wiki.apache.org/solr/SolrCloud/
クエリするシャードのアドレスを明示的に指定し、負荷分散とフェイルオーバーに使用される代替 (| で区切られた) を指定します。
シャード=localhost:8983/solr|localhost:8900/solr,localhost:7574/solr|localhost:7500/solr
どんな助けでも大歓迎です。
乾杯 !