Elasticsearch集群架構(gòu)&&如何保證分片數(shù)據(jù)一致性

?面試遇到了 ES 相關(guān)的拷打律杠,發(fā)現(xiàn)對 ES 還停留在應(yīng)用層潭流,對于底層的實現(xiàn)沒有很好的理解和熟悉,在此整理柜去,溫故知新灰嫉。
?本文介紹ES整體架構(gòu),節(jié)點嗓奢,分片讼撒,副本等概念以及查詢流程,數(shù)據(jù)更新流程股耽。

ES架構(gòu)

ES架構(gòu)圖及請求節(jié)點訪問流程.png

節(jié)點及節(jié)點類型 - Node

?在Elasticsearch中根盒,一個節(jié)點Node可以同時扮演多個角色。例如物蝙,一個節(jié)點可以同時是數(shù)據(jù)節(jié)點炎滞、主可選舉節(jié)點和預(yù)處理節(jié)點。但是诬乞,為了優(yōu)化性能和資源使用厂榛,通常建議將這些角色分開,特別是在大型集群中丽惭。出于多可用的考慮,可以增加Ingest Node節(jié)點辈双,通過讀負(fù)載均衡將讀寫請求分發(fā)到不同節(jié)點责掏,從而提高集群性能。

  • Master Node
    ?主節(jié)點負(fù)責(zé)管理集群級別的操作湃望,比如創(chuàng)建或刪除索引换衬、跟蹤哪些節(jié)點是集群的一部分以及決定哪些分片分配給哪些節(jié)點。
    ?它們還處理集群范圍內(nèi)的變更证芭,如創(chuàng)建或刪除索引瞳浦、跟蹤集群中的節(jié)點以及管理集群的狀態(tài)。
    ?主節(jié)點不承擔(dān)數(shù)據(jù)相關(guān)的任務(wù)废士,如存儲或搜索文檔叫潦。
  • Matser eligible Node
    ?主可選舉節(jié)點是指有資格被選舉為master節(jié)點的節(jié)點。在默認(rèn)配置下官硝,集群中的每個節(jié)點都可以成為master節(jié)點矗蕊。
    ?這些節(jié)點參與master節(jié)點的選舉過程短蜕,當(dāng)當(dāng)前的master節(jié)點不可用時,它們可以被選舉為新的master節(jié)點傻咖。
    ?它們也可以執(zhí)行數(shù)據(jù)節(jié)點的任務(wù)朋魔,如存儲數(shù)據(jù)和執(zhí)行搜索。
  • Data Node
    ?數(shù)據(jù)節(jié)點負(fù)責(zé)存儲數(shù)據(jù)和執(zhí)行數(shù)據(jù)相關(guān)的操作卿操,如CRUD(創(chuàng)建警检、讀取、更新害淤、刪除)操作和搜索扇雕。
    ?它們還負(fù)責(zé)執(zhí)行集群的分片分配和數(shù)據(jù)的復(fù)制。
    ?數(shù)據(jù)節(jié)點是Elasticsearch集群中工作負(fù)載最重的節(jié)點筝家,因為它們負(fù)責(zé)處理數(shù)據(jù)和搜索請求洼裤。
  • Coordinating Node
    ?協(xié)調(diào)節(jié)點通常是一個接受客戶端請求并向其他節(jié)點轉(zhuǎn)發(fā)請求的節(jié)點。
    ?它們不存儲數(shù)據(jù)溪王,但負(fù)責(zé)聚合來自不同節(jié)點的搜索結(jié)果并返回給客戶端腮鞍。
    ?協(xié)調(diào)節(jié)點可以是任何節(jié)點,因為任何節(jié)點都可以轉(zhuǎn)發(fā)請求莹菱,但通常移国,客戶端直接連接的節(jié)點就充當(dāng)協(xié)調(diào)節(jié)點的角色。
  • Ingest Node
    ?預(yù)處理節(jié)點負(fù)責(zé)處理傳入數(shù)據(jù)的預(yù)處理工作道伟,如解析迹缀、轉(zhuǎn)換和豐富數(shù)據(jù)。
    ?它們使用預(yù)處理管道(Ingest pipelines)來處理文檔蜜徽,這些管道可以在索引之前對文檔進(jìn)行修改祝懂。
    ?Ingest節(jié)點可以與數(shù)據(jù)節(jié)點和協(xié)調(diào)節(jié)點的功能重疊,因為預(yù)處理可以在索引數(shù)據(jù)之前在任何節(jié)點上執(zhí)行拘鞋。

分片 - Shard

?在創(chuàng)建索引時砚蓬,可以指定分片的個數(shù)和副本個數(shù),多分片分部在集群各個節(jié)點,分片分為主分片Primary Shard和副本分片Replica Shard盆色。
?副分片不會被分配到與主分片相同的節(jié)點上灰蛙。這是為了確保如果一個節(jié)點發(fā)生故障,主分片和其副分片不會同時丟失隔躲,分配情況如下圖摩梧。

主分片及副分片在節(jié)點分部情況.png

主分片(Primary Shard)

存儲和索引:每個文檔都存儲在一個主分片上。主分片負(fù)責(zé)處理文檔的索引(即插入宣旱、更新和刪除操作)仅父。
查詢處理:主分片也負(fù)責(zé)處理查詢請求,返回與查詢條件匹配的文檔。
數(shù)量固定:在創(chuàng)建索引時驾霜,需要指定主分片的數(shù)量案训,這個數(shù)量在索引創(chuàng)建后不能更改。
負(fù)載均衡:主分片在集群中的節(jié)點上分布粪糙,以實現(xiàn)負(fù)載均衡强霎。

