日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Pulsar-SQL 是一個非常有用的功能,只是我們使用過程中確實發現了一些問題,大部分都已經修復了;希望對后續使用該功能的朋友有所幫助。

背景

為了讓業務團隊可以更好的跟蹤自己消息的生產和消費狀態,需要一個類似于表格視圖的消息列表,用戶可以直觀的看到發送的消息;同時點擊詳情后也能查到消息的整個軌跡。

消息列表

點擊詳情后查看軌跡

原理介紹

由于 Pulsar 并沒有關系型數據庫中表的概念,所有的數據都是存儲在 Bookkeeper 中,為了模擬使用 SQL 查詢的效果 Pulsar 提供了 Presto (現在已經更名為 Trino)的插件。

Trino 是一個分布式的 SQL 查詢引擎,它也提供了插件能力,如果我們想通過 SQL 從自定義數據源查詢數據時,基于它的 SPI 編寫一個插件是很方便的。

這樣便可以類似于查詢數據庫一樣查詢 Pulsar 數據:

Pulsar 插件的運行流程如上圖所示:

  • 啟動的時候通過 Pulsar-Admin 接口獲取一些元數據,比如 Scheme,topic 分區信息等。
  • 然后會創建一個只讀的 Bookkeeper 客戶端,用于獲取數據。
  • 之后根據 SQL 條件過濾數據即可。

相關代碼:

使用 Pulsar-SQL

使用起來也很簡單,官方提供了兩個命令:

  • sql-worker: 會啟動一個 trino 服務端同時運行了 Pulsar 插件.
  • sql: 就是一個 SQL 命令行終端。

遇到的問題

自己在本地運行的時候自然是沒問題,可是一旦想在生產運行,同時如果你的 Pulsar 集群是運行再 k8s 環境中時就會碰到一些問題。

無法使用現有 Trino 集群

首先第一個問題是如果生產環境已經有了一個 Trino 集群想要復用的時候就會碰到問題,常規流程是將 Pulsar 的插件復制到 Trino 的 Plugin 目錄,然后重啟 Trino 后就能使用該插件。

當然社區也是支持這么做的:

但是當我將 Pulsar-plugin 復制到 Trino 中運行的時候卻失敗了,整體的流程可以參考這個 issue:https://Github.com/Apache/pulsar/discussions/20941

簡單來說 Trino 的官方鏡像和 pulsar-plugin 并不能兼容,這個問題直接影響到我們是否可以在生產環境使用它。

但是手動編譯出來的 Trino 服務和插件是兼容的,可以直接運行。

因此我只能在本地編譯出 Trino 服務端和 pulsar-plugin 然后打包成一個鏡像來運行了,當然這樣的壞處就是無法利用到我們現有的 Trino 集群,又得重新部署一個了。

流程也比較麻煩:

  • 首先是本地編譯 Pulsar-SQL 模塊
  • 將生成物復制到當前目錄
  • 執行 make Docker 打出 docker 鏡像并上傳到私服
  • 再執行 kubectl 將 trino 部署到 k8s 環境中

整個流程做下來加上和社區的溝通,更加確定這個功能應該是很少有人在生產環境使用的,畢竟第一個坑就很麻煩,更別提后續的問題了

分享到:
標簽:SQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定