2013-06-18 47 views
0

構建一個應用程序。現在我們有一臺Solr服務器。但是我們希望設計這款應用程序,以便在未來超過索引需求時能夠支持多個Solr分片。建設支持未來的Solr分片

在開發可支持未來多個分片的應用程序時,要記住哪些關鍵因素?

我們將solr URL/solr /存儲在數據庫中。它用於對solr執行查詢。有一個用於更新的URL和一個用於在數據庫中搜索的URL

如果我們在將來的日期向solr環境添加碎片,使用碎片的過程與更新DB中的URL一樣簡單嗎?還是還有其他的事情需要更新。我們正在使用SolrJ

在DB改變SolrSearchBaseURL到:

https://solr2/solr/select?shards=solr1/solr,solr2/solr&indent=true&q={search_query} 

而在DB更新SolrUpdateBaseURL到

https://solr2/solr/ 

回答

1

基本上,您所描述的內容已經在SolrCloud中實現。那裏的ZooKeeper維護你的搜索集羣的狀態(在哪些集合,分片複製品,領導者和從屬節點等中分割)。它可以通過使用散列來處理索引和查詢方面的負載。

原則上,您可以通過(至少在集羣增長開始時)獲得您開發的系統。但考慮複製,添加負載平衡器,外部緩存服務器(例如清漆):從長遠來看,您最終會自行實施像SolrCloud這樣的無用功能。

話雖如此,使用基於散列的索引和搜索有一些注意事項。如果你想在這一點上實現對你數據的邏輯分區(比如說按日期),那麼沒有辦法做到這一點,但是要製作一個自定義代碼。儘管如此,還是有一些工作可以預測。