前言
在企業系統架構中,使用到了分佈式文檔搜索引擎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 |
版權聲明: | 本文爲博主原創文章,請在轉載時務必註明博文出處! |