Posted on 十二月 27, 2012 in: Solr入門|評論關閉spa
首先咱們初步理解一下概念翻譯
SolrCloud模式下有 Cluster,Node,Collection,Shard,LeaderCore,ReplicationCore幾個概念,這裏我引用一下同事對官方概念的翻譯:
* Cluster羣集:羣集是一組做爲一個單元管理的Solr節點。整個羣集必須使用同一套schema和solrconfigblog
* Node節點:一個運行Solr的JVM實例接口
* Shard碎片:一個分區經過指定的複製因子(replication factor)被存儲在多個節點上。全部這些節點共同造成一個碎片。一個節點可能由多個碎片組成。get
* Leader負責人:每一個碎片(shard)都有一個節點標識做爲它的領導。全部的寫操做通過領導節點寫入指定的分區。it
* Replication Factor複製因子的最少數量的文件的副本羣集維護io
補充說一下:入門
Collectionast
這裏沒有說Collection是什麼意思,我就用本身的理解給你們說明, Collection英文直譯是集合的意思,在SolrCloud模式下Collection是訪問Cluster的入口。這個入口有什麼用呢?好比說集羣裏面有好多臺機器,那麼訪問這個集羣經過哪一個地址呢,必須有一個接口地址,Collection就是這個接口地址。所以可見Collection是一個邏輯存在的東西,所以是能夠跨Node的,在任意節點上均可以訪問Collection。集羣
Shard
Shard其實也是一個邏輯存在的東西,所以Shard也是能夠跨Node的;
1個Shard下面能且只能包含一個Leader
1個Shard下面能夠包含0個或者多個Replication
若是Shard下面的Leader掛掉了,會從Replication裏面選舉一個Leader。在Solr4.0這個版本這部分實現有很多問題:
Solr4.0的AdminGUI裏面能夠增長和刪除Core,若是Shard裏最後一個Core被刪除了,Shard不會自動刪除掉,會致使集羣出錯,咱們fix了這部分代碼;
Shard裏面全部的Core宕機了,會致使不能繼續插入新的記錄,查詢不受影響,我的認爲應該能夠插入到其它存活的Shard裏面,所以咱們fix了這部分代碼;
SolrCloud的工做模式
在SolrCloud模式下,同一個集羣裏全部Core的配置是統一的,Core有leader和replication兩種角色,每一個Core必定屬於一個Shard,Core在Shard中扮演Leader仍是replication由Solr內部自動協調,目前沒有找到人工干預的方法,也不須要干預,由於訪問SolrCloud的過程:Solrj向Zookeeper諮詢Collection的地址,Zookeeper返回存活的節點地址供訪問,插入數據的時候由SolrCloud內部協調數據分發(內部使用一致性哈希)。
MultiCore的工做模式
MulitCore模式下各Core之間是相互獨立的,同一個Jvm下能夠同時運行多個有不一樣配置的Core。固然在這種模式下,也能夠經過參數同時訪問多個Core,能夠經過配置實現master->replication主從模式的複製,不過這些都須要本身編寫的JavaApp來完成。