深入淺出 spring-data-elasticsearch 之 ElasticSearch 架構(gòu)初探(一)

本文目錄

一趁窃、Elasticsearch 基本術(shù)語

1.1 文檔(Document)、索引(Index)绿鸣、類型(Type)文檔三要素

1.2 集群(Cluster)肥橙、節(jié)點(diǎn)(Node)、分片(Shard)分布式三要素

二鹃骂、Elasticsearch 工作原理

2.1 文檔存儲(chǔ)的路由

2.2 如何健康檢查

2.3 如何水平擴(kuò)容

三台盯、小結(jié)

一、Elasticsearch 基本術(shù)語

1.1 文檔(Document)偎漫、索引(Index)爷恳、類型(Type)文檔三要素

文檔(Document)

文檔,在面向?qū)ο笥^念就是一個(gè)對(duì)象象踊。在 ES 里面温亲,是一個(gè)大 JSON 對(duì)象,是指定了唯一 ID 的最底層或者根對(duì)象杯矩。文檔的位置由 _index栈虚、_type 和 _id 唯一標(biāo)識(shí)。

索引(Index)

索引史隆,用于區(qū)分文檔成組魂务,即分到一組的文檔集合。索引泌射,用于存儲(chǔ)文檔和使文檔可被搜索粘姜。比如項(xiàng)目存索引 project 里面,交易存索引?sales 等熔酷。

類型(Type)

類型孤紧,用于區(qū)分索引中的文檔,即在索引中對(duì)數(shù)據(jù)邏輯分區(qū)拒秘。比如索引?project 的項(xiàng)目數(shù)據(jù)号显,根據(jù)項(xiàng)目類型 ui 項(xiàng)目臭猜、插畫項(xiàng)目等進(jìn)行區(qū)分。

和關(guān)系型數(shù)據(jù)庫 MySQL 做個(gè)類比

Document 類似于 Record

Type?類似于 Table

Index?類似于 Database

1.2 集群(Cluster)押蚤、節(jié)點(diǎn)(Node)蔑歌、分片(Shard)分布式三要素

集群(Cluster)

服務(wù)器集群大家都知道,這里 ES 也是類似的揽碘。多個(gè) ElasticSearch 運(yùn)行實(shí)例(節(jié)點(diǎn))組合的組合體是 ElasticSearch 集群次屠。

ElasticSearch 是天然的分布式,通過水平擴(kuò)容為集群添加更多節(jié)點(diǎn)钾菊。

集群是去中心化的帅矗,有一個(gè)主節(jié)點(diǎn)(Master)。主節(jié)點(diǎn)是動(dòng)態(tài)選舉煞烫,因此不會(huì)出現(xiàn)單點(diǎn)故障浑此。

那分片和節(jié)點(diǎn)的配置呢?

節(jié)點(diǎn)(Node

一個(gè)?ElasticSearch 運(yùn)行實(shí)例就是節(jié)點(diǎn)滞详。順著集群來凛俱,任何節(jié)點(diǎn)都可以被選舉成為主節(jié)點(diǎn)。主節(jié)點(diǎn)負(fù)責(zé)集群內(nèi)所以變更料饥,比如索引的增加蒲犬、刪除等。所以集群不會(huì)因?yàn)橹鞴?jié)點(diǎn)流量的增大成為瓶頸岸啡。因?yàn)槿魏喂?jié)點(diǎn)都會(huì)成為主節(jié)點(diǎn)原叮。

下面有 3 個(gè)節(jié)點(diǎn),第 1 個(gè)節(jié)點(diǎn)有:2 個(gè)主分片和 1 個(gè)副分片巡蘸。如圖:

那么奋隶,只有一個(gè)節(jié)點(diǎn)的 ElasticSearch 服務(wù)會(huì)存在瓶頸。如圖:

分片(Shard)

分片悦荒,是 ES 節(jié)點(diǎn)中最小的工作單元唯欣。分片僅僅保存全部數(shù)據(jù)的一部分,分片的集合是 ES 的索引搬味。分片包括主分片和副分片境氢,主分片是副分片的拷貝。主分片和副分片地工作基本沒有大的區(qū)別碰纬。

