精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深度解析:Elasticsearch 寫入請求處理流程

開發
對于 Elasticsearch 寫入一篇文檔相信大家不陌生,但是Elasticsearch 的底層究竟是如何處理的呢,接下來讓我們一起來一探究竟。

版本:Elasticsearch 8.x

今天來看下 Elasticsearch 中的寫入流程。

不想看過程可以直接跳轉文章末尾查看總結部分。最后附上個人理解的一個圖。

從我們發出寫入請求,到 Elasticsearch 接收請求,處理請求,保存數據到磁盤,這個過程中經歷了哪些處理呢?Elasticsearch 又做了哪些操作?對于 Elasticsearch 寫入一篇文檔相信大家不陌生,但是Elasticsearch 的底層究竟是如何處理的呢,讓我們一起來一探究竟。

寫入流程

(1) 客戶端發送寫請求時,發送給任意一個節點,這個節點就是所謂的協調節點(coordinating node)。(對應圖中的序號1)

(2) 計算文檔要寫入的分片位置,使用 Hash 取模算法(最新版 Hash 算法)(對應圖中序號2)。

routing_factor = num_routing_shards / num_primary_shards
shard_num = (hash(_routing) % num_routing_shards) / routing_factor

(3) 協調節點進行路由,將請求轉發給對應的 primary sharding 所在的 datanode(對應圖中序號2)。

(4) datanode 節點上的 primary sharding 處理請求,寫入數據到索引庫,并且將數據同步到對應的 replica sharding(對應圖中序號3)。

(5) 等 primary sharding 和 replica sharding 都保存好之后返回響應(對應圖中序號 4,5,6)。

路由分片算法

在7.13版本之前,計算方式如下:

shard_num = hash(_routing) % num_primary_shards

從7.13 版本開始,不包括 7.13 ,計算方式就改為了上述步驟2的計算方式。

routing_factor = num_routing_shards / num_primary_shards
shard_num = (hash(_routing) % num_routing_shards) / routing_factor
  • num_routing_shards 就是配置文件中 index.number_of_routing_shard 的值。
  • num_primary_shard 就是配置文件中 index.number_of_shard 的值。
  • _routing 默認就是文檔的 ID,但是我們可以自定義該路由值。

等待激活的分片

此處以 Create index API 舉例說明,其中有一個請求參數 wait_for_active_shards。 該參數的作用就是寫入請求發送到ES之后,需要等待多少數量的分片處于激活狀態后再繼續執行后續操作。如果所需要數量的分片副本不足,則寫入操作需等待并重試,直到所有的分片副本都已經啟動或者發生超時。

默認情況下,寫入操作僅等待主分片處于活動狀態后繼續執行(即 wait_for_active_shard=1)。

  • (可選)的字符串值。
  • 默認1。
  • 可以設置為all,或者任意一個正整數,最多是索引的副本分片數+1(number_of_replicas+1)。

該設置極大的降低了寫操作未寫入所需數量分片副本的機會,但是并沒有完全避免。

寫入原理

