FerroDruid
Rust-native Apache-Druid-compatible OLAP
何時收回成本?
範例:託管可觀測性支出每月 $5,000
如果託管可觀測性支出為每月 $5,000,按保守 40% 降低約為 $2,000/月的可避免總使用費 — 不含 S4 軟體費、EC2 和工作負載差異。
一個 Rust-native、相容 Apache Druid 規格的即時 OLAP 資料庫。它支援 Druid REST API、native query JSON 和 Druid SQL,並讀寫 Druid segment v9/v10 二進位檔案 — 無需 JVM、無需 ZooKeeper,也無需六行程 control plane。單一二進位檔案在低於 200 MB RAM 下可於一秒內啟動。
經典 Apache Druid 叢集在提供單個查詢前,就需要六個或更多 JVM 行程、ZooKeeper、外部 metadata 資料庫以及 16 GB+ RAM;FerroDruid 的單二進位模式用一個行程替代全部元件,並以自包含 AMI 交付。v0.2.0 提供全部八種 native query 類型(timeseries、topN、groupBy、scan、search、segmentMetadata、dataSourceMetadata、timeBoundary);執行 Druid SQL(SELECT、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT、30+ 函式、EXPLAIN PLAN FOR、MSQ task endpoint,~95% 核心 SQL 對等);公開 40+ 個 Druid-compatible REST endpoint;讀寫 Druid segment v9/v10;並從 Kafka 和 Kinesis supervisors 以及 native batch 匯入。預設啟用 Basic auth(Argon2id)+ RBAC,透過 rustls 提供 TLS,並在首次啟動時產生唯一隨機管理員密碼。
面臨挑戰
Apache Druid 是一款強大的即時 OLAP 引擎,但傳統的叢集在服務單個查詢之前,需要 6 個或更多 JVM 行程、ZooKeeper、外部元資料資料庫以及 16 GB 或更多的 RAM。建立、運作和監控這 6 個行程控制平面非常繁重,對於評估環境和較小的部署來說大材小用。您希望使用 Druid 的 API 和 segment 格式,但不希望承擔運作 JVM 和 ZooKeeper 叢集的負擔。
運作原理
- 1
作為單個二進位檔案啟動
單二進位模式運作單個行程 — 無 JVM、無 ZooKeeper、無外部元資料資料庫 — 啟動時間不到 1 秒,記憶體佔用低於 200 MB。它使用 SQLite 儲存元資料,使用本機檔案系統作為深度儲存,並作為自包含 of AMI 交付。
- 2
支援 Druid 線路協定
它支援 Druid REST API、原生查詢 JSON 和 Druid SQL,並讀取和寫入 Druid segment v9/v10 二進位檔案。它支援所有 8 種原生查詢類型,並公開了 40 多個與 Druid 相容的 REST 端點,因此您可以將現有的 Druid 用戶端或 Apache Superset 連接器直接指向它。
- 3
啟動時鎖定,首次登入時需修改密碼
預設啟用基本身分驗證(Basic auth,使用 Argon2id)和 RBAC,並透過 rustls 提供 TLS。在首次啟動時,它會生成一個該執行個體特有的全新隨機 admin 密碼(絕非預設或共享密碼),並將其寫入執行個體系統日誌一次。admin 帳戶被標記為必須修改,因此在操作員 POST 新密碼之前,所有 API 端點都會傳回 HTTP 403,從而強制在首次登入時修改密碼。
產品亮點
Druid-spec wire-compatible(REST + native JSON + Druid SQL,segment v9/v10)— 現有 Druid 用戶端和查詢可用。
一個二進位檔案,無需 JVM / ZooKeeper / 六行程 control plane;在低於 200 MB RAM 下亞秒級啟動。
8 種 native query 類型 + Druid SQL(~95% 核心對等)+ Kafka / Kinesis ingest;預設啟用 auth + RBAC。
包含內容
- 自包含的 Amazon Linux 2023 AMI(Graviton / arm64,支援 t4g、c7g、m7g 和 r7g 系列執行個體)
- 單二進位模式 —— 無 JVM、ZooKeeper 或外部元資料資料庫的單一行程,在低於 200 MB 的 RAM 上啟動時間不到 1 秒(SQLite 元資料以及本機檔案系統深度儲存)
- 所有 8 種原生查詢類型(timeseries、topN、groupBy、scan、search、segmentMetadata、dataSourceMetadata、timeBoundary)以及 40 多個與 Druid 相容 of REST 端點
- Druid SQL(SELECT / WHERE / GROUP BY / HAVING / ORDER BY / LIMIT,超過 30 個函數,EXPLAIN PLAN FOR,一個 MSQ 任務端點,以及約 95% 的核心 SQL 相容性)
- 讀取與寫入 Druid segment v9/v10 二進位檔案,支援從 Kafka、Kinesis supervisor 以及透過原生批次處理進行攝取
- 預設開啟安全設定 — 基本身份驗證(Basic auth,使用 Argon2id)加上 RBAC,透過 rustls 提供 TLS,並在首次啟動時生成執行個體唯一的隨機 admin 密碼,該密碼必須在首次登入時修改
- 用於在 ALB 後方部署的 CloudFormation 範本(marketplace/cloudformation/ami.yaml),支援的拓撲結構為單二進位單節點(多節點預設 fail-closed)
適用場景
希望運行與 Druid 相容的即時 OLAP 且無需運行 6 處理程序 JVM 和 ZooKeeper 叢集的團隊
使用 Druid REST API、原生查詢 JSON、Druid SQL 或 Apache Superset 連接器的現有用戶端的後端
基於輕量級二進位檔案的 Druid 功能評估與開發環境,該檔案啟動時間不到 1 秒且記憶體佔用低於 200 MB
單節點串流傳輸和時間序列分析,支援從 Kafka、Kinesis supervisor 或透過原生批次處理進行攝取
常見問題
它與真正的 Apache Druid 的相容性如何?
FerroDruid 支援 Druid REST API、原生查詢 JSON 和 Druid SQL,並讀取與寫入 segment v9/v10。它支援所有 8 種原生查詢類型,並提供 40 多個與 Druid 相容的 REST 端點,具有約 95% 的核心 Druid SQL 相容性(並非 100%)。針對 Apache Druid 30.0.1 的即時線路深層匹配為 5/5,與 Apache Superset 連接器的匹配也為 5/5。坦誠的適用範圍:即時驗證是針對 Druid 30.0.1 和單二進位模式進行的;Druid 31 到 36 是規範驅動的設計目標,尚未針對運作中的叢集進行交叉驗證。
我需要 JVM、ZooKeeper 還是外部中介資料資料庫嗎?
在單二進位模式下不需要。單一處理程序啟動時間不到 1 秒,且使用低於 200 MB 的 RAM — 相比之下,傳統的 Druid 叢集需要 6 個或更多 JVM 處理程序、ZooKeeper、外部中介資料資料庫以及 16 GB 或更多的 RAM。支援的單二進位路徑使用 SQLite 儲存中介資料,使用本機檔案系統作為深度儲存。
我可以運行多節點組態嗎?
支援的拓撲結構是單二進位單節點;多節點組態預設 fail-closed。老實說,即時驗證是針對單二進位模式進行的,我們目前尚未將其作為運作中的多節點叢集進行驗證。有關詳細資訊,請參閱 docs/KNOWN_LIMITATIONS.md。
安全是如何處理的?首次登入流程是怎樣的?
預設啟用基本身份驗證(Basic auth,使用 Argon2id) and RBAC,並透過 rustls 提供 TLS。在首次啟動時,AMI 會生成一個該執行個體特有的全新隨機 admin 密碼(絕非預設或共享密碼),並將其寫入執行個體系統日誌一次。admin 帳戶被標記為必須修改,因此在操作員向 /druid-ext/basic-security/authentication/db/basic/users/admin/credential POST 新密碼之前,所有 API 端點都會傳回 HTTP 403。輪換後的憑證會被持久化,並在重新啟動後依然保留。
如何部署它?授權和計費是如何運作的?
使用提供的 CloudFormation 範本(marketplace/cloudformation/ami.yaml)將其部署在 Application Load Balancer 後方;在 ALB 處終止 TLS,請勿將服務連接埠直接暴露給網際網路。將您的用戶端(REST API、原生查詢 JSON、Druid SQL 或 Apache Superset 連接器)指向負載平衡器端點。此商品銷售的是基於 Apache-2.0 原始碼並在固定發布版本下建置的、經過加固、掃描且獲得支援的發行版;程式碼本身保持為 Apache-2.0。AWS 會根據執行的執行個體小時數自動對 AMI 進行計量收費,產品中沒有計量程式碼。
為什麼更便宜
假設在 us-east-1 進行約 1k events/秒的即時寫入並要求亞秒級 OLAP 查詢回應。
- m5.xlarge × 3 (broker / coord / historical)
- $525 / 月
- ZooKeeper (t3.medium)
- $30 / 月
- RDS PostgreSQL 中介資料
- $150 / 月
- 月度合計
- $705 / 月
- FerroDruid 實例 (m5.large + 軟體費)
- $120 / 月
- 月度合計
- $120 / 月
依寫入 QPS 選擇 FerroDruid 實例
| 寫入 QPS | 推薦執行個體 | FerroDruid 實例費用 | 每月總計對比 Druid 叢集 |
|---|---|---|---|
| ~100 events/s | t3.medium | $45 / 月 | $45 / 月 (Druid $400, −89%) |
| ~1k events/s | m5.large | $120 / 月 | $120 / 月 (Druid $705, −83%) |
| ~10k events/s | m5.2xlarge | $400 / 月 | $400 / 月 (Druid $1,800, −78%) |
僅供參考。Apache Druid 叢集基準執行 broker / coordinator / historical 作為獨立 JVM (m5.xlarge × 3) 加 ZooKeeper 和 RDS PostgreSQL 中介資料 DB, 是典型最小部署。FerroDruid 是與 Druid wire 相容的單一二進位檔, 無需外部 ZooKeeper 或中介資料 DB; 預設安全設定, 首次登入強制變更密碼。
計費模式
按小時收取軟體費用 + EC2(t4g / c7g / m7g / r7g 級,Arm)。按執行個體類型計量。