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級數據流的能力,且無需任何手動調優或基礎設施規劃。