2

クライアントに Solr を実装する予定です。.Net/SQL Server ベースの製品があります。DB が非常に大きくなったため、Solr を使用してクエリのパフォーマンス (オートコンプリート、選択リスト、グリッド検索など) を改善することにしました。大規模な IIS ボックス (クライアントによって異なります。一般的な構成には 16 コア、96 GB RAM などが含まれます) がありますが、ネットワークは低速です。DB は約 100 GB です。だから私はこの構成について考えています:

IIS と一緒に solr をホストする - IIS を実際に使い果たしておらず、ネットワークが遅いため、同じボックスでホストしたいと考えています。

Solr はデフォルトのコンテナー (Jetty) でホストされ、(IIS からの) ローカルホスト接続のみを受け入れることで保護されます。この作品の管理オーバーヘッドを最小限に抑えたい。

純粋なインデックス作成用の専用マスター コアと、純粋なクエリ用の複数のレプリケートされたスレーブ コア (10 の場合もあります) を用意します。すべてのインデックス データは SSD に存在できます。

今私の質問は次のとおりです。

  1. 負荷分散はどのように処理すればよいですか? solrcloud は自動的にそれを行いますか? (私が見た例(以下)は「シャーディング」と言っています-シャーディングは本当に必要ありません。)本番環境でアルファを使用しても大丈夫ですか?(100 の異なるクライアントと、対応する n/w、h/w 構成があります)

  2. コードからコミットとレプリケーションを処理する必要がありますか、それとも solr に処理させるべきですか?

  3. レプリケーションが発生した場合、リクエストを他のコアにルーティングするにはどうすればよいですか? (#1の一部としてカバー?)

  4. レプリケーション中、マスター コアは以降の更新のためにロックアウトされますか? このケースをコードから処理する必要がありますか?

  5. スレーブコアから「最後に更新された」データを引き出すことは可能ですか - 理想的には、ほぼリアルタイムの検索機能を使用したいのですが、solrcloud がうまくいかない場合は、このタイムスタンプを UI に表示して、ユーザーがデータがどの程度最新であるかを把握します。

http://wiki.apache.org/solr/SolrCloud/

クエリするシャードのアドレスを明示的に指定し、負荷分散とフェイルオーバーに使用される代替 (| で区切られた) を指定します。

シャード=localhost:8983/solr|localhost:8900/solr,localhost:7574/solr|localhost:7500/solr

どんな助けでも大歓迎です。

乾杯 !

4

1 に答える 1

1

さらに調査を行ったところ、次のことがわかりました。

  1. 負荷分散をどのように処理すればよいですか: SolrCloud は自動的に処理します。クラスター内の任意のノード/コアにヒットするだけで、準備完了です。SolrCloud は Zoo Keeper の状態を保持するため、リクエストをルーティングする場所を認識します。

  2. コミット: 構成を通じて、1 秒間のソフト コミットと 10 分間のハード コミットを行う予定です。レプリケーション: 心配する必要はありません。新しいノード/コアがオンラインになると、Solrcloud は自動的にシャード (すべてのシャードがオンラインではない場合) またはレプリカとして割り当てます。

  3. 自動的に処理されます (#1)。

  4. Solr クラウドでは該当なし。書き込みと読み取りは、任意のインスタンス/コアに対して実行できますが、問題はありません。

  5. ほぼリアルタイムの検索を使用するので、これについて心配する必要はありません。誰かがそれに答えてくれてありがとう。

私の研究が誰かの役に立つことを願っています!

于 2012-08-14T23:28:15.170 に答える