分布式搜索服務ElasticSearch(7)
Gateway層:代表elasticsearch索引快照的存儲方式,ElasticSearch默認是先把索引存放到內存中,當內存滿了時再持久化到本地硬盤。gateway對索引快照進行存儲,當ElasticSearch集群關閉再重新啟動時就會從gateway中讀取索引備份數據。ElasticSearch支持多種類型的gateway,有本地文件系統(默認),分布式文件系統,Hadoop的HDFS和amazon的s3云存儲服務。
Distributed Lucene Directory層:Gateway上層就是一個lucene的分布式框架,lucene是做檢索的,但是它是一個單機的搜索引擎,像這種ElasticSearch分布式搜索引擎系統,雖然底層用lucene,但是需要在每個節點上都運行lucene進行相應的索引、查詢以及更新,所以需要做成一個分布式的運行框架來滿足業務的需要。
ElasticSearch 四大模塊:
(1)Index Module是索引模塊,對數據建立索引也就是通常所說的建立一些倒排索引等;
(2)Search Module是搜索模塊,就是對數據進行查詢搜索;
(3)Mapping模塊是數據映射與解析模塊,就是數據的每個字段根據建立的表結構通過mapping進行映射解析,如果沒有建立表結構,ElasticSearch就會根據數據類型推測數據結構之后自己生成一個mapping,然后根據這個mapping進行數據解析;
(4)River模塊代表ElasticSearch的一個數據源,也是其它存儲方式(如:數據庫, 官方的river有couchDB、RabbitMQ、Twitter、Wikipedia等)同步數據到ElasticSearch的一個方法。它是以插件方式存在的一個ElasticSearch服務,通過讀取river中的數據并把它索引到ElasticSearch中。
Discovery層:該模塊主要負責集群中節點的自動發現和Master節點的選舉。節點之間使用p2p的方式進行直接通信,不存在單點故障的問題。ElasticSearch中,Master節點維護集群的全局狀態,比如節點加入和離開時進行shard的重新分配。
Script層:ElasticSearch查詢可以支撐多種script(即腳本語言),包括 mvel、js、python等。
Transport層:代表ElasticSearch內部節點或集群與客戶端的交互方式,默認內部是使用TCP協議進行交互,同時它支持http協議(json格式)、thrift、servlet、memcached、zeroMQ等的傳輸協議(通過插件方式集成)。
Restful接口層:最上層是ElasticSearch暴露給我們的訪問接口,官方推薦的方案就是Restful接口,直接發送http請求,方便后續使用nginx做代理、分發包括可能后續會做權限的管理,通過http很容易做這方面的管理。
Elasticsearch 分布式
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。