先來一個官網的寫入流程圖(地址在文末獲?。?/p>

Elasticsearh 寫入流程圖

近實時

對于 Elasticsearch 的寫入流程來說,就三部分:

  • 寫入到內存緩沖區。
  • 寫入打開新的 segment。
  • 寫入 disk。

為什么稱為近實時,是因為在寫入到內存緩沖區的時候,我們是還無法進行檢索的,等到寫入到segment之后,就可以進行檢索到了,所以這是近實時的原因。

因為相對于寫到磁盤,打開 segment 寫入文件系統緩存的代價比寫入磁盤的代價低的多。

第一步、寫入文檔到內存緩沖區(此時文檔不可被檢索)。

第二步、緩沖區的內容寫入到 segment,但是還未提交(可被檢索)。

在 Elasticsearch 中,寫入和打開一個新segment的過程稱為 refresh,refresh操作會自上次刷新(refresh)以來執行的所有操作都可用搜索。

refresh觸發的方式有如下三種:

  • 刷新間隔到了自動刷新。
  • URL增加?refresh參數,需要傳空或者true。
  • 調用Refresh API手動刷新

默認情況下,Elasticsearch 每秒定期刷新,但是僅限于在過去的30s內收到的一個或者多個 search請求。這個也就是近實時的一個點,文檔的更改不會立即顯示在下一次的檢索中,需要等待 refresh 操作完成之后才可以檢索出來。

我們可以通過如下方式觸發refresh操作或者調整自動刷新的間隔。

POST /_refresh 
POST /blogs/_refresh

調整刷新間隔,每 30s 刷新:

PUT /my_logs
{
  "settings": {
    "refresh_interval": "30s" 
  }
}

關閉自動刷新:

PUT /my_logs/_settings
{ "refresh_interval": -1 } 

設置為每秒自動刷新:

PUT /my_logs/_settings
{ "refresh_interval": "1s" 

refresh_interval 需要一個 持續時間 值, 例如 1s (1 秒) 或 2m (2 分鐘)。 一個絕對值 1 表示的是 1毫秒 --無疑會使你的集群陷入癱瘓。

段(segment)合并

由于 refresh 操作會每秒自動刷新生成一個新的段(segment),這樣的話短時間內,segment會暴增,segment數量太多,每一個都會造成文件句柄、內存、CPU的大量消耗,還有一個更重要的點就是,每個檢索請求也會輪流檢查每一個segment,所以segment越多,檢索也就越慢。

Elasticsearch 通過在后臺自動合并 segment 來解決這個問題的。小的segment被合并到大的segment,然后大的segment在被合并到更大的segment。

segment 合并的時候會自動將已刪除的文檔從文件系統中刪除,已經刪除的文檔或者更新文檔的舊版本不會被合并到新的 segment中。

  • 當 index 的時候,refresh操作會創建新的segment,并將segment打開以供檢索。
  • 合并進行會選擇一小部分大小相似的segment,在后臺將他們合并到更大的segment中,這個操作不會中斷 index 與 search 操作。

optimize API

optimize API 不應該用在經常更新的索引上。

該 optimize API 可以控制分片最大的 segment數量,對于有的索引,例如日志,每天、每周、每月的日志被單獨存在一個索引上,老得索引一般都是只讀的,也不太可能發生變化,所以我們就可以使用這個 optimize API 優化老的索引,將每個分片合并為一個單獨的segment。這樣既可以節省資源,也可以加快檢索速度。

合并索引中的每個分片為一個單獨的段:

POST /logstash-2014-10/_optimize?max_num_segments=1 

持久化

上述的refresh操作是 Elasticsearch 近實時 的原因,那么數據的持久化就要看fsync操作把數據從文件系統緩沖區flush到磁盤了。所以只有當translog被fsync操作或者是提交時,translog中的數據才會持久化到磁盤。

如果沒有持久化操作,當 Elasticsearch 宕機發生故障的時候,就會發生數據丟失了,所以 Elasticsearch 依賴于translog進行數據恢復。

在 Elasticsearch 進行提交操作的時候,成本是非常高的,所以策略就是在寫入到內存緩沖區的時候,同步寫入一份數據到translog,所有的index與delete操作都會在內部的lucene索引處理后且未確認提交之前寫入teanslog。

如果發生了異常,當分片數據恢復時,已經確認提交但是并沒有被上次lucene提交操作包含在內的最近操作就可以在translog中進行恢復。

Elasticsearch 的 flush操作是執行 Lucene提交并開始生成新的translog的過程,為了確保translog文件不能過大,flush操作在后臺自動執行,否則在恢復的時候也會因為文件過大花費大量的時間。

對于translog有如下設置選項:

  • index.translog.durability 默認設置為request ,意思就是只有當主分片和副本分片fsync且提交translog之后,才會向客戶端響應index,delete,update,bulk請求成功。
  • index.translog.durability 設置為async,則 Elasticsearch 會在每個index.translog.sync_interval 提交 translog,如果遇到節點恢復,則在這個區間執行的操作就可能丟失。

對于上述的幾個參數,都可以動態更新:

(1) index.translog.sync_interval:將 translog fsync到磁盤并提交的頻率。默認5s,不允許小于100ms。

(2) index.translog.durability:是否在每次index,delete,update,bulk操作之后提交translog。

  • request: 默認,fsync 每次請求之后提交,如果發生故障,所有已確認的寫入操作到已經提交到磁盤
  • async: fsync在后臺每個sync_interval時間間隔提交。如果發生故障,自上次提交以來所有已確認的寫入操作將被丟棄。

(3) index.translog.flush_threshold_size:防止 translog 文件過大的設置,一旦達到設置的該值,就會發生 flush 操作,并生成一個新的 commit point。默認512mb。

總結

(1) 一個文檔被index之后,添加內存緩存區,同時寫入 translog。

(2) refresh 操作完成后,緩存被清空,但是 translog 不會

  • 內存緩沖區的文檔被寫入到一個新的segment中,且沒有進行fsync操作。
  • segment 打開,可供檢索。
  • 內存緩沖區清空。

(3) 更多的文檔被添加到內存緩沖區并追加到 translog。

(4) 每隔一段時間,translog 變得越來越大,索引被刷新(flush),一個新的 translog 被創建,并且一個提交執行。

  • 所有內存緩沖區的文檔都被寫入到一個新的段。
  • 緩沖區被清空。
  • 一個提交點寫入磁盤。
  • 文件系統緩存通過fsync被刷新(flush)。
  • 老的 translog 被刪除。

translog 提供所有還沒有被刷到磁盤的操作的一個持久化記錄。當 Elasticsearch 啟動的時候,它會從磁盤中使用的最后一個提交點(commit point)去恢復已知的 segment ,并且會重放 translog 中所有在最后一次提交后發生的變更操作。

translog 也被用來提供實時的CRUD,當我們通過ID進行查詢、更新、刪除一個文檔、它會嘗試在相應的 segment 中檢索之前,首先檢查 translog 中任何最近的變更操作。也就是說這個是可以實時獲取到文檔的最新版本。

最后送上一個我自己理解的圖,參考了官網的描述,以及網上畫的,如有錯誤歡迎指出。

責任編輯:趙寧寧 來源: 醉魚Java
相關推薦

2022-07-04 09:15:10

Spring請求處理流程

2019-11-27 11:10:58

TomcatOverviewAcceptor

2010-08-09 11:14:36

Flex事件處理

2011-06-16 15:17:16

2020-10-20 06:41:59

Elasticsear日志

2010-01-06 15:16:58

Ubuntu啟動流程

2012-08-30 09:48:02

Struts2Java

2023-12-14 13:28:00

Spring流程Web

2021-10-20 06:47:50

Elasticsear場景引擎

2023-10-10 08:52:36

射與分析相開源

2021-10-04 09:14:18

ElasticSear深度分頁

2024-07-15 00:00:00

POST瀏覽器網絡

2011-07-28 18:25:27

Cocoa 異步請求 libxml2

2024-10-12 12:55:26

2023-12-06 07:14:28

前端API中間件

2010-03-02 17:43:31

WCF框架處理流程

2009-03-25 17:41:50

NehalemIntel服務器

2010-09-17 10:50:35

sip請求

2024-01-11 12:14:31

Async線程池任務

2020-02-25 15:47:05

ElasticsearLucene地方
點贊
收藏

51CTO技術棧公眾號

青青草成人网| 日韩影院在线| 精品三级国产| 91尤物视频在线观看| 久久久成人精品视频| 亚洲 高清 成人 动漫| www日韩在线| 国产精品扒开腿做爽爽爽视频软件| 国产乱理伦片在线观看夜一区| 亚洲色图35p| 99爱视频在线| 天堂av手机版| 亚洲精选91| 精品成a人在线观看| 好色先生视频污| 6—12呦国产精品| 青青草国产成人a∨下载安卓| 日韩欧美国产网站| 精品一区二区久久久久久久网站| 青青草原在线免费观看视频| 成人av在线播放| 国产精品久久久久影院色老大| 日本精品久久久久影院| 国产精品揄拍100视频| 欧美日韩国产观看视频| 亚洲欧洲国产专区| 91久久国产自产拍夜夜嗨| 精品国产精品国产精品| 欧美经典影片视频网站| 欧洲另类一二三四区| 亚洲成色www久久网站| 成人午夜精品视频| 成人同人动漫免费观看| 亚洲精品久久久一区二区三区| 欧美亚洲视频一区| av中文字幕播放| 欧美二区视频| 精品av久久707| 午夜精品久久久久久久99热影院| 好了av在线| 婷婷综合在线| 欧美不卡视频一区| 亚洲不卡中文字幕无码| 国产女主播在线直播| 六月丁香综合在线视频| 少妇人妻丰满做爰xxx| 欧美性生活一级片| 亚洲美女色播| 久久精品欧美日韩精品 | 蜜芽tv福利在线视频| 午夜在线视频观看日韩17c| 亚洲欧美日本另类| av亚洲天堂网| www.26天天久久天堂| 一区二区三区四区不卡视频| 好看的日韩精品| 丰满肉肉bbwwbbww| 老司机精品视频网站| 久久久精品美女| 青青操在线视频观看| 精品视频高潮| 欧美日韩dvd在线观看| 18黄暴禁片在线观看| 国产精品免费观看| 国产日本欧洲亚洲| 成人高清在线观看| 中国一区二区视频| 亚洲精华国产欧美| 7777kkkk成人观看| 91插插插插插插| 亚洲最新色图| 国产午夜精品美女视频明星a级| 亚洲一级片av| 欧美xxxx做受欧美护士| 在线观看视频91| 欧美美女一级片| 免费观看在线一区二区三区| 欧美成人精品3d动漫h| 日本三级日本三级日本三级极| 成人国产激情在线| 欧美精品tushy高清| 99999精品视频| 日韩中文影院| 欧美一级欧美三级在线观看| 无码人妻精品一区二区三区66| 牛牛精品在线视频| 国产精品国产三级国产aⅴ原创| 久久国产主播精品| 亚洲精品福利网站| 国产精品影视网| 国产综合色一区二区三区| 中文av免费观看| 国产精品资源在线看| 精品亚洲欧美日韩| 免费a在线看| 国产精品国产三级国产| 少妇久久久久久被弄到高潮| 欧美成人高清在线| 亚洲国产精品一区二区尤物区| 美女黄色片网站| www视频在线观看| 亚洲国产精品一区二区久久| 日本成人在线免费视频| 9i看片成人免费高清| 午夜视频久久久久久| 国产aaa免费视频| 久久野战av| 精品久久国产老人久久综合| 色欲AV无码精品一区二区久久 | 日韩av不卡一区二区| 97精品伊人久久久大香线蕉| 国产真实的和子乱拍在线观看| 伊人久久大香线蕉综合四虎小说| 91国内精品久久| 国产三级自拍视频| 国产美女在线精品| 91成人免费看| 国产综合在线观看| 国产精品美女久久久久高潮| 少妇高潮毛片色欲ava片| 91精品网站在线观看| 亚洲欧美一区二区精品久久久| 澳门黄色一级片| 在线播放精品| 91干在线观看| 午夜精品一区二区三| 成人黄色国产精品网站大全在线免费观看| 国产精品区免费视频| 亚洲欧美综合一区二区| 久久精品一区二区三区四区| 一本一生久久a久久精品综合蜜 | 国产日韩欧美精品在线| 福利视频一二区| 中文字幕在线看片| 在线观看区一区二| 日韩片在线观看| 精品国产一区二区三区四区| 日韩资源在线观看| 久草网站在线观看| 久久精品国产久精国产| 日韩三级在线播放| 综合久久2019| 日韩欧美高清在线视频| 999精品免费视频| 激情亚洲成人| 成人精品水蜜桃| 国内高清免费在线视频| 91久久精品一区二区三| 欧美性猛交xxxx乱大交91| 白嫩白嫩国产精品| 亚洲三级免费看| 久久精品五月天| 国产一区二区久久| 国产一级黄色录像片| 亚洲精品国产精品国产| 精品亚洲国产成av人片传媒| 免费看特级毛片| 激情另类小说区图片区视频区| 含羞草久久爱69一区| 超级白嫩亚洲国产第一| 亚洲精品黄网在线观看| 日韩在线视频不卡| 国产成人免费视频网站| 日本一区二区在线| 九九九伊在线综合永久| 精品国产电影一区二区| 精品无码人妻一区二区三| 日韩激情在线观看| 国产伦精品一区二区三区照片| 黄污视频在线观看| 精品视频偷偷看在线观看| 久久精品视频5| 国产精品家庭影院| 又色又爽又黄18网站| 青青草91久久久久久久久| 91视频免费网站| 成年人视频在线免费观看| 亚洲成a人片在线观看中文| 激情综合丁香五月| 青青草国产精品亚洲专区无| 成年人免费观看的视频| 激情都市亚洲| xxxxxxxxx欧美| 成人毛片视频免费看| 色偷偷成人一区二区三区91| 性欧美18—19sex性高清| 亚洲精品99| 成人激情视频在线观看| 成年女人的天堂在线| 在线不卡一区二区| 日韩免费观看一区二区| 丁香一区二区三区| 波多野结衣与黑人| 美女网站一区| 欧美一级黄色网| 香蕉av一区二区三区| 欧美影视一区在线| 免费看裸体网站| 国产精品资源在线| 大香煮伊手机一区| 欧美激情自拍| av色综合网| 亚州一区二区三区| 久久久久国产视频| 亚洲欧美另类一区| 欧美日韩在线直播| 国产午夜精品久久久久久久久| 日本不卡一二三区黄网| 50度灰在线观看| 国产一区二区精品福利地址| 国产精品www| aiai在线| 69堂国产成人免费视频| 顶臀精品视频www| 国产喷白浆一区二区三区| 精品人妻伦一二三区久| 国内成人免费视频| 中文字幕在线导航| 91欧美日韩| 亚洲xxxxx电影| 日本一本在线免费福利| 亚洲黄色在线观看| 国产精品久久久久久久免费| 亚洲激情图片一区| 青青操在线播放| 国产成人在线视频网址| 亚洲一二三区av| 久久成人一区| 亚洲午夜精品久久| 国产一卡不卡| 欧美xxxx黑人又粗又长精品| 韩国精品主播一区二区在线观看| 久久久久久久999精品视频| a视频在线免费看| 亚洲国产精品成人一区二区| 亚洲 欧美 中文字幕| 天天射综合影视| 精品国产aaa| 国产一区二区精品久久| 天天干天天操天天做| 亚洲视频综合| 少妇精品久久久久久久久久| 国产欧美88| 国产日韩在线视频| av手机免费在线观看| 伊人久久大香线蕉av一区二区| 99视频在线观看免费| 9191精品国产综合久久久久久 | 视频一区二区国产| 激情视频综合网| 日本亚洲三级在线| 91激情视频在线| 日本强好片久久久久久aaa| 黄色免费网址大全| 美国欧美日韩国产在线播放| 日本人69视频| 国产乱子轮精品视频| 真实乱偷全部视频| 媚黑女一区二区| 久久黄色免费看| 久久丁香综合五月国产三级网站| www国产精品内射老熟女| 亚洲激情另类| 免费观看精品视频| 国产精品啊啊啊| 成人免费视频91| 新狼窝色av性久久久久久| 五月婷婷深爱五月| 国产一区二区在线视频| 亚洲v在线观看| 精品系列免费在线观看| 色婷婷综合在线观看| 奇米精品一区二区三区在线观看| 日本xxxx黄色| 免费日韩av| 亚洲欧美另类动漫| 国产自产2019最新不卡| 国产一线在线观看| 国产偷国产偷亚洲高清人白洁| 精品国产大片大片大片| 亚洲在线视频一区| 中文字幕在线有码| 性做久久久久久久免费看| 激情视频网站在线观看| 91精品国产色综合久久不卡蜜臀 | 黄在线观看免费网站ktv| 国产成人在线视频| 在线免费三级电影网站| 国产日韩欧美另类| 菁菁伊人国产精品| 亚洲欧洲一区二区在线观看| 亚洲视频狠狠| 免费黄色一级网站| 国产高清亚洲一区| 手机看片福利视频| 亚洲国产综合人成综合网站| 18岁成人毛片| 色国产综合视频| 亚洲第一成人av| 中文字幕av一区中文字幕天堂| 久久久久久久影视| 欧美激情18p| 免费毛片在线看片免费丝瓜视频| 日本精品一区二区三区在线播放视频 | 日韩国产一区二区| 亚洲mv在线看| 最新日韩在线| 亚洲综合伊人久久| 国产日产欧美一区二区视频| 日本一区二区三区免费视频| 香蕉加勒比综合久久| 一级片在线免费观看视频| 日韩精品中文字幕有码专区| 色呦呦在线视频| 国产中文字幕亚洲| 精品视频97| 欧美 日韩 国产一区| 成人精品电影在线观看| 中文字幕亚洲欧美日韩| 欧美色综合天天久久综合精品| 亚州精品国产精品乱码不99按摩| 九九精品视频在线观看| 毛片电影在线| 99在线视频首页| 欧美福利一区| 999久久久精品视频| 国产精品网站一区| 欧美日韩中文字幕在线观看| 欧美视频精品在线观看| 户外极限露出调教在线视频| 57pao成人国产永久免费| 国产精品视屏| 青青成人在线| 国产精品综合色区在线观看| 牛夜精品久久久久久久| 91麻豆国产精品久久| 女人黄色一级片| 在线视频你懂得一区| 欧美理论在线观看| 日韩av片永久免费网站| 欧美**字幕| 亚洲五月天综合| 欧美激情综合网| 国产裸体美女永久免费无遮挡| 精品无人国产偷自产在线| 伊人久久国产| 欧美日本韩国国产| 性欧美欧美巨大69| 99re6在线观看| 亚洲人成7777| 天天操天天操天天操天天| 7777精品伊人久久久大香线蕉最新版| 在线观看完整版免费| 91精品在线影院| 欧美成熟视频| 影音先锋资源av| 欧美日韩国产中字| 国产精品羞羞答答在线| 久热99视频在线观看| 手机看片久久| av日韩免费电影| 国产视频亚洲| 永久免费av无码网站性色av| 欧美日韩中文国产| av观看在线| 国语精品中文字幕| 日韩在线a电影| 91 在线视频| 亚洲第一色中文字幕| 日韩成人影音| 日本一区二区免费高清视频| 粉嫩av一区二区三区| 黄色录像一级片| 精品久久久久久亚洲综合网| 国产美女精品写真福利视频| 视频一区视频二区视频三区视频四区国产 | 国产精品久久999| 影视亚洲一区二区三区| 精品一区二区视频在线观看| 在线免费亚洲电影| 97caopor国产在线视频| 久久久久久欧美精品色一二三四| 麻豆国产欧美日韩综合精品二区 | 亚洲人成人一区二区三区| 成年人免费观看视频网站| 亚洲国产精品久久一线不卡| 天堂影院在线| 午夜精品久久久99热福利| 国产不卡一二三区| 黑人巨大猛交丰满少妇| 福利视频第一区| 黄色成人影院| 欧美日韩国产三区| 国产精品一区不卡| 天天干天天操天天操| 亚洲片在线观看| 欧美特黄不卡| 亚洲狼人综合干| 亚洲国产日韩在线一区模特| 8888四色奇米在线观看|