1

私は現在、当社の GSA システムを置き換えるために Solr を実装しており、実装の途中です。クライアント アクセス コードに SolrNet を使用して、C# 経由で Solr とやり取りしています。

現在、私は wiki に従って、Solr 構成を .xml 経由でインスタンス化していますStartup.Init<XosContentDocument>("http://localhost:8080/solr/xosContent");。次に、solr コレクションを取得します。ServiceLocator.Current.GetInstance<ISolrOperations<XosContentDocument>>();

これは今のところ機能します (そして、はい、URL を構成設定に移動するので、コードに直接ではありません) が、冗長性を追加するとこれがどのように機能するかについて混乱しています。

私の計画は、2 つの Solr インスタンスを起動することです。1 つはマスターで、2 つ目はスレーブで、内部的にアクセス可能なドメイン名 (例: solr.internal.whatever.com) を読み取り要求のために 2 つの間で負荷分散します。ただし、Solr のレプリケーションの調査に関する私の理解では、スレーブへの書き込みは後続のレプリケーションで破棄されるため、マスターに対してのみ書き込みを行う必要があります。

ISolrOperations<XosContentDocument>>したがって、クエリ ロード バランサーのアドレスを指す 1 つと、マスター solr インスタンスのアドレスを直接指す2 つのインスタンスが本当に必要です。を初期化して取得するために私が見た唯一の方法ISolrOperations<T>は を使用することなStartup.Init<T>(); ServiceLocator.Current.GetInstance<ISolrOperations<T>>ので、この二重の性質をどのように達成するのですか?

4

1 に答える 1

0

マスター/スレーブ環境で SolrNet を利用するプロセスは、マルチコア環境で使用されるプロセスと同じです。ここで詳細を読むことができます: https://code.google.com/p/solrnet/wiki/MultiCoreAccess

私がより正確に行った方法は、コアがインデックス作成のためにマスターを指し、もう一方がクエリのために別のスレーブを指すようにすることです。

于 2013-07-10T14:51:22.753 に答える