剖析ElasticSearch基礎分散式架構

fallinjava發表於2019-03-06

ElasticSearch對複雜分散式機制的透明

前面已經介紹了ElasticSearch是一個分散式系統,分散式是為了應付大資料量。ElasticSearch它實現分散式的時候就已經將所有複雜的操作自己都實現了。比如:

分片機制

ElasticSearch的分片機制給我們帶來了什麼好處?當我們想要儲存一篇文件的時候不用去手動選擇應該將文件存到那個分片上面。

claster discovery 叢集發現機制

叢集發現機制, 它可以在我們有了多個elasticSearch節點的時候自動將我們的ElasticSearch組成一個叢集,不用我們去配置(前提是同一臺機器上, 不同的機器需要配置IP)

shard負載均衡

當我們有3個節點需要分配25個shard的時候,ElasticSearch會自動將這25個分片平均分配到每個節點上面

shard副本

當我們新增一個索引時,不需要去維護它的備份這些,ElasticSearch會自動幫我們完成這些複雜的操作。

請求路由

當我們想要獲取某條資料時,並不用管到底到那個分片或者節點上面去獲取,ElasticSearch會自動將我們的請求路由到有該資料的地方。

叢集擴容

當我們新啟動一個節點的時候會自動加入到當前已經有了的叢集裡。

shard重分配

當我們有有沒有分配的shard的時候,如果這個時候有了新的節點加入進來,那麼會自動分配該shard

ElasticSearch的垂直擴容和水平擴容

垂直擴容

我們現在有4臺伺服器,每臺伺服器的容量是1T,最多能夠儲存4T的資料

剖析ElasticSearch基礎分散式架構
現在的需求是要存6T資料,那麼我們如果採用垂直擴容的方案,升級其中兩臺伺服器的容量為2T,然後讓它加入叢集就可以實現了,這是垂直擴容的解決方案。
剖析ElasticSearch基礎分散式架構

水平擴容

水平擴容就是在原有的基礎上面直接加上兩臺新伺服器,容量是1T,那麼這個時候到底是使用水平擴容還是垂直擴容呢?一般情況是是採用水平擴容,因為水平擴容的價格更便宜。

剖析ElasticSearch基礎分散式架構

增加或減少節點時資料的自動rebalance

在ElasticSearch叢集中總有一些節點會負載要重一些,因為當我們的分片分配的時候可能不能平均分配,某些節點需要擔任更多的負載,比如我們有10個分片,但是有隻有3臺伺服器,那麼就會有一臺會多承擔負載,這個時候如果我們新增分片的時候,這個分片會自動分配到負載較輕的節點上面。

ElasitcSearch裡面的master節點

預設情況下ElasticSearch中的會選擇出一個master節點,這個master節點主要管理叢集的後設資料,比如說索引的建立和刪除,維護索引後設資料,節點的增加和移除,維護叢集的後設資料(後設資料是指index,type,id這三個後設資料)。

節點平等的分散式架構

在ElasticSearch中,所有的節點功能都是相同的也就是節點平等,都可以進行增刪改查,比如現在有4個節點,user資料儲存在節點1上面,我們可能直接訪問到節點1上面獲取資料,也可能是訪問到節點2上面,然後節點2去節點1上面拿資料,然後在從節點2返回回來。

相關文章