dungbeetle
一個專為非同步排隊與執行大量 SQL 讀取任務而設計的分散式任務伺服器。將報表層與應用程式分離。支援 MySQL、PostgreSQL、ClickHouse。
dungbeetle 是什麼?
一個專為非同步排隊與執行大量 SQL 讀取任務而設計的分散式任務伺服器。將報表層與應用程式分離。支援 MySQL、PostgreSQL、ClickHouse。
dungbeetle 概覽
這是什麼
DungBeetle 是一個輕量級、單一二進位檔的分散式任務伺服器,專為佇列及非同步執行大量 SQL 讀取任務(例如報表)而設計。任務執行後,結果會寫入獨立的暫時性結果資料庫,每個任務的結果都有專屬資料表,以利快速取回。由 Zerodha 開發。
主要功能
- 支援 MySQL、PostgreSQL 及 ClickHouse 作為來源資料庫。
- 支援 MySQL 及 PostgreSQL 作為結果/快取資料庫。
- 獨立的伺服器,透過 HTTP API 管理任務與任務群組(列出、發布、狀態檢查、取消)。
- 從 .sql 檔案讀取 SQL 查詢,註冊為可佇列的任務。
- 透過常見的代理後端(Redis、AMQP 等)支援多程序、多執行緒、非同步的分散式任務佇列。
使用情境
主要使用案例是在擁有大型 SQL 資料庫的應用程式中,進行面向使用者的報表生成。當數千名並發使用者請求報表時,查詢執行過程中的 I/O 延遲可能會造成應用程式與資料庫的瓶頸。DungBeetle 將報表生成請求延後至任務佇列,立即釋放前端應用程式。報表以非同步方式呈現,伺服器與工作者實例也扮演流量控制角色,防止主要資料庫被淹沒。報表生成後,後續的切片、排序或過濾查詢可導向較小、更快的结果快取資料庫。
快速開始
請參閱儲存庫的 README 以取得安裝說明。預編譯的二進位檔可從釋出版本頁面下載。透過 config.toml 檔案進行設定。SQL 查詢任務以 goyesql 格式寫在 .sql 檔案中。使用以下指令啟動伺服器:shelldungbeetle --config /path/to/config.toml --sql-directory /path/to/your/sql/queries# 執行 'dungbeetle --help' 查看所有支援的參數
授權與價格
採用 MIT 授權條款。為開源軟體。
內容整理自該專案公開的 README 與儲存庫資訊。