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