Elasticsearch入門(二)—— 分布式架構(gòu)原理分析

本章主要介紹ES的分布式架構(gòu)狸捅,ES的分布式存儲主要依賴于分片攻人, 分片又分為主分片和副本分片

Primary Shard(主分片)

Primary Shard可以將索引的數(shù)據(jù)分散到多個Data Node上沐批, 實現(xiàn)存儲的水平擴展,主分片個數(shù)在索引創(chuàng)建的時候指定,后續(xù)默認不可更改,如果要更改兴溜,必須重建索引。

Replica Shard(副本分片)

Replica Shard的引入是為了提高數(shù)據(jù)可用性耻陕。一旦主分片丟失拙徽,副本分片可以晉升到主分片。副本分片可以動態(tài)調(diào)整的诗宣。副本分片可以服務(wù)于讀請求膘怕,因此通過增加副本分片可以提升系統(tǒng)的整體吞吐量。


分片數(shù)的設(shè)置要合理
主分片數(shù)過小召庞,集群無法通過增加節(jié)點實現(xiàn)索引數(shù)據(jù)的擴展岛心。主分片數(shù)過大,會導致單個分片的容量過小篮灼,一個節(jié)點上有過多分片忘古,影響性能。
副本分片的設(shè)置過多影響集群的整體寫入性能穿稳。

故障轉(zhuǎn)移

下圖集群有三個節(jié)點組成存皂,一個索引包含三個主分片, 每個主分片的副本數(shù)是1逢艘。


image.png

上圖中節(jié)點1是master節(jié)點,節(jié)點1出現(xiàn)故障之后骤菠,集群重新選舉master節(jié)點它改。Node 3中的R0變成了P0,R0和R1重新分配商乎。

分片的內(nèi)部原理

分片(Shard)實際上是一個Lucene的實例央拖,從文件系統(tǒng)表現(xiàn)上看就是存儲了一系列文件的目錄。一個Shard由許多獨立的Segment組成, Segment中包含了文檔中的字典鹉戚、倒排索引鲜戒。所有的Segments數(shù)據(jù)都存儲_<segment_name>.cfs的文件中。

image.png

隨著索引數(shù)據(jù)的不斷增長抹凳,segment數(shù)量也會逐漸變多遏餐,查詢性能也會降低,ES內(nèi)部會開啟一個線程將小的Segment合并成大的Segment赢底,減少碎片化失都,降低文件打開數(shù)量柏蘑,提升IO性能。

Segment 文件是不可變更的粹庞。當一個 Document 更新的時候咳焚,實際上是將舊的文檔標記為刪除,然后索引一個新的文檔庞溜。在 Merge 的過程中會將舊的 Document 刪除掉革半。具體到文件系統(tǒng)來說,文檔 A 是寫入到 <segment_name>.cfs 文件里的流码,刪除文檔 A 實際上是在<segment_name>.del文件里標記某個 document 已被刪除又官,那么下次查詢的時候則會跳過這個文檔,是為邏輯刪除旅掂。當歸并(Merge)的時候赏胚,老的 segment 文件將會被刪除,合并成新的 segment 文件商虐,這個時候也就是物理刪除了觉阅。

ES的并發(fā)控制

ES通過樂觀鎖的方式控制并發(fā)。ES中的文檔是不可變更的秘车,當你更新一個文檔時典勇,ES把原來文檔標記為刪除,增加一個全新的文檔叮趴,其中version字段加1.

  • 內(nèi)部版本控制
    新版ES中通過if_seq_no+if_primary_term的方式完成控制割笙。假設(shè)有如下的seq_no = 2, primary_term=2的文檔
    image.png

如果我們用下面的方式更新文檔

PUT /blogs/_doc/1?if_seq_no=0&if_primary_term=1
{
   "title": "Quick brown rabbits !!!",
    "body":  "Brown rabbits are commonly seen."
}

這個時候就會報錯。
為什么加一個if_primary_term眯亦?

對于if_primary_term記錄的就是具體的哪個主分片伤溉,而if_seq_no這個參數(shù)起的作用和舊版本中的_version是一樣的,之所以加上if_primary_term這個參數(shù)主要是提高并發(fā)的性能以及更自然妻率,因為每個document都只會在某一個主分片中乱顾,所以由所在主分片分配序列號比由之前通過一個參數(shù)_version,相當于由整個ES集群分配版本號要來的更好宫静。

  • 外部版本控制
    如果你的ES只是同步外部數(shù)據(jù)庫用作搜索走净,那么通過version+version_type=external完成并發(fā)控制,version可以是存在數(shù)據(jù)庫中的版本號孤里。 下面的例子中有個version=100的文檔伏伯。
    image.png

如果采用下面version小于100的方式更新就會報錯

PUT /blogs/_doc/2?version=10&version_type=external
{
    "title": "Keeping pets healthy",
    "body":  "My quick brown fox eats rabbits on a regular basis."
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市捌袜,隨后出現(xiàn)的幾起案子说搅,更是在濱河造成了極大的恐慌,老刑警劉巖琢蛤,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜓堕,死亡現(xiàn)場離奇詭異抛虏,居然都是意外死亡,警方通過查閱死者的電腦和手機套才,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門迂猴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人背伴,你說我怎么就攤上這事沸毁。” “怎么了傻寂?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵息尺,是天一觀的道長。 經(jīng)常有香客問我疾掰,道長搂誉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任静檬,我火速辦了婚禮炭懊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拂檩。我一直安慰自己侮腹,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布稻励。 她就那樣靜靜地躺著父阻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪望抽。 梳的紋絲不亂的頭發(fā)上加矛,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音煤篙,去河邊找鬼荒椭。 笑死,一個胖子當著我的面吹牛舰蟆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狸棍,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼身害,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了草戈?” 一聲冷哼從身側(cè)響起塌鸯,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唐片,沒想到半個月后丙猬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涨颜,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年茧球,在試婚紗的時候發(fā)現(xiàn)自己被綠了庭瑰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡抢埋,死狀恐怖弹灭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情揪垄,我是刑警寧澤穷吮,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站饥努,受9級特大地震影響捡鱼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜酷愧,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一驾诈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧伟墙,春花似錦翘鸭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拱烁,卻和暖如春生蚁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背戏自。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工邦投, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人擅笔。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓志衣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親猛们。 傳聞我的和親對象是個殘疾皇子念脯,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容