Elasticsearch 是一套分佈式的系統,分佈式是爲了應對大數據量
Elasticsearch 對複雜分佈式機智的透明隱藏特性
- 分片機制
- cluster discovery(集羣發現機制)
- shard 負載均衡
- shard 副本
Elasticsearch 垂直擴容和水平擴容
假設共有6臺服務器,每臺服務器1T容量。現在數據即將增加到8T,此時有下面量方案:
- 垂直擴容:重新購置兩臺服務器,每臺服務器的容量是2T,將老的兩臺服務器進行替換,那麼現在的6臺服務器的總容量爲:4 * 1T + 2 * 2T = 8T。採購更強大的服務器,成本非常高昂,而且會有瓶頸
- 水平擴容【推薦】:新購置兩臺服務器,每臺服務器的容量是1T,直接加入到集羣中,那麼現在的服務器總容量爲:8 * 1T = 8T。
增加或減少節點時數據會rebalance
es 會自動分配 shard,讓服務器承受的壓力和請求儘可能的均勻
master 節點
- 管理es集羣的元數據
- 索引的創建和刪除,維護索引的元數據
- 節點的增加和移除,管理集羣的元數據
- 默認情況下,會自動選取一臺節點,作爲master節點
節點平等的分佈式架構
- 節點對等:每個節點都能接收所有的請求
- 自動請求路由
- 相應收集
shard&replica機制總結
index
包含多個shard
- 每個
shard
都是一個最小工作單元,承載部分數據,每個shard
底層都是一個lucene
實例,有完整的建立索引和處理請求的能力 - 增減節點時,
shard
會自動在nodes
中負載均衡 primary shard
和replica shard
,每個document
肯定只存在於某一個primary shard
以及其對應的replica shard
中,不可能存在於多個primary shard
replica shard
是primary shard
的副本,負責容錯以及承擔讀請求負載primary shard
的數量在創建索引的時候就固定了,replica shard
的數量可以隨時修改primary shard
的默認數量是5,replica
的默認數量是1,默認有10個shard
,其中5個primary shard
,5個replica shard
primary shard
不能和自己的replica shard
放在同一個節點上(否則節點宕機,primary shard
和replica shard
數據都丟失了,起不到容錯的作用),但是可以和其他primary shard
的replica shard
放在同一個節點上