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

Quickwit 101 - 基于對象存儲的分布式搜索引擎架構

開發 架構
你可能會疑惑,Quickwit 如何能夠在索引器每 10 秒提交一次的情況下生成包含 1000 萬份文檔的 split。答案在于 Quickwit 的合并管道,它負責將一組 split 合并,直到達到一定數量的文檔。

在本文中,我們將深入探討 Quickwit 的架構及其關鍵組件。本文與 Quickwit 的基準測試 配合閱讀效果更佳,該測試基于一個 23TB 的數據集。

  • https://quickwit.io/blog/benchmarking-quickwit-engine-on-an-adversarial-dataset

Quickwit 標志的靈感來源于 Paul 的想法,即軟件和動態藝術具有一種有趣的共性。如果你觀看 Theo Jansen 的作品,你會看到迷人的風力驅動雕塑在海灘上行走,其復雜程度讓人難以理解其工作原理。這種神秘感也類似于使用軟件的感受。當我們查看大型代碼庫時,這些復雜的構造能夠正常運行似乎有些神奇……然而,大多數時候它們確實可以正常工作。

  • https://github.com/fulmicoton
  • https://www.youtube.com/watch?v=LewVEF2B_pM&ab_channel=theojansen

但我們是工程師!我們不滿足于神奇的現象,我們想要了解事物的工作原理,并且不會僅僅因為軟件的美觀而做出決定……(是嗎?)。確實,如果我們不想讓引擎在關鍵時刻出問題并且能夠安心睡覺的話(我也犯過很多這樣的錯誤……),理解引擎內部工作原理是非常重要的。沒有必要涵蓋所有細節,建立一個系統的良好心理模型就足夠了,這樣可以理解它的局限性和如何高效地使用它。

這就是本文的目的:深入探討 Quickwit 的架構及其關鍵組件,以便你可以建立一個簡潔準確的系統心理模型。現在讓我們開始吧!

計算與存儲解耦

Quickwit 架構的核心原則是計算與存儲的分離。我們的方法與 Datadog 通過 Husky 所做的非常相似(但早于他們),目標也是相同的:成本效益和可擴展性,同時避免集群管理的噩夢。

  • https://www.datadoghq.com/blog/engineering/introducing-husky/

這種方法使我們將索引(寫路徑)和搜索(讀路徑)完全分開。索引器和搜索器通過元存儲共享相同的世界視圖。索引器向存儲寫入數據并更新元存儲,而搜索器從存儲和元存儲讀取數據。

在當前的 Quickwit 中,元存儲通常由 PostgreSQL 數據庫支持。但是 Quickwit 還有一個更簡單的實現,其中元存儲由存儲在對象存儲上的簡單 JSON 文件支持;對于簡單的情況,無需依賴外部數據庫。這是本文選擇的配置。

圖片圖片

索引

為了向 Quickwit 提供數據,你通常會將 JSON 文檔發送到索引器的攝入 API。索引器然后對這些文檔進行“索引”:它將文檔流分割成短批次,并為每個批次創建一個索引片段(具體來說是一個文件)。我們可以配置生成這些片段的時間間隔(參見 commit_timeout_secs)。這些片段隨后上傳到 S3。

  • https://quickwit.io/docs/configuration/index-config#indexing-settings

在上傳開始時,索引器將元存儲中的片段元數據標記為 Staged。一旦上傳完成,狀態變為 Published,表示片段可用于搜索。從文檔攝入到搜索準備好的時間間隔稱為“搜索時間”,大致等于 commit_timeout_secs + upload_time。

這些步驟由一個處理管道實現,詳細信息見此 相關文章。

  • https://quickwit.io/blog/quickwit-actor-framework

圖片圖片

解析 ‘Split’

為了提供搜索查詢的上下文,理解 “split” 包含的內容至關重要,因為這是索引的數據單位。它是一個獨立的索引,具有自己的模式,并且包含了針對快速有效搜索和分析操作優化的數據結構:

  • 倒排索引:用于全文搜索。對于那些想深入了解的人,我強烈推薦閱讀 fulmicoton 的博客文章 1 和 2。

https://twitter.com/fulmicoton

https://fulmicoton.com/posts/behold-tantivy/

https://fulmicoton.com/posts/behold-tantivy-part2/

  • 列式存儲:用于排序和分析目的。
  • 行式存儲:用于根據文檔 ID 檢索文檔。
  • 熱緩存:可以將其視為索引的藍圖。包含前面數據結構的元數據,確保搜索器僅檢索必要的數據。熱緩存是搜索器檢索的第一部分數據;通常保留在內存中。

