ES 架構原理


ES 架構原理


一、簡介

Elasticsearch是一個分布式的搜索和分析引擎,可以用於全文檢索、結構化檢索和分析,並能將這三者結合起來。Elasticsearch基於Lucene開發,現在是使用最廣的開源搜索引擎之一。Elasticsearch可以應用於在/離線日志流水、用戶標簽畫像、數據庫二級緩存、安全風控行為數據、圖數據庫索引、監控數據、Wiki文檔檢索等應用場景。


二、架構

Elasticsearch 架構原理和網易雲NES 最佳實踐— langrx

 

master node:負責 es 集群的節點發現和元數據管理

master-eligible node:有資格競選 Master 的節點,一般奇數個

data node:存儲數據

coordinating node:復制處理客戶端請求的協調節點

ingest node:對索引文檔做預處理工作的節點

 

shard:數據以shard為單位保存到data node中

primary/replica shard:每個shard可配置一個或多個replica 副本,primary shard會把請求復制到replica shard上

 

index:存儲數據的基本單位,一個索引相當於一個庫

type:每個index有一個或多個type,一個type相當於一張表;mapping相當於表結構定義

document:往一個index的一個type添加的一行數據稱為document,每個document有多個field,每個field代表document的一個字段值


三、讀寫原理

es寫入數據的過程

  1. 客戶端選擇一個node發送請求過去,這個node就是coordinating node (協調節點)

  2. coordinating node,對document進行路由,將請求轉發給對應的node

  3. 實際上的node上的primary shard處理請求,然后將數據同步到replica node

  4. coordinating node,如果發現primary node和所有的replica node都搞定之后,就會返回請求到客戶端

es讀數據過程

查詢,GET某一條的數據,寫入某個document,這個document會自動給你分配一個全局的唯一ID,同時跟住這個ID進行hash路由到對應的primary shard上面去,當然也可以手動的設置ID

  1. 客戶端發送任何一個請求到任意一個node,成為coordinate node

  2. coordinate node 對document進行路由,將請求轉發到對應的node,此時會使用round-robin隨機輪訓算法,在primary shard 以及所有的replica中隨機選擇一個,讓讀請求負載均衡,

  3. 接受請求的node,返回document給coordinate note

  4. coordinate node返回給客戶端

es搜索數據過程

  1. 客戶端發送一個請求給coordinate node

  2. 協調節點將搜索的請求轉發給所有的shard對應的primary shard 或replica shard

  3. query phase:每一個shard 將自己搜索的結果(其實也就是一些唯一標識),返回給協調節點,有協調節點進行數據的合並,排序,分頁等操作,產出最后的結果

  4. fetch phase ,接着由協調節點,根據唯一標識去各個節點進行拉去數據,最總返回給客戶端


參考

https://mp.weixin.qq.com/s/0LU1cK9_fmzNUBRa3V5rdg

https://niceaz.com/2018/12/09/elasticsearch-architecture/

https://segmentfault.com/a/1190000015256970


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM