Elasticsearch(三):集群特性

cluster state

es 集群相關(guān)的數(shù)據(jù)稱為 cluster state,主要記錄:

  • 節(jié)點(diǎn)信息幅慌,如節(jié)點(diǎn)名稱宋欺、連接地址等。
  • 索引信息胰伍,如索引名稱齿诞、配置等。

能夠修改 cluster state 的節(jié)點(diǎn)稱為 master 節(jié)點(diǎn)骂租,master 節(jié)點(diǎn)維護(hù) cluster state 并將最新版本的數(shù)據(jù)同步給其它結(jié)點(diǎn)祷杈。master 節(jié)點(diǎn)是通過選舉產(chǎn)生的,可以被選舉的節(jié)點(diǎn)稱為 master-eligible 節(jié)點(diǎn)渗饮。

coordinating node

處理請求的節(jié)點(diǎn)即為 coordinating node但汞,是所有節(jié)點(diǎn)的默認(rèn)角色,不可取消互站。coordinating node 負(fù)責(zé)路由請求到正確的節(jié)點(diǎn)處理私蕾。

data node

存儲數(shù)據(jù)的節(jié)點(diǎn)即為 data node,默認(rèn)節(jié)點(diǎn)均為 data node胡桃。

副本

es 引入副本(replica)提高了服務(wù)可用性和數(shù)據(jù)可用性踩叭,創(chuàng)建索引時使用 number_of_replicas 參數(shù)指定副本數(shù)。

  • 應(yīng)對部分節(jié)點(diǎn)停止服務(wù)問題翠胰。
  • 在不同節(jié)點(diǎn)上進(jìn)行數(shù)據(jù)備份容贝。

分片

  • 通過分片(shard)使得數(shù)據(jù)可以進(jìn)行拆分,分布在任意節(jié)點(diǎn)上之景。創(chuàng)建索引時使用 number_of_shards 參數(shù)指定分片數(shù)斤富。
  • 分片是 es 支持 PB 級數(shù)據(jù)的基石。
  • 分片數(shù)在索引創(chuàng)建時指定并且后續(xù)不允許修改锻狗。
  • 分片有主分片和副本分片之分茂缚,副本分片的數(shù)據(jù)由主分片同步戏罢。副本分片可以有多個,用以提高吞吐量脚囊。
PUT /test
{
  "settings": {
    "number_of_shards": 5, 
    "number_of_replicas": 3
  }
}

cluster health

通過 GET /_cluster/health 可以查看 es 集群狀態(tài)龟糕,包括以下三種:

  • green:健康狀態(tài),所有主副分片都正常分配悔耘。
  • yello:所有主分片都分配正常讲岁,但有副本分片未正常分配。
  • red:有主分片未分配完成衬以。

故障轉(zhuǎn)移

master 節(jié)點(diǎn)會不停查看 mater 節(jié)點(diǎn)的狀態(tài)缓艳,如果發(fā)現(xiàn) master 節(jié)點(diǎn)無法提供服務(wù),會重新選舉 master 節(jié)點(diǎn)看峻,選舉規(guī)則為當(dāng)前集群可選舉結(jié)點(diǎn)數(shù)大于 quorom 時才可以選舉阶淘,quorom = 所有可選舉結(jié)點(diǎn)數(shù) / 2 + 1

分布式存儲

coordinating node 收到請求后會通過文檔映射算法用文檔 id 計算文檔所在的分片互妓,如果是查詢請求會獲取該分片的主副分片列表溪窒,然后以輪詢的機(jī)制到某個分片上執(zhí)行查詢,然后將結(jié)果返回給 coordinating node冯勉;如果是寫入請求澈蚌,在計算文檔的分片后會將寫入請求轉(zhuǎn)發(fā)給主分片,主分片成功執(zhí)行后會將請求轉(zhuǎn)發(fā)給副本分片灼狰,主分片收到副本分片返回結(jié)果后通知 coordinating node宛瞄。

倒排索引不可變特性

倒排索引一旦生成,不能修改交胚,好處如下:

  • 不用考慮并發(fā)寫文件的問題份汗,杜絕了鎖機(jī)制帶來的性能問題。
  • 由于文件不再更改蝴簇,可以充分利用文件系統(tǒng)緩存裸影,只需載入一次,在內(nèi)存足夠的情況下對該文件的讀取都會從內(nèi)存讀取军熏,性能更高。
  • 利于生成緩存數(shù)據(jù)卷扮。
  • 利于對文件進(jìn)行壓縮存儲荡澎,節(jié)省磁盤和內(nèi)存存儲空間。

倒排索引維護(hù)

lucene 針對倒排索引不可變問題的解決方案是生成新的倒排索引文件晤锹,查詢時同時查詢所有的倒排索引文件摩幔,然后匯總結(jié)果。這樣構(gòu)建的單個倒排索引稱為 segment鞭铆,專門記錄 segment 信息的文件稱為 commit point或衡,segmentcommit point 構(gòu)成了 lucene index焦影。

refresh

segement 寫入磁盤的過程耗時較長,可以借助文件系統(tǒng)的緩存特性封断,先將 segement 在緩存中創(chuàng)建并開放查詢來進(jìn)一步提升實時性斯辰。該過程在 es 中稱為 refresh

index buffer

refresh 之前文檔會先存儲在一個內(nèi)存 buffer 中坡疼,refresh 時將 buffer 中的所有文檔清空并在內(nèi)存中生成 segment彬呻。由于 index buffer 的存在,refresh 可以等待一段時間來生成 segement柄瑰,es 默認(rèn)每 1 秒執(zhí)行一次 refresh闸氮,這就是 近實時 的由來。

translog

translog 機(jī)制是為了應(yīng)對內(nèi)存中的 index buffersegement 還未寫進(jìn)磁盤時發(fā)生宕機(jī)等事故導(dǎo)致數(shù)據(jù)丟失的問題教沾。

  • 當(dāng)變更寫入 bufferes 會將操作同步寫入 translog蒲跨,translog 文件會即時寫入磁盤(通過 fsync)。
  • es 啟動時會檢查 translog 文件授翻,并從中恢復(fù)數(shù)據(jù)或悲。

flush

flush 負(fù)責(zé)將內(nèi)存中的 segment 寫入磁盤:

  • translog 寫入磁盤。
  • index buffer 清空藏姐,其中的文檔生成一個新的 segement隆箩,相當(dāng)于 refresh 操作。
  • 執(zhí)行 fsync羔杨,將內(nèi)存中的 segement 寫入磁盤捌臊。
  • 更新 commit point 文件,記錄新增的 segment兜材。
  • 刪除舊的 translog 文件理澎。

flush 默認(rèn)間隔時間是 30 分鐘,當(dāng) translog 超過一定大小時也會觸發(fā) flush曙寡。

刪除文檔

lucene 專門維護(hù)了一個 .del 文件糠爬,記錄已刪除的文檔(文檔在 lucene 內(nèi)部的 id),查詢時會通過 .del 文件進(jìn)行過濾举庶。更新文檔也是通過先刪除文檔再創(chuàng)建新的文檔來實現(xiàn)的执隧。

segment merging

隨著 segment 的增多,es 會定期在后臺執(zhí)行合并操作來減少 segment 的數(shù)量户侥。通過 force_merge 可以手動強(qiáng)制做 segement merge 操作镀琉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蕊唐,隨后出現(xiàn)的幾起案子屋摔,更是在濱河造成了極大的恐慌,老刑警劉巖替梨,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钓试,死亡現(xiàn)場離奇詭異装黑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)弓熏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門恋谭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人硝烂,你說我怎么就攤上這事箕别。” “怎么了滞谢?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵串稀,是天一觀的道長。 經(jīng)常有香客問我狮杨,道長母截,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任橄教,我火速辦了婚禮清寇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘护蝶。我一直安慰自己华烟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布持灰。 她就那樣靜靜地躺著盔夜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堤魁。 梳的紋絲不亂的頭發(fā)上喂链,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音妥泉,去河邊找鬼椭微。 笑死,一個胖子當(dāng)著我的面吹牛盲链,可吹牛的內(nèi)容都是我干的蝇率。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼刽沾,長吁一口氣:“原來是場噩夢啊……” “哼本慕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悠轩,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎攻泼,沒想到半個月后火架,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鉴象,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年何鸡,在試婚紗的時候發(fā)現(xiàn)自己被綠了纺弊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡骡男,死狀恐怖淆游,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情隔盛,我是刑警寧澤犹菱,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站吮炕,受9級特大地震影響腊脱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜龙亲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一陕凹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鳄炉,春花似錦杜耙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至磕仅,卻和暖如春珊豹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背榕订。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工店茶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人劫恒。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓贩幻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親两嘴。 傳聞我的和親對象是個殘疾皇子丛楚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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

  • es的索引搜索是以lucene為底層的,但是lucene是沒有實現(xiàn)分布式,lucene提供了核心的索引和搜索引擎憔辫,...
    Tim在路上閱讀 5,393評論 0 14
  • ES來源 Elasticsearch 來源于作者 Shay Banon 的第一個開源項目Compass庫趣些,而這個庫...
    maquewy閱讀 4,646評論 0 58
  • Elasticsearch 是當(dāng)前主流的搜索引擎,其具有擴(kuò)展性好贰您,查詢速度快坏平,查詢結(jié)果近實時等優(yōu)點(diǎn)拢操,本文將對Ela...
    Elastic慕容閱讀 942評論 0 0
  • 一個小男孩,他有一個夢想——他長大想開一家雜貨店舶替,里面有很多很多的零食令境,許許多多的小朋友都到他的店子里面來買零食。...
    Jeudi閱讀 347評論 0 0
  • 嘿……這次獎金核算顾瞪,你又是第一哦 哇……她們說你這次領(lǐng)錢又是最多 嘿嘿……你懂的·周末我們?nèi)ツ睦镟搜剑?朋友和同事...
    羽杉兒閱讀 174評論 1 0