精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美夫妻性视频| 欧美三区在线观看| 另类欧美小说| 五月婷婷六月婷婷| 亚洲欧美一区在线| 亚洲欧美另类人妖| 杨幂一区二区国产精品| 密臀av在线播放| 国产欧美1区2区3区| 亚洲最大成人网色| 老熟妇仑乱一区二区av| 午夜精品影院| 亚洲日韩第一页| 久久国产免费视频| 亚洲日本网址| 精品福利视频导航| 中文字幕av久久| 久草在线免费福利资源| 国产成人精品一区二区三区四区 | 日韩成人伦理电影在线观看| 麻豆乱码国产一区二区三区| 精品无码在线观看| 菁菁伊人国产精品| 欧美一区永久视频免费观看| 日本在线视频www| 啊啊啊久久久| 亚洲一区在线看| 中文字幕一区二区中文字幕| 性感美女一级片| 懂色av一区二区三区免费观看| 国产欧洲精品视频| 日韩精品在线一区二区三区| 亚洲精华国产欧美| 欧美激情aaaa| 国产性一乱一性一伧一色| 1024精品久久久久久久久| 亚洲欧美日韩国产成人| 欧美无人区码suv| 91精品入口| 日韩免费性生活视频播放| 17c国产在线| 国产精品久久久久77777丨| 色综合欧美在线视频区| 国产肥臀一区二区福利视频| 国产在线xxx| 一区二区三区在线视频免费观看 | 国产交换配乱淫视频免费| 激情小说亚洲图片| 欧美精品一区二区蜜臀亚洲| 韩国三级在线看| 中文在线免费一区三区| 日韩久久久精品| 91porn在线| 一区视频网站| 亚洲国产天堂久久国产91| 色哟哟视频在线| 欧美五码在线| 亚洲午夜久久久久久久| 日韩免费成人av| 日韩欧美大片| 久久这里有精品| 日韩a级片在线观看| 中文无码久久精品| 欧美精品xxx| 亚洲 欧美 成人| 免费久久99精品国产| 成人黄色网免费| 性中国xxx极品hd| www.亚洲色图| 日韩免费中文专区| 日本暖暖在线视频| 亚洲综合男人的天堂| 国产真人做爰毛片视频直播| 无码小电影在线观看网站免费| 91黄色免费版| 毛片毛片毛片毛| 999久久久精品一区二区| 亚洲国产精品久久久久秋霞蜜臀| 37p粉嫩大胆色噜噜噜| 欧美手机在线| 久久久久久国产免费| 91午夜视频在线观看| 男人的天堂久久精品| 91入口在线观看| 性高潮久久久久久久久久| 欧美韩日一区二区三区四区| 伊人再见免费在线观看高清版| 国产在线精彩视频| 欧美色倩网站大全免费| 黑森林av导航| 日韩久久精品| 久久久久中文字幕2018| 做爰无遮挡三级| 国产精一区二区三区| 免费亚洲精品视频| 影音先锋男人在线资源| 精品动漫一区二区三区| 中文字幕资源在线观看| 日本午夜精品| 久久成人在线视频| 精品国产乱子伦| 国产成人精品免费网站| 日韩在线观看电影完整版高清免费| 国产黄色小视频在线| 欧美性猛交xxxx富婆| 爱情岛论坛亚洲自拍| 国产毛片一区二区三区| 久久久久久伊人| 一本到在线视频| 久久久久久久久99精品| 国产精品69久久久| 欧美aaaaaaaa| 亚洲毛茸茸少妇高潮呻吟| 欧美黄片一区二区三区| 麻豆精品精品国产自在97香蕉| 国产区一区二区三区| 老司机av在线免费看| 欧美综合视频在线观看| 国产十八熟妇av成人一区| 香蕉国产精品| 国产精品日日摸夜夜添夜夜av| 香蕉视频网站在线| 亚洲国产日产av| 奇米777在线| 欧美超碰在线| 国产精品久久久久久久久男 | 中文字幕亚洲综合久久| 69视频免费在线观看| 成人免费精品视频| 日本免费黄色小视频| 欧美成人毛片| 一区二区三区久久精品| 五月天激情四射| 97超碰欧美中文字幕| 黄色激情在线视频| 99re热精品视频| 欧美激情一区二区三级高清视频| 国产精品福利电影| 亚洲视频1区2区| www.久久av.com| 天天精品视频| 91免费福利视频| 国产视频在线播放| 日韩色视频在线观看| 国产精品国产三级国产传播| 极品少妇一区二区三区精品视频| 亚洲激情啪啪| 欧美高清免费| 久久久成人av| 亚洲av无码一区二区三区性色| 一区二区三区日韩欧美精品| 中文字幕乱妇无码av在线| 欧美国产专区| 激情一区二区三区| 亚洲欧洲自拍| 国产亚洲a∨片在线观看| 91丨九色丨海角社区| 国产精品沙发午睡系列990531| 男人添女人下面免费视频| 久久国产小视频| 91免费在线视频网站| 国产在线观看av| 精品国产三级a在线观看| 1级黄色大片儿| 91理论电影在线观看| 波多野结衣作品集| 91久久夜色精品国产按摩| 91亚洲人电影| 俺来也官网欧美久久精品| 亚洲欧美成人精品| 中文字字幕在线中文乱码| 亚洲欧美在线视频观看| 美女扒开腿免费视频| 天堂影院一区二区| 国产大尺度在线观看| 国产精品色呦| 国产精品27p| 手机av免费在线| 日韩高清av一区二区三区| 亚洲天堂视频网| 一区二区在线观看视频 | 1区2区3区国产精品| 亚洲婷婷在线观看| 日本中文字幕一区| 国产精品久久久久久久乖乖| 国产精品三级| 97免费高清电视剧观看| 中文字幕在线看片| 久久中文精品视频| 免费av在线电影| 日韩欧美一区二区在线视频| 国产成人免费看| 一区二区三区在线播放| 久久精品国产亚洲av久| 国产一区二区按摩在线观看| 欧美成人xxxxx| 欧美高清不卡| 神马影院午夜我不卡影院| 中文久久电影小说| 国产欧美在线播放| 国产精品伦理| 久久久亚洲天堂| 免费看a在线观看| 国产一区二区黄| 蜜桃视频污在线观看| 欧美福利视频导航| 国产免费一级视频| 亚洲6080在线| 免看一级a毛片一片成人不卡| 中文字幕免费一区| 成人无码www在线看免费| 国产一区二区三区四区五区美女 | 北条麻妃久久精品| 免费在线视频你懂得| 精品电影一区二区| 国产露脸91国语对白| 欧美性色黄大片手机版| 日本中文字幕在线免费观看| 亚洲精品亚洲人成人网在线播放| 欧美熟妇激情一区二区三区| a级高清视频欧美日韩| 青娱乐国产精品视频| 麻豆国产欧美一区二区三区| 麻豆传传媒久久久爱| 亚欧成人精品| 欧美 国产 综合| 亚洲国产高清视频| 国产九色porny| 国产精品videosex极品| 丰满女人性猛交| 欧美电影三区| 亚洲人成77777| 欧美自拍偷拍| 亚洲一区免费看| 日韩大片在线| 亚洲欧洲精品在线观看| 不卡一区2区| 亚洲精品视频一二三| 国产欧美日韩视频在线| 欧美一区1区三区3区公司| 四虎5151久久欧美毛片| 精品一区二区视频| 私拍精品福利视频在线一区| 蜜桃91精品入口| 亚州综合一区| 欧美午夜精品久久久久免费视| 欧美深夜视频| 日本一区二区不卡高清更新| 欧美日韩中文一区二区| 视频一区二区在线| 欧美超碰在线| 国产日产欧美一区二区| 欧美视频成人| 无码中文字幕色专区| 99伊人成综合| 日韩中文字幕免费在线| 日本aⅴ亚洲精品中文乱码| 一区二区三区 欧美| 美日韩一级片在线观看| 91香蕉视频在线观看视频| 高清在线观看日韩| 亚洲精品女人久久久| 久久精品一区四区| 国产又粗又长免费视频| 亚洲欧美日韩久久精品| 久久久久久欧美精品se一二三四 | 国产情侣免费视频| 欧美精品一二三| 成 人片 黄 色 大 片| 亚洲精品美女在线| 成全电影播放在线观看国语| 久久精品中文字幕免费mv| 狂野欧美性猛交xxxxx视频| 亚洲91av视频| 成人在线视频免费| 国产精品传媒毛片三区| 深爱激情综合网| 波多野结衣激情| 日韩午夜av| 在线免费av播放| 成人一区二区三区| 亚洲AV无码成人精品区明星换面| 亚洲色图一区二区三区| 亚洲国产成人精品激情在线| 欧美主播一区二区三区| 亚洲国产精品久久久久久久| 亚洲天堂成人在线| av片在线观看| 国产成人精品久久久| 亚洲一区二区三区免费| 欧美一级片免费观看| 欧美另类综合| av网站在线不卡| 99久久国产综合精品麻豆| 国产免费美女视频| 色婷婷av一区二区三区之一色屋| av网站在线免费看| 亚洲色图17p| 免费看电影在线| 国产免费一区二区三区在线观看| 高潮久久久久久久久久久久久久| 午夜精品福利一区二区| 亚洲国产精品第一区二区三区| 超碰超碰在线观看| 2021中文字幕一区亚洲| 国产精品白嫩白嫩大学美女| 色哟哟一区二区| 日本人妻熟妇久久久久久| 久久精品欧美视频| 欧美影视资讯| 精品亚洲第一| 激情欧美日韩一区| 91aaa精品| 国产精品第五页| 怡红院av久久久久久久| 亚洲国产精品中文| 性网站在线观看| 国产日韩av在线| 成人精品影院| 不要播放器的av网站| 99精品视频一区| 国产精品二区一区二区aⅴ| 欧美一级在线观看| 老司机午夜在线视频| 国产精品欧美亚洲777777| 欧美猛男做受videos| 97成人在线免费视频| 成人自拍视频在线| 欧美日韩偷拍视频| 91麻豆精品国产自产在线| 日本精品在线| 国产美女精彩久久| 欧美三级美国一级| 999精品网站| 国产日本欧洲亚洲| 欧美三级网站在线观看| 亚洲丝袜在线视频| 成人看片网页| 天天好比中文综合网| 久久一二三四| 国产sm调教视频| 91久久线看在观草草青青| 国产视频在线看| 国产精品视频播放| 欧美国产美女| 日韩av影视大全| 一区二区三区日韩精品| 亚洲老妇色熟女老太| 国产69精品99久久久久久宅男| 美女网站色精品尤物极品姐弟| 男人添女人下面高潮视频| 97超碰欧美中文字幕| 国产黄色免费视频| 色噜噜狠狠色综合网图区| 欧美经典影片视频网站| 国产精品自拍合集| 99精品桃花视频在线观看| 亚洲精品中文字幕乱码三区91| 国产一区av在线| 日日狠狠久久| 激情六月天婷婷| 97久久久精品综合88久久| 无码人妻熟妇av又粗又大| 中文字幕日韩综合av| 警花av一区二区三区| 欧美日韩不卡在线视频| 久久精品一区四区| 国产精品嫩草影院桃色| 色综合色综合久久综合频道88| 国产欧美三级电影| 国产a级片免费观看| 成人免费在线观看入口| 手机看片福利永久| 国产精品黄色影片导航在线观看| 天天做综合网| 欧美无人区码suv| 欧美精品日韩精品| 国产免费拔擦拔擦8x高清在线人| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 亚洲欧美va天堂人熟伦| 91精品国产色综合久久不卡蜜臀| 国产丝袜精品丝袜| 亚洲国产午夜伦理片大全在线观看网站| 狠狠色丁香婷婷综合久久片| 日产精品久久久久| 中文字幕不卡在线视频极品| 91九色鹿精品国产综合久久香蕉| 哪个网站能看毛片| 亚洲免费资源在线播放| 日本福利午夜视频在线| 亚洲最大成人免费视频| 天堂影院一区二区| 精国产品一区二区三区a片| 亚洲亚裔videos黑人hd| xvideos.蜜桃一区二区| 久久精品影视大全| 懂色av一区二区三区| 国产精品刘玥久久一区| 日韩在线第一区| 色欲无码人妻久久精品|