為了說明這一點,我們來看一個實際例子:一個包含 1000 萬條 GitHub 歸檔事件的 split,其中所有文檔字段都啟用了所有數據結構。

圖片圖片

split 的大小約為 15GB。與未壓縮的文檔大小相比,其壓縮比接近 3。需要注意的是,可以通過僅在相關字段上啟用特定存儲來優化這一比率。

最后,熱緩存具有一個很好的特性:它占 split 大小的比例不到 0.1%,大約 10MB,這意味著它可以輕松地放入 RAM 中。

關于合并的一點說明

你可能會疑惑,Quickwit 如何能夠在索引器每 10 秒提交一次的情況下生成包含 1000 萬份文檔的 split。答案在于 Quickwit 的合并管道,它負責將一組 split 合并,直到達到一定數量的文檔。這主要有兩個原因:

  • 性能提升:你不希望在每次搜索請求時打開許多小的 split。這也大大減少了元存儲需要處理的數據量。通過合并,我們最終可以在 PostgreSQL 中為每 1000 萬份文檔保留一行記錄。
  • 成本效益:你希望限制每次搜索請求中的 GET 請求次數。

搜索

在讀取側,當搜索器接收到搜索請求時,它會經歷以下步驟:

  1. 元存儲檢索:搜索器獲取 metastore.json 文件。
  2. split 列表:列出與搜索請求相關的 split。這一階段特別利用了搜索請求的時間范圍來排除不符合時間范圍的 split。
  3. 葉搜索執行:對于每個 split,執行并發的「葉搜索」。它包括:

(IO) 獲取 split 的熱緩存。

(IO) 預熱階段:對于每個詞條,它獲取發布列表的字節范圍,然后獲取發布列表本身。如果有必要,它還會獲取搜索所需的定位信息和列。為了便于閱讀,預熱階段在下面的圖表中表示為單一的獲取,但實際上可能是多次獲取。

(CPU) 搜索階段:在 split 上運行查詢。

  1. 結果聚合:聚合葉搜索的結果。
  2. 文檔獲取:搜索器從相關 split 中獲取文檔。
  3. 結果返回:最終將匹配的文檔和/或聚合返回給用戶。

這導致了以下讀取路徑:

圖片圖片

元存儲

讓我們回到索引器和搜索器共享的視圖:元存儲。它存儲了我們在前幾節部分看到的關于索引的關鍵信息:

  • 索引配置:文檔映射、時間戳字段、合并策略等。
  • split 元數據:如果你的數據集有一個時間字段,Quickwit 會特別存儲每個 split 的最小和最大時間戳值,從而在搜索時啟用基于時間的過濾。
  • 檢查點:對于每個數據源,一個“源檢查點”記錄了已處理的文檔的截止點。如果你使用 Kafka 作為數據源,檢查點包含每個分區的起始和結束偏移量,這些偏移量被索引到 Quickwit 中。這解鎖了恰好一次語義。

元存儲可以由 PostgreSQL 或存儲在對象存儲上的單個 JSON 文件支持。后者用于本文,因為它是最簡單的配置。以下是元存儲內容的一個快照:

metastore.json

{
    "index_uri": "s3://indexes/{my-index}",
    "index_config": {...},
    "splits": [
        {
            "split_id": "...",
            "num_docs": 10060714,
            "split_state": "Published",
            "time_range": {
                "start": 1691719200,
                "end": 1691936694
            },
            "split_footer": {
              "start": 1612940400,
              "end": 1616529599
            }
            ...
        }
    ],
    "checkpoints": {
      "a": "00000000000000000128",
      "b": "00000000000000060187",
      ...
    }
}

你注意到那個令人好奇的 split_footer 字段了嗎?那是……熱緩存的字節范圍!

分布式索引和搜索

分布式索引和搜索引入了一些挑戰:

  • 集群形成:Quickwit 使用了一個名為 Chitchat 的開源實現來形成集群,這個實現基于 Scuttlebutt。

https://quickwit.io/docs/overview/architecture#cluster-formation

https://www.cs.cornell.edu/home/rvr/papers/flowgossip.pdf

  • 元存儲寫入:在寫入路徑上,只有一個進程應該處理對元存儲文件的寫入。為此,一個單獨的 metastore 角色實例讀取/寫入 JSON 文件。其他集群成員向此實例發送讀取/寫入 gRPC 請求。
  • 索引任務分配:一個控制平面角色負責將索引任務分配給各個索引器。
  • 搜索工作負載分配:這需要一個 Map-Reduce 機制。接收搜索請求的搜索器承擔“根”角色,將葉子請求委托給“葉子節點”,然后聚合并返回結果。

