Mercado Libre 換掉可觀測性資料庫:Trace 查詢從 5 分鐘降到 4 秒
ClickHouse Blog · 2026-08-04
原本的問題
拉美最大電商與金融科技平台 Mercado Libre 營運橫跨 18 國,市佔約 35%,年處理 2.7 億件商品配送與 870 億美元支付,官方文章寫出每秒承載超過 150 億次請求的規模。舊有可觀測性平台把過濾、聚合等重運算放在查詢時於用戶端執行,高基數欄位(如付款 ID、使用者 ID)的 trace 查詢常常超過 5 分鐘才有結果。架構複雜度隨「使用者數 × span 數」線性成長,span 吞吐量卡在每分鐘 7000 萬筆就上不去,新增可索引屬性的成本也很高。
採用的方法
資料擷取流程(應用程式 → SDK → OTel collector → stream → consumer)維持不變,只把儲存層換成 ClickHouse Cloud,並在前面加一層讀取代理做限流與 AI 工具(O11y MCP server)整合。schema 採分層設計:原始表只留 1 天,再用materialized view算出 30 天的 span 摘要表與 90 天的 metric 表。針對高基數查詢,另建一張 span_events_attributes 查找表,用 ReplacingMergeTree 引擎依「屬性 key → 時間桶 → 屬性值 → trace ID」排序並加 bloom filter skip index,查詢先在這張表篩選再用 trace ID 回頭撈完整 trace,把兩層查詢拆開。ReplacingMergeTree 的去重是在背景 merge 時才發生、非寫入當下,需要即時保證去重的場景要搭配 FINAL。此外把讀、寫、merge 拆成獨立叢集,避免小 part 堆積拖垮效能。
實際效果
原本超過 5 分鐘的查詢,現在約 4 秒回應,官方數字是 50 倍加速。ZSTD 壓縮把原始表從 181 TiB 壓到 20 TiB,減少 89%;span 表整體從 4.34 PiB 壓到 621 TiB,減少 86–89%。目前遷移約 30% 的關鍵應用,這部分流量已經是每分鐘 4 億筆 span,span 表累積 9.55 兆行,查找表累積 4.9 兆行,trace 摘要表 8700 億行。
ClickHouse Cloud 自動擴縮容改版:從固定週期輪詢變成秒級反應
ClickHouse Blog · 2026-08-04
核心改動
ClickHouse Cloud 原本的擴縮容建議服務是計時器驅動:每隔固定時間醒來一次,把所有服務排進同一個時間窗口逐一算建議,算完就回去睡到下一個 tick。問題是若某服務突然記憶體吃緊,也得等到下一輪排程才會被處理,中間有明顯延遲。團隊改用 Kubernetes 的 controller-runtime 函式庫重寫調度層,把 Prometheus 指標即時寫進 ClickHouse,再用 materialized view 把超過門檻的事件篩進一張輕量的 recommendation_signals 表:
CREATE TABLE recommendation_signals (
scrape_ts DateTime,
service_name LowCardinality(String),
metric_name LowCardinality(String),
metric_value Float64
)反應路徑每隔幾秒對這張表做一次輪詢:
SELECT DISTINCT service_name, metric_name
FROM recommendation_signals
WHERE scrape_ts > now() - INTERVAL 5 MINUTE;影響範圍
系統變成雙軌並行:原本的週期性掃描保留下來做安全網與縮容判斷,新增的反應式快速路徑在偵測到如 soft_memory_rejections 這類關鍵訊號的幾秒內就觸發建議,架構上也預留了加入 CPU 門檻、OOM 事件等其他訊號類型的空間。訊號表只保留 5 分鐘回看窗與 1 小時 TTL,執行端靠限流工作佇列(含去重、指數退避、有界並行)與可重複執行(idempotent)的調節函式,確保同一訊號不會被重複處理。文章提到反應式路徑在上線初期先跑在「只觀察、不觸發」模式,週期性掃描仍是主要驅動者。
原始來源:ClickHouse Blog
pgBackRest 2.59.0 發布:新增 WAL 歸檔到期清除與 S3 Outposts 支援
PostgreSQL News · 2026-08-04
核心改動
pgBackRest 是 PostgreSQL 常用的備份與還原工具,2.59.0 加入對 PostgreSQL 19 的支援,並新增 archive-expire-before 選項,讓使用者能主動清掉超過指定時間點的 WAL 歸檔,不必等下一次完整備份才回收空間。儲存後端補上 S3 Outposts 與可設定的 S3 STS endpoint,Azure 儲存新增批次刪除,S3 也加入 process 層級驗證。另外還有 systemd notify 整合、SFTP 連線在伺服器主動斷開閒置連線後會自動重連、manifest 建置時用 user/group 快取加速掃描。
影響範圍
安全性上,以 root 執行 pgBackRest 現在預設會直接報錯,除非明確加上 allow-root;非同步 archive-push 遇到第一個錯誤就會直接退出,不再悶著繼續跑。這版也修了幾個穩定性問題:
- expire 可能誤刪還在其他主機上進行中的備份
- WAL 檔案出錯時
archive-push-queue-max沒有被正確套用 - 跨 timeline 切換時
archive-get的非同步復原會失敗 - error 模組的潛在 buffer overrun,以及並行 protocol client 的 use-after-free