日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

白話 Pulsar Bookkeeper 的存儲模型

來源: 責編: 時間:2024-01-16 10:16:01 306觀看
導讀最近我們的 Pulsar 存儲有很長一段時間數據一直得不到回收,但消息確實已經是 ACK 了,理論上應該是會被回收的,隨著時間流逝不但沒回收還一直再漲,最后在沒找到原因的情況下就只有一直不停的擴容。最后磁盤是得到了回收,過

最近我們的 Pulsar 存儲有很長一段時間數據一直得不到回收,但消息確實已經是 ACK 了,理論上應該是會被回收的,隨著時間流逝不但沒回收還一直再漲,最后在沒找到原因的情況下就只有一直不停的擴容。Z3928資訊網——每日最新資訊28at.com

最后磁盤是得到了回收,過程先不表,之后再討論。Z3928資訊網——每日最新資訊28at.com

為了防止類似的問題再次發生,我們希望可以監控到磁盤維度,能夠列出各個日志文件的大小以及創建時間。Z3928資訊網——每日最新資訊28at.com

這時就需要對 Pulsar 的存儲模型有一定的了解,也就有了這篇文章。Z3928資訊網——每日最新資訊28at.com

圖片圖片Z3928資訊網——每日最新資訊28at.com

這里我利用 Pulsar 和 Bookkeeper 的 Admin API 列出了 Broker 和 BK 中 Ledger 分別占用的磁盤空間。Z3928資訊網——每日最新資訊28at.com

關于這個如何獲取和計算的,后續也準備提交給社區。Z3928資訊網——每日最新資訊28at.com

背景

但和我們實際 kubernetes 中的磁盤占用量依然對不上,所以就想看看在 BK 中實際的存儲日志和 Ledger 到底差在哪里。Z3928資訊網——每日最新資訊28at.com

知道 Ledger 就可以通過 Ledger 的元數據中找到對應的 topic,從而判斷哪些 topic 的數據導致統計不能匹配。Z3928資訊網——每日最新資訊28at.com

Bookkeeper 有提提供一個Admin API 可以返回當前 BK 所使用了哪些日志文件的接口:https://bookkeeper.apache.org/docs/admin/http#endpoint-apiv1bookielist_disk_filefile_typetypeZ3928資訊網——每日最新資訊28at.com

圖片圖片Z3928資訊網——每日最新資訊28at.com

從返回的結果可以看出,落到具體的磁盤上只有一個文件名稱,是無法知道具體和哪些 Ledger 進行關聯的,也就無法知道具體的 topic 了。Z3928資訊網——每日最新資訊28at.com

此時只能大膽假設,應該每個文件和具體的消息 ID 有一個映射關系,也就是索引。所以需要搞清楚這個索引是如何運行的。Z3928資訊網——每日最新資訊28at.com

存儲模型

圖片圖片Z3928資訊網——每日最新資訊28at.com

我查閱了一些網上的文章和源碼大概梳理了一個存儲流程:Z3928資訊網——每日最新資訊28at.com

  1. BK 收到寫入請求,數據會異步寫入到 Journal/Entrylog
  2. Journal 直接順序寫入,并且會快速清除已經寫入的數據,所以需要的磁盤空間不多(所以從監控中其實可以看到 Journal 的磁盤占有率是很低的)。
  3. 考慮到會隨機讀消息,EntryLog 在寫入前進行排序,保證落盤的數據中同一個 Ledger 的數據盡量挨在一起,充分利用 PageCache.
  4. 最終數據的索引通過 LedgerId+EntryId 生成索引信息存放到 RockDB 中(Pulsar 的場景使用的是 DbLedgerStorage 實現)。
  5. 讀取數據時先從獲取索引,然后再從磁盤讀取數據。
  6. 利用 Journal 和 EntryLog 實現消息的讀寫分離。

簡單來說 BK 在存儲數據的時候會進行雙寫,Journal 目錄用于存放寫的數據,對消息順序沒有要求,寫完后就可以清除了。Z3928資訊網——每日最新資訊28at.com

而 Entry 目錄主要用于后續消費消息進行讀取使用,大部分場景都是順序讀,畢竟我們消費消息的時候很少會回溯,所以需要充分利用磁盤的 PageCache,將順序的消息盡量的存儲在一起。Z3928資訊網——每日最新資訊28at.com

同一個日志文件中可能會存放多個 Ledger 的消息,這些數據如果不排序直接寫入就會導致亂序,而消費時大概率是順序的,但具體到磁盤的表現就是隨機讀了,這樣讀取效率較低。Z3928資訊網——每日最新資訊28at.com