以下是寫入路徑的可視化表示:

圖片圖片

類似地,對于讀取路徑:

圖片圖片

要進行更深入的了解,請參閱我們的 文檔。

  • https://quickwit.io/docs/overview/architecture
責任編輯:武曉燕 來源: 黑客下午茶
相關推薦

2014-11-25 10:09:59

ElasticSear分布式搜索引擎Lucene

2022-08-15 14:56:30

搜索引擎分布式

2020-07-31 09:55:27

Linux分布式Elasticsear

2011-06-20 18:23:06

SEO

2019-07-10 13:17:07

大數據搜索代碼

2022-10-14 07:42:50

LuceneHTTPWeb

2009-02-19 09:41:36

搜索引擎搜狐百度

2009-09-22 16:23:52

搜索引擎

2018-10-16 14:26:22

分布式塊存儲引擎

2017-08-07 08:15:31

搜索引擎倒排

2020-03-20 10:14:49

搜索引擎倒排索引

2024-03-18 00:00:01

分布式搜索引擎

2010-06-13 16:27:28

搜索引擎

2023-12-07 09:17:44

java分布式

2016-12-26 13:41:19

大數據搜索引擎工作原理

2012-09-07 13:22:21

搜索搜狗

2022-10-08 09:13:18

搜索引擎?站

2010-04-20 11:43:46

2025-05-16 08:58:47

Mongodb分布式存儲

2020-02-24 08:52:08

開源索引YaCy
點贊
收藏

51CTO技術棧公眾號