副分片(Replica Shard)

數(shù)據(jù)復(fù)制:副分片是主分片的復(fù)制品,它們包含了與主分片相同的數(shù)據(jù)蓉冈。副分片的主要目的是提供數(shù)據(jù)的冗余城舞,以防主分片所在的節(jié)點發(fā)生故障。
查詢負(fù)載分擔(dān):副分片可以處理查詢請求寞酿,從而分擔(dān)主分片的負(fù)載家夺,提高查詢性能。
數(shù)量可變:副分片的數(shù)量可以在索引創(chuàng)建后動態(tài)調(diào)整伐弹,以適應(yīng)集群的負(fù)載和可用性需求拉馋。
故障恢復(fù):如果一個主分片所在的節(jié)點發(fā)生故障,Elasticsearch會從副分片中選舉一個新的主分片惨好,以保證數(shù)據(jù)的可用性煌茴。

功能區(qū)別

數(shù)據(jù)寫入:只有主分片負(fù)責(zé)處理數(shù)據(jù)的寫入操作,副分片不參與數(shù)據(jù)寫入日川,它們只是主分片的復(fù)制品蔓腐。
數(shù)據(jù)讀取:主分片和副分片都可以處理數(shù)據(jù)的讀取操作龄句,包括查詢和獲取文檔回论。副分片可以分擔(dān)讀取負(fù)載,提高查詢性能分歇。
故障恢復(fù):副分片的主要作用之一是提供故障恢復(fù)能力傀蓉。如果主分片丟失,Elasticsearch會從副分片中選擇一個新的主分片职抡,以保證數(shù)據(jù)的可用性和一致性僚害。
負(fù)載均衡:副分片有助于負(fù)載均衡,因為它們可以處理部分查詢請求繁调,從而減輕主分片的壓力。

如何保證主從數(shù)據(jù)一致性

  • 寫操作傳播
    當(dāng)對主分片執(zhí)行寫操作(如索引靶草、更新或刪除文檔)時蹄胰,這個操作會被復(fù)制到所有的副分片。
    只有當(dāng)所有的副分片都確認(rèn)接收到并應(yīng)用了這個操作后奕翔,寫操作才會被認(rèn)為成功裕寨。
  • 版本控制
    每個文檔都有一個版本號,當(dāng)文檔被更新時,版本號會增加宾袜。
    版本號用于確保操作的順序性捻艳,并在沖突發(fā)生時解決誰的更新優(yōu)先。
  • 事務(wù)日志
    主分片會維護(hù)一個操作日志(稱為translog)庆猫,記錄所有對文檔進(jìn)行的變更操作认轨。
    當(dāng)副分片需要同步數(shù)據(jù)時,它會從主分片的translog中獲取自上次同步以來的所有變更月培,并應(yīng)用這些變更嘁字。
  • 定期刷新
    Elasticsearch會定期將內(nèi)存中的變更刷新到磁盤上的索引文件中。
    這個定期刷新的過程稱為refresh杉畜,它確保了即使在節(jié)點故障的情況下纪蜒,數(shù)據(jù)也不會丟失。
  • 副本同步
    主分片和副分片之間的數(shù)據(jù)同步是實時進(jìn)行的此叠。
    如果副分片落后于主分片纯续,它會自動從主分片獲取缺失的操作并應(yīng)用它們。

小結(jié)

?主分片和副分片的設(shè)計使得Elasticsearch能夠?qū)崿F(xiàn)高可用性灭袁、容錯能力和負(fù)載均衡猬错。主分片負(fù)責(zé)數(shù)據(jù)的存儲和索引,而副分片提供數(shù)據(jù)的冗余和讀取負(fù)載分擔(dān)简卧。在設(shè)計Elasticsearch集群時兔魂,合理配置主分片和副分片的數(shù)量對于優(yōu)化性能和可靠性至關(guān)重要。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末举娩,一起剝皮案震驚了整個濱河市析校,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铜涉,老刑警劉巖智玻,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芙代,居然都是意外死亡吊奢,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進(jìn)店門纹烹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來页滚,“玉大人,你說我怎么就攤上這事铺呵」郏” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵片挂,是天一觀的道長幻林。 經(jīng)常有香客問我贞盯,道長,這世上最難降的妖魔是什么沪饺? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任躏敢,我火速辦了婚禮,結(jié)果婚禮上整葡,老公的妹妹穿的比我還像新娘件余。我一直安慰自己,他們只是感情好掘宪,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布蛾扇。 她就那樣靜靜地躺著,像睡著了一般魏滚。 火紅的嫁衣襯著肌膚如雪镀首。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天鼠次,我揣著相機與錄音更哄,去河邊找鬼。 笑死腥寇,一個胖子當(dāng)著我的面吹牛成翩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赦役,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼麻敌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了掂摔?” 一聲冷哼從身側(cè)響起术羔,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乙漓,沒想到半個月后级历,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡叭披,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年寥殖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涩蜘。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡嚼贡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出同诫,到底是詐尸還是另有隱情粤策,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布剩辟,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贩猎。R本人自食惡果不足惜熊户,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吭服。 院中可真熱鬧嚷堡,春花似錦、人聲如沸艇棕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沼琉。三九已至北苟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間打瘪,已是汗流浹背友鼻。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闺骚,地道東北人彩扔。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像僻爽,于是被迫代替她去往敵國和親虫碉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361

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