SolrCloud分佈式企業搜索引擎架構原理解析

前言

在企業系統架構中,使用到了分佈式文檔搜索引擎Solr,這兒作一個簡單的知識整理。

 

SolrCloud分佈式企業搜索引擎架構原理解析

1、關於SolrCloud

Lucene 是一個Java語言編寫的利用倒排原理實現的文本檢索類庫;而Solr則是以Lucene爲核心來實現的企業級文本檢索應用服務。Solr 部署方式有單機方式、多機Master-Slaver方式、Cloud方式。

SolrCloud 則是 Solr4.x 版本以後加入的基於 Solr 和 Zookeeper 的分佈式搜索解決方案。SolrCloud 是 Solr 基於 Zookeeper 作爲集羣的配置信息中心的一種部署方式。Solr 可以以多種方式部署,例如:單機方式,多機Master-Slaver方式。

關於Zookeeper的原理及其優點,請參考【 Eureka 與 zookeeper 的區別、原理及各自優缺點

 

2、SolrCloud 特點

1)、集中式的配置

所有配置信息使用 Zookeeper 進行集中管理。啓動時可以指定把 Solr 的相關配置文件上傳 Zookeeper,跨主機共享。這些 Zookeeper 中的配置不會再拿到本地緩存,Solr 直接讀取 Zk 中的配置信息。配置文件的變動,所有機器都可以感知到。另外,Solr 的一些任務也是通過 Zk 作爲媒介發佈的。目的是爲了容錯。接收到任務,但在執行任務時崩潰的機器,在重啓後,或者集羣選出候選者時,可以再次執行這個未完成的任務。

2)、自動容錯(高可用)

SolrCloud 對索引進行分片,並對每個分片創建多個 Replication。每個 Replication 都可以對外提供服務。一個 Replication 掛掉不會影響整體的索引服務。更強大的是,它還能自動的在其它機器上幫你把失敗機器上的索引 Replication 重建並投入使用。

3)、實時性

近實時搜索立即推送式的 replication(也支持慢推送,可配置)。可以在秒內檢索到新加入索引。

4)、負載均很LB

查詢時自動負載均衡SolrCloud索引的多個Replication可以分佈在多臺機器上,均衡查詢壓力。如果查詢壓力大,可以通過擴展機器,增加Replication來減緩。

5)、自動分發

自動分發的索引和索引分片發送文檔到任何節點,它都會轉發到正確節點。

6)、日誌跟蹤

事務日誌事務日誌確保更新無丟失,即使文檔沒有索引到磁盤。

7)、RESTful API

強大的RESTful API通常你能想到的管理功能,都可以通過此API方式調用。這樣寫一些維護和管理腳本就方便多了。

8)、可視化操作

優秀的管理界面主要信息一目瞭然;可以清晰的以圖形化方式看到SolrCloud的部署分佈;當然還有不可或缺的Debug功能。

 

2、Solr集羣體系架構

物理結構層組成:

1)、Solr

三個 Solr 實例,每個實例包括兩個Core,組成一個SolrCloud(隨着業務流量的提升,靈活擴展Solr實列)。

2)、Core

每個 Core 是 Solr 實例中一個獨立的運行單位,提供文檔索引和搜索服務。

3)、Zookeeper

Zookeeper 在整個SolrCloud 集羣中扮演了分佈式鎖的角色,對SolrCloud是必須的。由Zookeeper來確定 Leader 選舉。Solr 可以以內嵌的 Zookeeper 運行,但是建議用獨立的,並且最好有3個以上的主機。
 

邏輯結構層組成:
1)、Collection

Collection 在 SolrCloud 集羣中是一個邏輯意義上的完整的索引結構。它常常被劃分爲一個或多個Shard(邏輯分片),它們使用相同的Config。如果Shard數超過一個,它就是分佈式索引,SolrCloud讓你通過Collection名稱引用它,而不需要關心分佈式檢索時需要使用的和Shard相關參數。

比如:針對商品信息搜索服務可以創建一個Collection:

 Collection = Shard-01 + Shard-02 + ... + Shard-N
2)、Shard

Collection 的邏輯分片。每個 Shard 被拆分成一個或者多個 replication,通過指定的某種選舉機制來確定哪個是Leader。一個 Shard 需要由一個 Core 或多個 Core 組成。而 Collection 則一般由多個 Core 組成。

3)、Master/Slave

Master:是 Master-Slave 結構中的主結點

Slave:是Master-slave結構中的從結點

在同一個 Shard 下 Master 和 Slave 存儲的數據是一致的,其目的爲實現服務的高可用(何爲高可用,就是在一個 Shard下,當 Master 節點掛掉後,某個 Slave 通過指定的選舉機制,頂上來成爲 Master,使服務正常運行,而不會出現服務訪問中斷的現象)。

 

 

 

 

參考文檔(老版本):【Solr4.10參考指南】<-這個版本已經在官方找不到了

參考文檔(新版本):【Solr8.1參考指南


 好了,關於 SolrCloud分佈式企業搜索引擎架構原理解析 就寫到這兒了,如果還有什麼疑問或遇到什麼問題歡迎掃碼提問,也可以給我留言哦,我會一一詳細的解答的。 
歇後語:“ 共同學習,共同進步 ”,也希望大家多多關注CSND的IT社區。


作       者: 華    仔
聯繫作者: [email protected]
來        源: CSDN (Chinese Software Developer Network)
原        文: https://blog.csdn.net/Hello_World_QWP/article/details/98726379
版權聲明: 本文爲博主原創文章,請在轉載時務必註明博文出處!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章