AI News HubLIVE
站内改写2 分鐘閱讀

攝取銀河系:使用Zerobus Ingest實現PB級資料處理

Databricks推出Zerobus Ingest,這是一種無伺服器流式API,可以即時部署PB級資料管道,無需手動管理基礎設施。透過動態分割槽和零複製協議緩衝區解碼器,該系統在24小時內從NASA NEOWISE資料整合功攝取了1 PB資料,吞吐量達到12 GB/s。

Databricks正式釋出了Zerobus Ingest,這是一款完全託管的無伺服器流式攝取服務,旨在解決大規模時序資料的高吞吐攝取難題。該服務透過簡單的推送API接受來自任意資料來源的資料,並直接寫入由Unity Catalog管理的Delta表中,省去了傳統Kafka架構中繁瑣的基礎設施配置和維護工作。使用者只需建立表並推送資料,即可在數秒內使資料在Lakehouse中可查詢。

Zerobus Ingest的核心創新在於其動態分割槽設計。傳統訊息匯流排中,分割槽既是並行單元也是排序單元,這種耦合導致分割槽拓撲通常不可變,需要為峰值負載預留資源,難以縮容。Zerobus將排序保證從分割槽級別提升到流連線級別:每個生產者連線的資料流保證有序,而底層處理單元(Pod)可以動態增減。當某個Pod負載過高時,新的流會被路由到其他Pod,生產者無需感知,排序保證不受影響。這種設計實現了真正的彈性伸縮,使單表吞吐量可超過12 GB/s,同時保持成本高效。

在效能最佳化方面,Zerobus構建了自定義的零複製Protobuf解析器Zeroparser。標準Protobuf解析工具要麼依賴編譯時程式碼生成(速度快但無法處理動態模式),要麼依賴執行時反射(靈活但效能差)。Zeroparser採用單遍解析且零記憶體分配,即使在動態描述符和複雜模式下也能達到每CPU核心約1 GB/s的解析吞吐量,超越了部分行業領先的程式碼生成方案。Zeroparser利用Rust的生命週期系統,確保協議解析時的編譯時安全性,同時將原始線路位元組的網路所有權保持獨佔,消除了不必要的資料複製。Zeroparser已作為開源SDK的一部分發布。

為了支援低延遲的訊息確認,Zerobus實現了延遲最佳化的預寫日誌(WAL)。資料持久化後,伺服器返回流中最高已提交偏移量,客戶端據此清空本地緩衝區。這種非同步確認迴圈結合gRPC雙向流,使得客戶端能夠保持輕量級,同時獲得與Kafka相當的低延遲和高永續性保證。

為了驗證系統能力,Databricks使用了NASA的NEOWISE資料集(包含11年內2000億個資料點),藉助Locust工具模擬真實場景中的多對一資料匯聚模式。測試部署在Kubernetes上,使用2048個Locust工作節點,每個節點建立一個Zerobus流,總共2048個併發流。測試持續約25小時,結果顯示Zerobus Ingest在24小時內穩定維持了12 GB/s的寫入吞吐量,向單個表攝入了超過1萬億條記錄。這一結果有力證明了Zerobus在真實生產環境中處理PB級資料流的能力,且無需任何手動調優或基礎設施規劃。