solrcloud replica collection core shard slice 概念讲解
2019獨角獸企業重金招聘Python工程師標準>>>
solr4.0 正式發布有一段時間了,目前是BETA版,從ALpha版到beta新增加了collection的概念,本文就Solr4.0中的多個索引相關概念再做詳細的說明。本文以beta版為基礎
solr4.0 的所以繼承Lucene的分段索引方式,采用了多shard的方式以提高在分布式云環境下的高性能要求的瓶頸。對于一個完整的文檔集,將被分布到多個shard中進行索引存儲,每個shard相對獨立,有自己獨立的indexwriter和searcher。shard是對完整文檔集索引 分片(塊)處理的體現,在solr的代碼里每個shard都有一個solrCore對其維護管理。所以core是從solr代碼的層面上講的,而shard是從索引數據的分割角度來講的。目前solr只允許一個core管理維護一個shard。
?? ? ?core 作為一個實例負責管理一個整個索引中的一個shard,對該shard進行索引的增刪查改(update)。core是solr對索引單元管理的最小單位。而一個shard也擁有完整的lucene索引文件結構。幾個shard的索引加在一起組成文檔集的所有索引。
?? ? slice 是一組具有相同數據的shard構成的集合。通常建議3個shard作為一個slice,其中3個shard數據完全相同,但分布在不同的服務器上,以起到互相備份的作用,最終實現容災和高可靠性的要求。如下圖,一個兩個服務器組成的solr 集群。該集群中只有一個collection(collection one),該collection中有兩個slice,每個slice由2個shard構成。slice的兩個shard分布在不同的服務器上以到達容災目的。
?? ?collection是一個邏輯的概念,用來組織多個slice。一個collection包含整個文檔集的索引數據(完整)。collection的作用是為了實現多租戶的功能。即多個用戶(公司)要在一個solr集群上索引各自的數據。這樣,各客戶間的數據不能交叉,因為A客戶的數據可能不希望讓B客戶訪問。為了邏輯上和物理上隔離客戶間的數據,產生了collection。一個collection索引并存放一個客戶的數據。在一個collection里面又有多個silce。多slice保證吞吐量的要求(每個slice都可以處理索引請求并提供search服務)。
?? ?replica是shard的備份,目前1個shard就是一個replica。所以我們可以說每個slice有多個shard構成或者說多個replica構成。其中slice中的replica又有不同的職責,其中有且僅有一個作為主要的服務者,我們稱其為leader replica 其他的備份的作為普通的replica。普通replica以 leader replica馬首是瞻,保持與leader replica的同步。即普通replica索引的數據不能多于leader replica的索引。leader replica索引的增減直接影響普通replica的索引增減,普通 replica 向leader replica看齊,保持一致。如果當前某個leader replica死掉,將引發新的選舉,產生新的leader replica,之后其他普通replica將向新的leader replica保持一致。
下面以一個具體部署的實例的admin工具看到的graph為例說明:
?? 該集群由3臺server組成。 只配置了1個collection(collection1),該collection 由 10 個slice組成。圖中?的shard1~10實際上應該稱作slice1~10 (該admin工具賦予的名稱容易誤導開發者)。而每個slice下面的每個圓圈表示一個replica,實心圓圈表示leader replica,空心為普通replica,灰色的圓圈表示死掉的replica(如服務器down掉)。 目前從圖上可以看出,每個slice由3個replica 構成。(同個slice中的3個replica的數據相同,保存在不同的服務器上,起到備份作用)。
?? ?從shard的角度講,1個replica里保存一份shard。1個slice中有一份唯一的shard(unique shard),但該shard有兩個備份,同 unique shard 內容相同。
?? 從core的角度講,每個replica又一個core維護管理。core負責處理索引請求和搜索請求,以及該replica的索引文件管理,如merge等。所以該例子中總共有30個core,30個replica(其中10個leader replica),10個slice。30個core平均分布在3太server上,每個server10個core。每個server為每個slice保存了一份replica。 每個slice都有3份replica分別在不同的3個server上(X.X.X.251-253)。
轉載于:https://my.oschina.net/cloudcoder/blog/338031
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的solrcloud replica collection core shard slice 概念讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 日常总结:自学操作系统基础的一些领悟
- 下一篇: mount挂载windows共享文件夹