所以我們使用 Helm 部署 Bookkeeper 的時候需要分別指定 journal 和 ledgers 的目錄Z3928資訊網——每日最新資訊28at.com

volumes:    # use a persistent volume or emptyDir    persistence: true    journal:      name: journal      size: 20Gi      local_storage: false      multiVolumes:        - name: journal0          size: 10Gi          # storageClassName: existent-storage-class          mountPath: /pulsar/data/bookkeeper/journal0        - name: journal1          size: 10Gi          # storageClassName: existent-storage-class          mountPath: /pulsar/data/bookkeeper/journal1    ledgers:      name: ledgers      size: 50Gi      local_storage: false      storageClassName: sc    # storageClass:        # ...    useMultiVolumes: false      multiVolumes:        - name: ledgers0          size: 1000Gi          # storageClassName: existent-storage-class          mountPath: /pulsar/data/bookkeeper/ledgers0        - name: ledgers1          size: 1000Gi          # storageClassName: existent-storage-class          mountPath: /pulsar/data/bookkeeper/ledgers1

圖片圖片Z3928資訊網——每日最新資訊28at.com

每次在寫入和讀取數據的時候都需要通過消息 ID 也就是 ledgerId 和 entryId 來獲取索引信息。Z3928資訊網——每日最新資訊28at.com

也印證了之前索引的猜測。Z3928資訊網——每日最新資訊28at.com

所以借助于 BK 讀寫分離的特性,我們還可以單獨優化存儲。Z3928資訊網——每日最新資訊28at.com

比如寫入 Journal 的磁盤因為是順序寫入,所以即便是普通的 HDD 硬盤速度也很快。Z3928資訊網——每日最新資訊28at.com

大部分場景下都是讀大于寫,所以我們可以單獨為 Ledger 分配高性能 SSD 磁盤,按需使用。Z3928資訊網——每日最新資訊28at.com

因為在最底層的日志文件中無法直接通過 ledgerId 得知占用磁盤的大小,所以我們實際的磁盤占用率對不上的問題依然沒有得到解決,這個問題我還會持續跟進,有新的進展再繼續同步。Z3928資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-62359-0.html白話 Pulsar Bookkeeper 的存儲模型

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 零基礎入門Python與MongoDB:輕松實現數據管理