在索引中全文搜索萍聊,然后會(huì)查詢到每個(gè)分片,將每個(gè)分配的結(jié)果進(jìn)行全局地收集處理悦析,并返回寿桨。

二、Elasticsearch 工作原理

2.1 文檔存儲(chǔ)的路由

當(dāng)索引到一個(gè)文檔(如:報(bào)價(jià)系統(tǒng))她按,具體的文檔數(shù)據(jù)(如:報(bào)價(jià)數(shù)據(jù))會(huì)存儲(chǔ)到一個(gè)分片牛隅。具體文檔數(shù)據(jù)會(huì)被切分,并分別存儲(chǔ)在分片 1 或者 分片 2 …

那么如何確定存在哪個(gè)分片呢?

存儲(chǔ)路由過程由下面地公式?jīng)Q定:

shard= hash(routing) % number_of_primary_shards

routing 是可變值酌泰,支持自定義媒佣,默認(rèn)文檔 _id。

hash 函數(shù)生成數(shù)字陵刹,經(jīng)過取余算法得到余數(shù)默伍,那么這個(gè)余數(shù)就是分片的位置。

這是不是有點(diǎn)負(fù)載均衡的類似衰琐。

2.2 如何健康檢查

集群名也糊,集群的健康狀態(tài)

GEThttp://127.0.0.1:9200/_cluster/stats{"cluster_name":"elasticsearch","status":"green","timed_out":false,"number_of_nodes":1,"number_of_data_nodes":1,"active_primary_shards":0,"active_shards":0,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0}

status 字段是需要我們關(guān)心的。狀態(tài)可能是下列三個(gè)值之一:

green所有的主分片和副本分片都已分配羡宙。你的集群是100% 可用的狸剃。yellow所有的主分片已經(jīng)分片了,但至少還有一個(gè)副本是缺失的狗热。不會(huì)有數(shù)據(jù)丟失钞馁,所以搜索結(jié)果依然是完整的。高可用會(huì)弱化把 yellow 想象成一個(gè)需要及時(shí)調(diào)查的警告匿刮。red至少一個(gè)主分片(以及它的全部副本)都在缺失中僧凰。這意味著你在缺少數(shù)據(jù):搜索只能返回部分?jǐn)?shù)據(jù),而分配到這個(gè)分片上的寫入請(qǐng)求會(huì)返回一個(gè)異常熟丸。

active_primary_shards 集群中的主分片數(shù)量

active_shards 所有分片的匯總值

relocating_shards 顯示當(dāng)前正在從一個(gè)節(jié)點(diǎn)遷往其他節(jié)點(diǎn)的分片的數(shù)量训措。通常來說應(yīng)該是 0,不過在 Elasticsearch 發(fā)現(xiàn)集群不太均衡時(shí)光羞,該值會(huì)上漲绩鸣。比如說:添加了一個(gè)新節(jié)點(diǎn),或者下線了一個(gè)節(jié)點(diǎn)狞山。

initializing_shards 剛剛創(chuàng)建的分片的個(gè)數(shù)全闷。

unassigned_shards 已經(jīng)在集群狀態(tài)中存在的分片。

2.3 如何水平擴(kuò)容

主分片在索引創(chuàng)建已經(jīng)確定萍启。讀操作可以同時(shí)被主分片和副分片處理总珠。因此,更多的分片勘纯,會(huì)擁有更高的吞吐量局服。自然,需要增加更多的硬件資源支持吞吐量驳遵。

說明淫奔,這里無法提高性能,因?yàn)槊總€(gè)分片獲得的資源會(huì)變少堤结。

動(dòng)態(tài)調(diào)整副本分片數(shù)唆迁,按需伸縮集群鸭丛,比如把副本數(shù)默認(rèn)值為 1 增加到 2:

PUT /blogs/_settings{"number_of_replicas":2}

