2012-11-29 52 views
2

我們有一個產品(我們稱之爲「PROD1」),我們要「整合」與其他產品(姑且稱之爲「Prod2的」),在「整合」意味着,PROD1 + Prod2的會「prod3」。 我們還有一些計劃將更多「產品」添加到prod3中。關於Solr的拆分問題

到目前爲止這麼好。

我們使用Solr的用於在這兩個產品的用戶提供搜索和索引都可能是非常,非常大,收到了很多電話/秒。如果我們把所有東西放在一臺服務器上,吞吐量就會成爲一個垃圾。

所以,我們想使用分片(我相信這是正確的術語,對不起,如果我錯了),但是,我有一些關於它的問題:

  1. 是否有可能分裂由「單產品指數 - 每臺機器」或類似的指數?如果是的話,你如何建議我這樣做?

  2. 如果(問題1 == true)那麼讓我們假設prod1索引將是machine1,prod2索引machine2可以在machine1和2中同時搜索結果和分數,偏移量等,以「簡單」和正確的方式?

  3. 我讀一些有關複製的因素,但我認爲我不明白它的權利。它的目的究竟是什麼?

  4. 我不確定在這裏是否使用了正確的術語,因此,也許有人可以澄清究竟是核心,碎片等等。這種「簡單」的懷疑在我的團隊中產生了很多誤解。

現在,這是問題。也許我會稍後再編輯它並添加更多內容。

在此先感謝。

回答

8

要回答爲了您的問題:

  1. 它是由你來定義您要如何分配你的文件。您可以選擇要將文檔編入索引的服務器,並且如果您決定爲一個產品索引編制索引,服務器,這是您的決定(根據文檔來源於哪個產品,選擇用於索引的服務器)。

  2. 是的。發送到Solr的查詢字符串的分片= -parameter指示應搜索哪些服務器併合併爲一個響應。只要你不看高進入的偏移量作爲一個可能的問題,這不應該是一個問題(高offets在於Solr的有檢索最多(偏移)從每個服務器文件的問題,要能對所有碎片進行評分)。

    碎片= server1的:8080/solr的/ corename,服務器2:8080/solr的/ corename

  3. 複製因子是相關SolrCloud,這隱藏了一些上工分片的複雜性(而且也引入了一些) 。使用SolrCloud Solr將確定自己使用哪些節點進行存儲,並且複製因子會告訴Solr您想要將文檔存儲在多少臺服務器上。如果您的複製因子爲三,則至少有三臺服務器在文檔無法訪問之前必須失敗。如果你正在進行手動分片,你必須自己設置複製,並且知道什麼服務器是備份服務器,就像你使用常規的Solr設置一樣。

  4. Shard =只保留索引中所有文檔的子集的服務器,core =一個服務器上的一個索引 - 服務器可能包含多個核心,其中每個核心都是一組獨立的配置和模式在每個Solr實例中只能有一個核心 - Solr只有一個索引,僅此而已)。 SolrCloud首次與Solr 4.0發佈,並開始獲得一些牽引力。

Solr Wiki是一個開始挖掘關於這些概念的更多信息的好地方。

+0

謝謝,它闡明瞭我的想法很多關於solr/solrcloud的概念。 – caarlos0

+0

最後一個問題:讓我們假設我有4臺具有相同數據的服務器,其中一臺我實際上執行搜索查詢?另外,我必須在搜索之前每次檢查它的時間?你的建議是什麼? – caarlos0

+0

如果您有四臺服務器具有相同的數據,只需隨機選擇一臺服務器(或更好),請使用負載平衡器。負載平衡器將移除停止的節點,並定期重試它們以查看它是否回來。我們在apache中使用mod_jk和tomcat,並在後端節點上使用solr。 – MatsLindh