下一篇: 快速在你的Vue/React應用中實現SSR(服務端渲染)

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
洋洋av久久久久久久一区| 久久大综合网| 亚洲国产一区二区三区高清| 亚洲欧洲日产国产综合网| 99精品99| 欧美一区二区网站| 免费一级欧美在线大片| 欧美日韩精品在线观看| 国产精品一区免费观看| 亚洲电影下载| 亚洲女与黑人做爰| 久久综合伊人| 国产精品国产三级国产普通话三级| 国产亚洲精品久久久| 亚洲国产欧美一区二区三区同亚洲| 一区二区三区**美女毛片| 久久aⅴ乱码一区二区三区| 欧美成在线观看| 国产乱子伦一区二区三区国色天香 | 亚洲黄一区二区| 亚洲午夜久久久久久尤物| 久久久www免费人成黑人精品| 欧美激情一区二区三区高清视频| 国产精品一区在线播放| 亚洲国产欧美日韩| 午夜在线一区二区| 欧美全黄视频| 国产精品亚洲产品| 国产亚洲欧美一区| 亚洲三级免费观看| 亚洲欧美日韩中文播放| 久久露脸国产精品| 国产精品高潮呻吟视频| 亚洲承认在线| 欧美一区=区| 欧美日韩精品三区| 激情欧美日韩一区| 亚洲在线网站| 欧美精品一区二区精品网| 国内精品一区二区三区| 亚洲天堂av电影| 欧美成人综合一区| 黑人操亚洲美女惩罚| 亚洲综合色噜噜狠狠| 欧美激情2020午夜免费观看| 国内外成人在线视频| 亚洲影视在线播放| 欧美日韩成人在线播放| 极品少妇一区二区三区精品视频 | 亚洲第一精品影视| 亚洲最新中文字幕| 免费观看国产成人| 国产综合激情| 午夜精品一区二区三区四区| 欧美日本成人| 亚洲国产免费看| 久久免费黄色| 国产午夜精品在线观看| 亚洲综合大片69999| 欧美日韩色一区| 亚洲片国产一区一级在线观看| 久久精品综合网| 国产午夜精品一区二区三区欧美| 亚洲免费在线视频| 国产精品久久久久久久app| 99精品欧美一区二区三区综合在线| 美女999久久久精品视频| 韩国福利一区| 久久精品亚洲一区二区| 国产亚洲欧美在线| 久久av免费一区| 国产亚洲欧洲997久久综合| 午夜视频在线观看一区二区三区| 国产精品海角社区在线观看| 亚洲视频欧美视频| 欧美日韩在线电影| 亚洲视频综合| 国产精品色在线| 午夜精品久久久久久久久 | 亚洲免费成人av| 欧美国内亚洲| 亚洲精品孕妇| 欧美日韩国产精品自在自线| 亚洲精品永久免费| 欧美精品乱人伦久久久久久| 日韩视频在线你懂得| 欧美日韩国产在线播放网站| 99精品欧美一区二区蜜桃免费| 欧美激情第10页| 99精品99| 国产精品久久久久aaaa| 亚洲欧美日韩直播| 国产亚洲毛片| 久久综合网hezyo| 91久久久在线| 欧美色图首页| 午夜精品视频| 韩日欧美一区| 欧美a级片一区| 99精品国产在热久久| 国产精品jizz在线观看美国| 亚洲欧美视频一区| 国产在线观看精品一区二区三区 | 欧美绝品在线观看成人午夜影视| 一本色道久久综合精品竹菊 | 欧美日韩免费网站| 亚洲一区二区免费看| 国产日韩欧美不卡在线| 久久婷婷av| 亚洲毛片播放| 国产精品看片资源| 久久久美女艺术照精彩视频福利播放| 亚洲电影激情视频网站| 欧美日韩亚洲网| 午夜日韩在线观看| 一区二区视频欧美| 欧美精选在线| 亚洲欧美视频在线观看视频| 激情久久影院| 欧美日韩成人一区| 午夜在线视频一区二区区别| 国内自拍亚洲| 欧美精品系列| 欧美一区二区三区四区视频| 亚洲国产精品电影在线观看| 欧美视频久久| 久久久久久精| 中文国产成人精品| 黄色成人av| 欧美手机在线视频| 久久免费视频网站| 一区二区三区高清在线| 国产最新精品精品你懂的| 欧美精品在线免费| 久久国内精品视频| 日韩视频在线免费| 国产亚洲精品7777| 欧美日韩精品综合在线| 久久riav二区三区| 日韩写真视频在线观看| 欧美专区日韩专区| 亚洲国产欧美精品| 欧美日本免费| 午夜视频在线观看一区| 亚洲国产一区二区三区青草影视| 国产精品久久一卡二卡| 久久一区二区三区国产精品 | 亚洲先锋成人| 红桃av永久久久| 欧美手机在线视频| 欧美va天堂| 欧美一区二区三区另类| 亚洲剧情一区二区| 国内精品99| 欧美午夜片在线免费观看| 久久一区中文字幕| 午夜欧美电影在线观看| 日韩视频免费大全中文字幕| 国内成+人亚洲| 国产精品高潮在线| 欧美激情亚洲精品| 老司机成人网| 亚洲精品久久久久久久久久久久久| 国产伦精品一区二区三区视频孕妇| 牛牛影视久久网| 久久国产精品一区二区三区四区| 亚洲特色特黄| 亚洲精品欧美日韩专区| 影音先锋一区| avtt综合网| 亚洲黄色影院| 伊人久久亚洲热| 国产日韩三区| 国产精品久久久久久五月尺| 欧美日本免费| 欧美激情国产日韩| 免费不卡视频| 久久久亚洲国产天美传媒修理工| 亚洲欧美在线磁力| 亚洲一区二区三区四区视频| 99热这里只有精品8| 亚洲三级免费电影| 亚洲国产精品久久91精品| 狠狠色综合网| 国产真实久久| 国产亚洲精品bv在线观看| 国产精品网站在线观看| 国产精品高潮呻吟久久av无限 | 久久亚洲美女| 久久九九精品| 久久国产精品久久久久久| 午夜精品一区二区三区在线| 亚洲一区二区欧美日韩| 亚洲天堂成人在线视频| 一区二区三区欧美| 一区二区欧美精品| 在线视频亚洲| 99视频+国产日韩欧美| av不卡在线看| 亚洲视频高清| 亚洲欧美精品在线观看| 亚洲欧美日韩成人| 午夜宅男欧美| 久久精品视频在线观看|