SolrCloud相關概念和兩種路由演算法介紹

chenfeng發表於2018-01-02
core:在Solr單機環境中,core本質上就是單個index。若需有多個index,那必須建立多個core。在SolrCloud環境中,單個index可以橫跨多個Solr例項,這意味著單個index是由不同機器上的多個cores組成。
collection:由core組成的邏輯index叫做collection,一個collection是跨越多個cores的index,這使index可擴充套件並冗餘備份。
shard:在SolrCloud中可以有多個collections。Collections可被分片,每個分片可有多個副本(Replica),同一副本下的相同分片稱為shards。每個shards下的有一個分片為leader,該leader透過選舉策略產生。
node:SolrCloud中,node是執行Solr的Java虛擬機器例項,也就是Server(例如Tomcat、Jetty)。
理解core和collection的區別非常重要。在傳統的單node solr中,core和collection的概念等同,都代表一個邏輯index。在SolrCloud中,多個nodes下的cores形成一個collection。

SolrCloud中,提供了兩種路由演算法:
compositeIdimplicit 在建立Collection時,需要透過router.name指定路由策略,預設為compositeId路由。
 

compositeId

該路由為一致性雜湊路由,shards的雜湊範圍從80000000~7fffffff。初始建立collection是必須指定numShards個數,compositeId路由演算法根據numShards的個數,計算出每個shard的雜湊範圍,因此路由策略不可以擴充套件shard。
implicit

該路由方式指定索引具體落在路由到哪個Shard,這與compositeId路由方式索引可均勻分佈在每個shard上不同。同時只有在implicit路由策略下才可建立shard。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2149591/,如需轉載,請註明出處,否則將追究法律責任。

相關文章