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