1. 程式人生 > >第四篇 elasticsearch的基本分散式架構

第四篇 elasticsearch的基本分散式架構

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

Elasticsearch是一套分散式的系統,分散式是為了應對大資料量,它很好的隱藏了複雜的分散式機制:

  • shard分片機制
    我們可以隨隨便便就將一些document插入到es叢集中去,而且不用關心資料怎麼進行分片的,資料到哪個shard中去。
  • cluster discovery叢集發現機制
    舉例:我們之前在做那個叢集status從yellow轉green的實驗裡,直接啟動了第二個es程序,那個程序作為一個node自動就發現了叢集,並且加入了進去,還接受了部分資料,replica shard
  • shard負載均衡
    舉例:假設現在有3個節點,總共有25個shard要分配到3個節點上去,es會自動進行均勻分配,以保持每個節點的均衡的讀寫負載請求

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

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

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

普通伺服器:1T,1萬,100萬
強大伺服器:10T,50萬,500萬

3、shard&replica機制梳理

(1)index包含多個shard
(2)每個shard都是一個最小工作單元,承載部分資料,lucene例項,完整的建立索引和處理請求的能力
(3)增減節點時,shard會自動在nodes中負載均衡
(4)primary shard和replica shard,每個document肯定只存在於某一個primary shard以及其對應的replica shard中,不可能存在於多個primary shard
(5)replica shard是primary shard的副本,負責容錯,以及承擔讀請求負載
(6)primary shard的數量在建立索引的時候就固定了,replica shard的數量可以隨時修改
(7)primary shard的預設數量是5,replica預設是1,預設有10個shard,5個primary shard,5個replica shard
(8)primary shard不能和自己的replica shard放在同一個節點上(否則節點宕機,primary shard和副本都丟失,起不到容錯的作用),但是可以和其他primary shard的replica shard放在同一個節點上

4、elasticsearch的橫向擴容過程,如何超出擴容極限,以及如何提升容錯性

(1)primary&replica自動負載均衡,6個shard,3 primary,3 replica
(2)每個node有更少的shard,IO/CPU/Memory資源給每個shard分配更多,每個shard效能更好
(3)擴容的極限,6個shard(3 primary,3 replica),最多擴容到6臺機器,每個shard可以佔用單臺伺服器的所有資源,效能最好
(4)超出擴容極限,動態修改replica數量,9個shard(3primary,6 replica),擴容到9臺機器,比3臺機器時,擁有3倍的讀吞吐量
(5)3臺機器下,9個shard(3 primary,6 replica),資源更少,但是容錯性更好,最多容納2臺機器宕機,6個shard只能容納0臺機器宕機
(6)這裡的這些知識點,你綜合起來看,就是說,一方面告訴你擴容的原理,怎麼擴容,怎麼提升系統整體吞吐量;另一方面要考慮到系統的容錯性,怎麼保證提高容錯性,讓儘可能多的伺服器宕機,保證資料不丟失

5、elasticsearch容錯過程分析

master node宕機的一瞬間這個節點上的primary shard就沒了,此時就不是active status,就不是所有的primary shard都是active了。
容錯第一步: master選舉,自動選舉另外一個node成為新的master,承擔起master的責任來;
容錯第二步: 新master將丟掉的primary shard的某個replica shard提升為rpimary shard。此時cluster status會變為yellow,因為primary shard全都變成active了。但是少了一個replica shard,所以不是所有的replica shard都是active了。
容錯第三步: 重故障的node,new master會將缺失的副本都copy一份到node上去,並且該node會使用之前已有的shard資料,只是同步下一個宕機之後發生過的修改。cluster status變為green,因為primary shard和replica shard都齊全了。