1. 程式人生 > 其它 >Es的分散式架構原理(es是如何實現分散式的)

Es的分散式架構原理(es是如何實現分散式的)

1、倒排索引:Lucene檢索庫

2、基於Lucerne 的分散式搜尋引擎elasticSearch

核心思想就是在多臺機器上啟動多個es程序例項,組成一個es叢集。

(1)搞一個索引(索引是es儲存資料的基本單位,建立索引的時候可以設定分片的數量),將索引拆分成多個shard分片,每個shard儲存部分資料:

Index-> type -> mapping -> document -> field

index相當於mysql的一張表

type不能跟mysql做對比,一個索引裡有多個type,每個type欄位差不多,有一些略微差別。比如訂單索引下有兩個type,一個對應的是實物商品訂單,一個是虛擬商品訂單

mapping:每個type有一個mapping,代表type的表結構定義,每個欄位名稱、型別等

document:相當於mysql中表的一行,往index的一個type裡寫的一條資料,就是一個document

field:每個document有多個field,代表了document中一個欄位的值

(2)每個shard資料都有多個備份,即每個shard有一個primary shard負責寫入資料,還有幾個replica shard將資料同步過來。

(3)通過這個replica方案,每個shard都有多個備份,若某個機器宕機了,資料副本在其他機器上有備份,實現了高可用

(4)叢集的多個節點,會自動選舉一個節點為master節點,負責比如維護索引元資料,負責切換primary shard 和replica shard身份,若master節點宕機了,es會從剩下的節點中選舉出新的master節點,且新節點上若有宕機節點上的shard的replica,則這個replica會變成該shard的新primary shard。當下次宕機的節點恢復了,那舊的master節點會被取消掉,且將原shard的primary shard標記成replica shard

備註:replica副本思想可以跟Kafka類比,差不多的意思。