动漫一区在线| 国产尤物在线观看| 奇米亚洲欧美| 欧美人妖巨大在线| 国产在线xxxx| 韩国三级av在线免费观看| 蜜桃久久久久久| 欧美精品电影在线| 夫妇交换中文字幕| 成人盗摄视频| 色av一区二区| 欧美a级黄色大片| 久久久久久青草| 国产高清久久久| 国产成人精品网站| 国产乱码久久久久久| 久久精品国产www456c0m| 亚洲电影免费观看高清完整版在线| 无遮挡又爽又刺激的视频| 伊人福利在线| 国产精品久久久久9999吃药| 九九九九九精品| www.超碰在线.com| 麻豆精品一区二区综合av| 91精品国产高清自在线看超| 亚洲国产精品久| 欧美gvvideo网站| 亚洲欧美日韩国产中文专区| 日本国产在线视频| 午夜视频一区二区在线观看| 欧美日韩日日摸| 日韩一级免费在线观看| 超碰高清在线| 亚洲成人自拍一区| 久久香蕉视频网站| 成人免费高清| 亚洲欧洲成人av每日更新| 日韩免费中文专区| 国产中文字幕在线播放| 97久久精品人人爽人人爽蜜臀| 国产91色在线|亚洲| 国产免费一区二区三区最新不卡 | 深夜福利在线观看直播| 成人免费视频视频在线观看免费| 91亚洲精品在线| 懂色aⅴ精品一区二区三区蜜月| 亚洲精品日韩在线观看| 黄色毛片在线看| 亚洲四虎影院| 色乱码一区二区三区88| 91av资源网| 竹内纱里奈兽皇系列在线观看 | 亚洲精品小视频| 中文在线观看免费视频| 97久久综合精品久久久综合| 精品国产乱码久久| 成人在线电影网站| 日本欧美高清| 亚洲人成电影网站色| 亚洲国产av一区| 国产毛片一区二区三区| 国产亚洲日本欧美韩国| 国产欧美小视频| 99久久夜色精品国产亚洲狼| 九九久久精品一区| 国产无遮挡又黄又爽在线观看| 精品成人国产| 日本91av在线播放| 久久这里只有精品9| 久久99久久精品| 成人免费视频观看视频| 五月婷婷久久久| 日本一区二区三级电影在线观看| 中文字幕欧美日韩一区二区| 日韩三级电影视频| 五月激情综合婷婷| 色综合手机在线| 日韩成人视屏| 日韩精品小视频| 天堂资源在线视频| 中出一区二区| 国产91精品视频在线观看| 制服丝袜在线一区| 国产99久久久精品| 视频一区视频二区视频三区视频四区国产| 亚洲精品传媒| 五月天久久比比资源色| 伊人色在线观看| 好吊妞视频这里有精品| 亚洲性生活视频| 欧美激情一区二区视频| 老司机精品福利视频| 亚洲xxx自由成熟| 你懂的好爽在线观看| 亚洲男人天堂一区| 日韩a在线播放| 精品国产第一国产综合精品| 日韩成人av在线| 男人操女人的视频网站| 久久成人一区| 国产精品久久久久久久久久直播| 二区在线视频| 亚洲高清久久久| 国产日韩在线播放| 成人av无码一区二区三区| 久久一区二区三区国产精品| mm131午夜| 日韩电影免费观看高清完整版| 日韩欧美在线网站| 怡红院一区二区三区| 激情欧美亚洲| 91青草视频久久| 高清毛片在线看| 亚洲成av人片一区二区三区 | 国内欧美日韩| 亚洲精品国产福利| 久久久久性色av无码一区二区| 青青草国产成人av片免费| 久久99蜜桃综合影院免费观看| 曰本三级在线| 91精品国产欧美日韩| 国产毛片欧美毛片久久久| 国产农村妇女精品一区二区| 99中文视频在线| 中文字幕在线三区| 在线电影院国产精品| 免费福利视频网站| 鲁大师成人一区二区三区| 国产尤物99| 动漫一区二区| 欧美不卡视频一区| 黄色片在线观看网站| 韩国欧美国产一区| 一区二区三区不卡在线| 国产一区精品福利| 亚洲最大在线视频| 中文字幕日日夜夜| 欧美激情一区二区三区在线| 韩国一区二区av| 久久av超碰| 日韩暖暖在线视频| 国产精品无码2021在线观看| 91久久久免费一区二区| 欧美做受高潮6| 日韩国产精品久久久久久亚洲| 欧美人与物videos另类| 网友自拍亚洲| 国产一区二区三区在线观看网站| 波多野结衣一二区| 国产精品污www在线观看| 日韩精品你懂的| 久久精品不卡| 91人成网站www| 午夜成年人在线免费视频| 日韩你懂的电影在线观看| 欧美成人aaa片一区国产精品| 国产精品一二三在| 黄色一级片在线看| 一区三区在线欧| 国产精品成人一区| caopen在线视频| 欧美不卡一区二区三区| 日本中文在线播放| 国产欧美一区二区三区在线老狼| 午夜剧场高清版免费观看| 综合av在线| 精品产品国产在线不卡| 成人做爰视频www网站小优视频| 在线视频欧美日韩精品| 国产绳艺sm调教室论坛| 亚洲国产wwwccc36天堂| 在线 丝袜 欧美 日韩 制服| 免费成人小视频| 精品人妻大屁股白浆无码| 窝窝社区一区二区| 国产日韩欧美日韩| а√天堂8资源在线| 在线视频日韩精品| 亚洲精品久久久久久久久久| 日韩欧美在线第一页| 男人av资源站| av高清不卡在线| 中文字幕在线导航| 欧美国内亚洲| 欧日韩一区二区三区| www一区二区三区| 555www成人网| 三区四区电影在线观看| 亚洲国产精品一区二区三区| 中文字幕你懂的| 亚洲动漫第一页| 男人天堂资源网| 99久久伊人精品| 国产精品自在自线| 久久精选视频| 国产在线观看欧美| 日产精品一区二区| 国语精品免费视频| 日本伊人久久| 国产欧美一区二区三区久久 | 黄色av日韩| 先锋影音一区二区三区| 久久影院资源站| 亚洲free嫩bbb| 欧美www.| 亚洲 欧美 日韩在线| 黄色网址在线免费| 亚洲福利视频网站| 中文在线字幕免费观| 亚洲国产欧美在线| 亚洲少妇xxx| 久久网站热最新地址| 性折磨bdsm欧美激情另类| 免费在线看一区| 久久国产乱子伦免费精品| 国产精品mv在线观看| 亚洲永久激情精品| 欧美中文一区二区| 欧美动漫一区二区| 国产精品久久久久av蜜臀 | 日韩一区二区三免费高清在线观看| 97精品国产97久久久久久春色| 成人福利片网站| 中文字幕一精品亚洲无线一区 | 日韩欧美ww| 国产精品污www一区二区三区| 99久久久成人国产精品| 国产精品专区h在线观看| 在线成人视屏| 欧美亚洲视频在线看网址| www.8ⅹ8ⅹ羞羞漫画在线看| 色综合久久悠悠| caoporn97在线视频| 久久国产精品影视| 国产激情在线视频| 欧美成人精品一区| 欧美人与禽性xxxxx杂性| 欧美成人精品在线观看| 在线中文免费视频| 九九久久久久99精品| 日本动漫同人动漫在线观看| 欧美乱妇高清无乱码| 欧美大胆的人体xxxx| 久久久久久香蕉网| 高清在线视频不卡| 91av在线精品| 欧美aaa大片视频一二区| 国产精品h片在线播放| 青青热久免费精品视频在线18| 国产精品视频专区| 亚洲日本中文| 成人av网站观看| 理论片一区二区在线| 久久精品日产第一区二区三区精品版 | 亚洲午夜黄色| 国产精品久久中文字幕| 香蕉视频成人在线观看| 五月婷婷之综合激情| 激情都市一区二区| 白丝校花扒腿让我c| 91丨九色丨尤物| 九九热久久免费视频| 亚洲靠逼com| 日本熟妇一区二区| 色美美综合视频| 国产又黄又爽视频| 亚洲第一福利在线观看| 美州a亚洲一视本频v色道| 日韩亚洲成人av在线| 欧洲精品二区| 日本一区二区三区四区视频| 欧美性www| 国产精品一区二区av| 欧美男gay| 熟女视频一区二区三区| 国产亚洲永久域名| 粉色视频免费看| 成人av综合一区| 日本视频在线免费| 五月婷婷综合在线| 中文字幕制服诱惑| 精品国精品国产| 大地资源中文在线观看免费版| 欧美成人精品激情在线观看 | 国内外激情在线| 777午夜精品福利在线观看| 亚洲国产91视频| 久久综合入口| 一区二区三区四区在线观看国产日韩 | 日本中文字幕一区二区视频| 国产精品91av| 国产精品午夜免费| 免费看日韩毛片| 欧美一区二区黄色| 91精品大全| 欧美一级在线播放| 欧美成年网站| 亚洲国产高清国产精品| 一本久道久久综合狠狠爱| 日韩高清在线一区二区| 久久男人中文字幕资源站| 欧美毛片在线观看| 欧美精品久久久久久久久老牛影院| 手机在线观看毛片| xxxxxxxxx欧美| 日本综合视频| 久久精品国产精品青草色艺| 欧美视频二区| 午夜一区二区视频| 久久精品日韩一区二区三区| 国产一级性生活| 欧美一区二区三区电影| 欧美日韩视频在线播放| 国产精品美女免费| 精品中文一区| 国产自产在线视频| 国产福利视频一区二区三区| 国产成人免费在线观看视频| 91成人免费在线视频| 三级av在线| 97色在线观看免费视频| 风间由美中文字幕在线看视频国产欧美 | 精品夜夜澡人妻无码av| 亚洲6080在线| 黄色av中文字幕| 欧美精品成人在线| av综合网页| 91成人综合网| 国产黄人亚洲片| 黄色一级片在线| 日韩精品在线网站| 日本在线视频网址| 99热99热| 好吊一区二区三区| 国产人成视频在线观看| 亚洲第一狼人社区| 天天干,夜夜爽| 欧美在线视频免费播放| 亚洲电影男人天堂| 午夜精品久久久内射近拍高清| av一区二区三区四区| 西西44rtwww国产精品| 亚洲欧美日韩精品久久奇米色影视| 最新欧美色图| 青青草久久网络| 免费精品99久久国产综合精品| 懂色av蜜臀av粉嫩av永久| 7777精品伊人久久久大香线蕉完整版 | 黄色欧美日韩| 中文字幕a在线观看| 精品久久香蕉国产线看观看亚洲 | 久久久久久久久97黄色工厂| 91青青草视频| 最近免费中文字幕视频2019| www.久久草.com| 日本熟妇人妻xxxx| 97成人超碰视| 亚洲天堂视频在线播放| www.亚洲一区| 中文字幕日韩在线| 久久久亚洲精品无码| 久久精品人人爽人人爽| 中文字幕你懂的| 欧美高清在线视频观看不卡| 亚洲大片精品免费| 亚洲欧洲日本精品| 亚洲一级二级三级| 青青草娱乐在线| 成人黄色免费片| 亚洲精品在线二区| 欧美老女人性生活视频| 日韩西西人体444www| free性m.freesex欧美| 神马影院一区二区| 国产精品1区二区.| 日本视频网站在线观看| 久久久91精品| 日韩深夜影院| 成人黄色一级大片| 精品日本美女福利在线观看| 四虎久久免费| 国产一区二区免费在线观看| 奇米精品一区二区三区在线观看| 久热这里有精品| 亚洲欧美日韩精品久久奇米色影视 | 色综合久久99| 麻豆传媒在线观看| 欧美大香线蕉线伊人久久| 国产裸体歌舞团一区二区| 精品人妻一区二区三区免费看| 久久成人一区二区| 国产日韩视频在线| 日批视频免费看| 欧美日韩色综合| 在线毛片观看| 久久成人福利视频| 亚洲色欲色欲www在线观看| 黄色片在线免费看| 国产亚洲精品美女久久久m| 久久国产日韩欧美精品|