W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在SolrCloud集群中,每個(gè)單獨(dú)的節(jié)點(diǎn)負(fù)載平衡在集合中的所有副本之間平衡讀取請求。您仍然需要一個(gè)與集群交談的“外部”負(fù)載平衡器,或者您需要一個(gè)智能客戶端,了解如何讀取ZooKeeper中的Solr元數(shù)據(jù)并與其交互,并只請求ZooKeeper集合的地址開始發(fā)現(xiàn)它應(yīng)該到達(dá)哪個(gè)節(jié)點(diǎn)發(fā)送請求。(Solr提供了一個(gè)稱為CloudSolrClient的智能Java SolrJ客戶端。)
即使在集群中的某些節(jié)點(diǎn)處于離線狀態(tài)或無法訪問,Solr 節(jié)點(diǎn)也能夠正確響應(yīng)搜索請求,只要它可以與每一個(gè)碎片的至少一個(gè)副本進(jìn)行通信,或每個(gè)相關(guān)碎片的一個(gè)副本,如果用戶碎片通過shards或_route_參數(shù)限制搜索。每個(gè)分片越多的副本,Solr集群就越有可能在發(fā)生節(jié)點(diǎn)故障時(shí)處理搜索結(jié)果。
只要Solr節(jié)點(diǎn)能夠與所知道的每個(gè)碎片的至少一個(gè)副本進(jìn)行通信,就會(huì)返回搜索請求的結(jié)果,即使它在收到請求時(shí)不能與ZooKeeper進(jìn)行通信。從容錯(cuò)的角度來看,這通常是首選的行為,但如果對該節(jié)點(diǎn)尚未通過ZooKeeper通知的集合結(jié)構(gòu)有重大更改,則可能會(huì)導(dǎo)致過時(shí)或不正確的結(jié)果(即碎片可能已被添加或刪除,或分割成分片)
每個(gè)搜索響應(yīng)中都包含一個(gè)zkConnected標(biāo)題,指示處理請求的節(jié)點(diǎn)是否與ZooKeeper在以下時(shí)間連接:
Solr響應(yīng)與部分結(jié)果
{
"responseHeader": {
"status": 0,
"zkConnected": true,
"QTime": 20,
"params": {
"q": "*:*"
}
},
"response": {
"numFound": 107,
"start": 0,
"docs": [ "..." ]
}
}
如果查詢的一個(gè)或多個(gè)碎片完全不可用,則Solr的默認(rèn)行為是使請求失敗。但是,有很多用例可以接受部分結(jié)果,所以Solr提供了一個(gè)布爾shards.tolerant參數(shù)(默認(rèn)值false)。
如果shards.tolerant=true,那么部分結(jié)果可能會(huì)被返回。如果返回的響應(yīng)不包含所有合適的碎片的結(jié)果,那么響應(yīng)頭部包含一個(gè)稱為partialResults的特殊的調(diào)用標(biāo)志。
客戶端可以指定shards.info以及shards.tolerant參數(shù)以檢索更多 fine-grained 的詳細(xì)信息。
將partialResults標(biāo)志設(shè)置為“true”的示例響應(yīng):
Solr響應(yīng)與部分結(jié)果:
{
"responseHeader": {
"status": 0,
"zkConnected": true,
"partialResults": true,
"QTime": 20,
"params": {
"q": "*:*"
}
},
"response": {
"numFound": 77,
"start": 0,
"docs": [ "..." ]
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: