資料與儲存 2026 年 6 月 26 日

2026-06-26 — ClickHouse 開源 Silk 協程排程器與 WAL-RUS Rust 備份工具,Vibe.co 以 ClickHouse Cloud 撐起 CTV 廣告分析後被 Walmart 收購

primary=https://github.com/ClickHouse/silk primary=https://github.com/ClickHouse/wal-rus primary=https://corporate.walmart.com/news/2026/06/23/walmart-to-acquire-vibe-co-to-expand-access-to-connected-tv-advertising

ClickHouse 開源 Silk:專為高並發設計的 C++ 協程排程執行環境

ClickHouse Blog · 2026-06-25

ClickHouse 工程師 James Cunningham 與 Vadim Skipin 於 2026 年 6 月 25 日正式開源 Silk,一套以 C++ 撰寫、專為 Linux 設計的協程排程執行環境(fiber runtime)。Silk 以四項核心需求為出發點:奈秒級切換延遲、NUMA 拓撲感知的工作竊取(work-stealing)排程、穩態路徑零堆積分配,以及以 io_uring 為基礎的非同步 I/O。這是目前第一個同時滿足上述四項條件的開源方案。

為何需要新的 Fiber Runtime?

ClickHouse 的分散式快取(distributed cache)是 Silk 的首個整合目標,屬於網路密集、高扇出(high fan-out)的工作負載,對第 99 百分位與第 99.9 百分位延遲極為敏感。內部基準測試顯示,Silk 在 10,000 個並發請求下,尾端延遲較執行緒池(thread-pool executor)改善了 65%。市面上的替代方案,例如 Boost.Asio 或 OS 執行緒模型,均無法在不犧牲其他指標的前提下達到這個水準。

Silk 採用可堆疊協程(stackful coroutines)而非無堆疊協程,讓 fiber 在任意呼叫深度暫停,不需改寫整條呼叫鏈。排程器為每顆 CPU 配置一條專屬排程執行緒,並依 NUMA 拓撲進行工作竊取,避免跨 NUMA 節點的記憶體存取懲罰。單次跨 CPU 工作竊取的切換延遲約為 3.6 奈秒

io_uring 整合與效能數字

Silk 將 io_uring 視為核心 I/O 基礎,而非附加後端。io_uring ping-pong 延遲約為 7.6 微秒,在測試配置下可達每秒 590 萬次檔案 IOPS。在單一連線情境下,Silk 吞吐量約為 Boost.Asio 的 15 倍;在高並發情境下仍維持約 4 倍優勢。

零堆積分配是另一項設計重點。在穩態熱路徑上,Silk 完全不執行動態記憶體配置,消除 GC 暫停或 malloc 競爭等非確定性延遲來源。每個 per-CPU 無鎖堆疊(lock-free stack)在 32 執行緒壓力下,效能最高可達全域無鎖實作的 2068 倍

同步原語與除錯工具

Silk 提供一套專為協程設計的同步原語,包括 FiberFutureFiberMutexFiberSequencer,取代傳統執行緒同步原語。這些原語在 fiber 等待時讓出排程器而非阻塞 OS 執行緒,保持 CPU 持續處理其他就緒工作。

為協助除錯,專案內含 GDB 擴充腳本,可在 core dump 或即時除錯時檢視所有 fiber 的堆疊狀態。文件涵蓋排程器內部、同步原語、執行緒區域儲存(TLS)遷移注意事項,以及效能分析(flamegraph)流程。建置系統採用 CMake 3.28+,並附有自訂 ./bb 腳本支援 debug、release 及各類 sanitizer 模式。

現有限制與開放計畫

Silk 目前具有幾項明確限制:僅支援 Linux,依賴 io_uring、eventfd、rseq 等核心特性;排程器為行程級單例,不支援多個隔離實例;每個 fiber 進入點的參數大小上限為 64 位元組。程式碼庫以 C++ 為主(75.7%),並配有 Python 測試腳本、C 語言橋接層及 Assembly 上下文切換實作。

ClickHouse 已將 Silk 以開源方式發布於 GitHub(github.com/ClickHouse/silk),截至發布時累計 229 顆星、102 次提交。後續計畫將優先完成與 ClickHouse 分散式快取的正式整合,並逐步擴展至更多內部元件。

原始來源:ClickHouse/silk — GitHub


WAL-RUS:ClickHouse 用 Rust 重寫 PostgreSQL 備份工具,記憶體峰值降低逾七成

ClickHouse Blog · 2026-06-25

ClickHouse 於 2026 年 6 月 25 日開源 WAL-RUS,一套以 Rust 重寫的 PostgreSQL WAL 封存與備份工具,衍生自廣泛使用的 WAL-G 專案。這次重寫的主要動機是記憶體可預測性:在記憶體受限的環境中部署 WAL-G 時,Go 的垃圾回收機制會造成峰值記憶體用量難以控制,影響系統穩定性。

為何從 Go 換到 Rust?

WAL-G 以 Go 撰寫,在一般環境下表現良好,但 Go 執行時期的記憶體管理具有非確定性,GC 可能在高吞吐量備份期間造成記憶體峰值突增。基準測試結果顯示,WAL-RUS 的峰值虛擬記憶體用量較 WAL-G 降低超過 70%,在持續負載下維持低於 1 GB,而 WAL-G 在相同工作負載下達到 2.8 GB。

Rust 的顯式記憶體管理特性讓 WAL-RUS 徹底消除 GC 開銷,改採有界工作者池(bounded worker pool)確保資源消耗可預測。串流導向的管線設計(streaming pipeline)也將緩衝和資料複製降至最低,避免整段備份資料留存記憶體;這項架構設計在文件中以「no-overcommit hosts」情境明確記載。

守護程序架構與效能

WAL-RUS 引入常駐守護程序(daemon)模式,在 WAL 封存流程中維持持久的物件儲存連線,而非每個 WAL 檔案都生成新行程。這項設計大幅降低連線建立的開銷,在 WAL 生成速率高的環境中尤為顯著。以四個並發工作者執行基準測試時,WAL-RUS 與 WAL-G 均維持極低的封存積壓,CPU 用量亦大致相當。

壓縮演算法支援多種選項,包括 zstdbrotlilz4lzmagzip,儲存後端則涵蓋本機檔案系統、S3 及 Google Cloud Storage。

與 WAL-G 的相容性

WAL-RUS 保留對現有 WAL-G 封存格式與設定變數的完整相容性,使用相同的 WALG_ 前綴環境變數,讓熟悉 WAL-G 的操作人員幾乎無需重新學習。雙向互通性(bidirectional interoperability)意味著可以在不中斷服務的前提下漸進遷移,先讓 WAL-RUS 讀取 WAL-G 建立的舊有封存,再逐步切換到以 WAL-RUS 建立新備份。

互通性細節記錄於程式庫中的 WALG_COMPAT.md 文件。同時,ClickHouse 也將部分成果回饋給上游 WAL-G 社群,例如 PR #2293 加入了 PostgreSQL 17 WAL 摘要支援。

指令介面

WAL-RUS 涵蓋完整的 WAL 操作指令:

  • WAL 管理wal-pushwal-fetchwal-prefetchwal-showwal-verifywal-restorewal-receive
  • 備份管理backup-pushbackup-fetchbackup-listbackup-showbackup-mark
  • 維運工具deletecopydaemon

程式碼庫以 Rust 為主(90.6%),配有少量 Shell 腳本,已發布於 github.com/ClickHouse/wal-rus,包含基準測試套件於 bench/ 子目錄。

原始來源:ClickHouse/wal-rus — GitHub


Vibe.co 用 ClickHouse Cloud 支撐數十億次 CTV 廣告曝光,並被 Walmart 以逾 14 億美元收購

ClickHouse Blog · 2026-06-25

自助式聯網電視(Connected TV,CTV)廣告平台 Vibe.co 在 2026 年 6 月 23 日宣布將以約 14 億美元被 Walmart 收購,成為 Walmart Connect 商業媒體業務的一部分。就在同一週,ClickHouse 發布案例研究,詳述 Vibe.co 如何透過 ClickHouse Cloud 讓資料規模從約 100 GB 擴張至逾 2 TB,同時維持 90% 以上的廣告報表查詢在 100 毫秒內回應。

從 PostgreSQL 遷移的決策背景

Vibe.co 最初以 PostgreSQL 處理廣告印象(impression)資料,隨著廣告主數量與 CTV 曝光量增長,OLAP 查詢開始成為瓶頸。為了彌補效能缺口,工程團隊建立了一層預聚合層(pre-aggregation layer),針對每種報表需求手動新增聚合任務,這使系統變得脆弱且難以維護。

遷移至 ClickHouse 的核心目標是移除這個中間層,直接對原始事件資料執行 ad hoc 查詢。Staff Data Engineer Rémi Paulin 表示,ClickHouse 讓架構保持簡單,無需為新報表需求追加管線。

熱冷分層架構

為平衡查詢速度與儲存成本,Vibe.co 實作了以可重新整理的物化檢視(refreshable materialized views)為基礎的熱冷分層策略:

  • 熱表(Hot table):保留最近 30 天資料,服務絕大多數客戶查詢
  • 冷表(Cold table):保留完整歷史資料集,供深度回溯分析

兩個層級各自針對實際查詢模式進行排序鍵(sorting key)與壓縮設定的優化,使熱路徑查詢幾乎不需掃描冷資料。這套架構在資料量超過 2 TB 後仍維持穩定,未曾因資料規模增長而觸發架構重設計

選擇託管服務而非自建

Vibe.co 在評估時也考慮自建(self-hosted)ClickHouse,並承認自建在特定情境下具有效能優勢。最終選擇 ClickHouse Cloud 的關鍵因素有三:運維複雜度(由 ClickHouse 官方團隊負責升級、擴縮容與故障處理)、可直接聯繫 ClickHouse 工程師取得技術支援,以及儲存與運算分離帶來的可預測定價模型。

Paulin 強調,對一支規模有限的工程團隊而言,將資料庫運維外包給専業團隊,讓內部資源能專注於廣告技術產品本身,才是最符合商業價值的取捨。

Walmart 收購的戰略意義

2026 年 6 月 23 日,Walmart 宣布收購 Vibe.co,交易仍待 Hart-Scott-Rodino 法案審查,預計在 2027 財年結束前完成。Vibe.co 創辦團隊 CEO Arthur Querou 及 CTO Franck Tetzlaff 將加入 Walmart Connect,延續平台發展動能。此收購與 Walmart 先前的 VIZIO 收購及和 Magnite、Yahoo DSP、Google DV360 的合作夥伴關係相互呼應,顯示零售商正積極布局廣告媒體生態系。

美國 CTV 廣告支出預計在 2026 年達到 380 億美元,較前一年成長 14%。Vibe.co 的自助服務模式主要服務中小企業與 Walmart Marketplace 賣家,填補了大型廣告平台長期忽視的市場空缺。

原始來源:Walmart Corporate — Walmart to Acquire Vibe.co (2026-06-23)


End of article
0
Would love your thoughts, please comment.x
()
x