三、小結(jié)

簡單初探了下?ElasticSearch 的相關(guān)內(nèi)容唐责。后面會(huì)主要落地到實(shí)戰(zhàn)鳞溉,關(guān)于? spring-data-elasticsearch 這塊的實(shí)戰(zhàn)。

最后鼠哥,《 深入淺出 spring-data-elasticsearch 》小連載目錄如下:

深入淺出 spring-data-elasticsearch - ElasticSearch 架構(gòu)初探(一)

深入淺出 spring-data-elasticsearch - 概述(二)

深入淺出?spring-data-elasticsearch - 基本案例詳解(三)

深入淺出?spring-data-elasticsearch - 復(fù)雜案例詳解(四)

深入淺出?spring-data-elasticsearch - 架構(gòu)原理以及源碼淺析(五)

資料:

官方《Elasticsearch: 權(quán)威指南》

https://www.elastic.co/guide/c ... .html

本文作者: 泥瓦匠

原文鏈接:http://www.bysocket.com

版權(quán)歸作者所有熟菲,轉(zhuǎn)載請(qǐng)注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市朴恳,隨后出現(xiàn)的幾起案子抄罕,更是在濱河造成了極大的恐慌,老刑警劉巖于颖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呆贿,死亡現(xiàn)場離奇詭異,居然都是意外死亡森渐,警方通過查閱死者的電腦和手機(jī)榨崩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來章母,“玉大人母蛛,你說我怎么就攤上這事∪樵酰” “怎么了彩郊?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蚪缀。 經(jīng)常有香客問我秫逝,道長,這世上最難降的妖魔是什么询枚? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任违帆,我火速辦了婚禮,結(jié)果婚禮上金蜀,老公的妹妹穿的比我還像新娘刷后。我一直安慰自己,他們只是感情好渊抄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布尝胆。 她就那樣靜靜地躺著,像睡著了一般护桦。 火紅的嫁衣襯著肌膚如雪含衔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音贪染,去河邊找鬼缓呛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛杭隙,可吹牛的內(nèi)容都是我干的强经。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼寺渗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了兰迫?” 一聲冷哼從身側(cè)響起信殊,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汁果,沒想到半個(gè)月后涡拘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡据德,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年鳄乏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棘利。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡橱野,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出善玫,到底是詐尸還是另有隱情水援,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布茅郎,位于F島的核電站蜗元,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏系冗。R本人自食惡果不足惜奕扣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掌敬。 院中可真熱鬧惯豆,春花似錦、人聲如沸奔害。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舀武。三九已至拄养,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瘪匿。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工跛梗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棋弥。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓核偿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親顽染。 傳聞我的和親對(duì)象是個(gè)殘疾皇子漾岳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

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

  • 歡迎訪問我的博客查看原文:http://wangnan.tech 注:文本整理自《ELKstack權(quán)威指南》 架構(gòu)...
    GhostStories閱讀 19,840評(píng)論 0 31
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)粉寞,斷路器尼荆,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 基礎(chǔ)概念 Elasticsearch有幾個(gè)核心概念,從一開始理解這些概念會(huì)對(duì)整個(gè)學(xué)習(xí)過程有莫大的幫助唧垦。 接近實(shí)時(shí)(...
    山天大畜閱讀 2,106評(píng)論 0 4
  • 前言 前面介紹了ES的插件安裝捅儒,ELK的準(zhǔn)備工作就已經(jīng)做完了,現(xiàn)在開始學(xué)習(xí)搭建ES集群振亮∏苫梗看了網(wǎng)上的大神總結(jié)出來的經(jīng)...
    我的橙子很甜閱讀 4,213評(píng)論 0 8
  • 喜歡看周星馳的電影,或許是因?yàn)樗碾娪翱偰軌蜃屓嗽诮^望中獲得希望坊秸。只要我心心念念一個(gè)人麸祷,他總會(huì)回頭。 當(dāng)我們笑誰誰...
    夏洛洛閱讀 433評(píng)論 0 0