1. 程式人生 > >Elasticsearch基礎分布式架構

Elasticsearch基礎分布式架構

size 系統 document shard 新的 replica 修改 mil dex

寫在前面的話:讀書破萬卷,編碼如有神
--------------------------------------------------------------------

參考內容:

  《Elasticsearch頂尖高手系列-快速入門篇》,中華石杉

--------------------------------------------------------------------

主要內容包括:

  • Elasticsearch對復雜分布式機制的透明隱藏特性
  • Elasticsearch的垂直擴容與水平擴容
  • 增加或減少節點時的數據rebalance
  • master節點
  • 節點平等的分布式架構
  • primary shard和replica shard機制再次梳理
  • 單node環境下創建index是什麽樣子的

--------------------------------------------------------------------

1、Elasticsearch對復雜分布式機制的透明隱藏特性

Elasticsearch是一套分布式系統,分布式是為了應對大數據量。

Elasticsearch隱藏了復雜的分布式機制:

  • 分片:我們之前隨隨便便就將一些document插入到es集群中去了,我們沒有關心過數據是如何進行分配的、數據到哪個shard中去了。
  • 集群發現機制(cluster discovery):如果啟動一個新的es進程,那麽這個es進程會作為一個node並且發現es集群,然後自動加入進去。
  • shard負載均衡:舉例,假設現在有3個節點,總共有25個shard要分配到3個節點上去,es會自動進行均分分配,以保證每個節點的均衡的讀寫負載請求
  • shard副本
  • 請求路由
  • 集群擴容
  • shard重分配

--------------------------------------------------------------------
2、Elasticsearch的垂直擴容與水平擴容

擴容方案:

  6臺服務器,每臺容納1T的數據,馬上數據量要增長到8T,這個時候有兩個方案。

(1)垂直擴容:重新購置兩臺服務器,每臺服務器的容量就是2T,替換掉老的兩臺服務器,那麽現在6臺服務器的總容量就是 4 * 1T + 2 * 2T = 8T。

(2)水平擴容:新購置兩臺服務器,每臺服務器的容量就是1T,直接加入到集群中去,那麽現在服務器的總容量就是8 * 1T = 8T

垂直擴容:采購更強大的服務器 ,成本非常高昂,而且會有瓶頸,假設世界上最強大的服務器容量就是10T,但是當你的總數量達到5000T的時候,你要采購多少臺最強大的服務器啊。

水平擴容:業界經常采用的方案,采購越來越多的普通服務器,性能比較一般,但是很多普通服務器組織在一起,就能構成強大的計算和存儲能力。

--------------------------------------------------------------------
3、增加或減少節點時的數據rebalance

比如現在有4個node,其中3個node中有一個shard,1個node中有2個shard,但是這個時候如果有一個新的node加入進來,則es會自動把其中一個shard分配到剛加入的node上去。

--------------------------------------------------------------------
4、master節點

一個es集群中總會有一個node是master節點:

  • 管理es集群的元數據:比如說索引的創建和刪除、維護索引元數據;節點的增加和移除、維護集群的數據
  • 默認情況下,會自動選擇出一臺節點作為master節點
  • master節點不承載所有的請求,所以不會是單點瓶頸

--------------------------------------------------------------------
5、節點平等的分布式架構

(1)節點對等,每個節點都能接收所有的請求

(2)自動請求路由:任何一個節點接收到請求後,都可以把這個請求自動路由到相關節點上去處理該請求。

(3)響應收集:最原始節點會從其他節點接收響應數據,然後把這些數據返回給客戶端。

--------------------------------------------------------------------

6、primary shard 和 replica shard機制再次梳理

(1)一個索引(index)包含多個shard

技術分享圖片

(2)每個shard都是一個最小工作單元,承載部分數據,lucene實例,完整的建立索引和處理請求的能力。

技術分享圖片

(3)增減節點時,shard會自動在nodes中負載均衡。

技術分享圖片

(4)primary shard和replica shard,每個document肯定只存在於某一個primary shard以及其對應的replica shrad中,不可能存在於多個primary shard。

(5)replica shard是primary shard的副本,負責容錯,以及承擔讀請求負載。

(6)primary shard的數量在創建索引的時候就固定了,replica shard的數量可以隨時修改。

(7)primary shard的默認數量是5,replica shrad默認數量是1。

(8)primary shard不能和自己的replica shard放在同一個節點上(否則節點宕機時,primary shard和replica shard都丟失了,起不到容錯的作用。),但是可以和其它primary shard的replica shard放在同一個節點上。

--------------------------------------------------------------------

7、單node環境下創建index是什麽樣子的

(1)單node環境下,創建一個index: 有3個primary shard、3個replica shard

(2)集群狀態是yellow

(3)這個時候,只會將3個primary shard分配到僅有的一個node上去,另外3個replica shard是無法分配的

(4)集群可以正常工作,但是一旦出現節點宕機,數據全部丟失,而且集群不可用,無法承擔任何請求

技術分享圖片

Elasticsearch基礎分布式架構