產業脈動 2026 年 5 月 30 日

2026-05-30 — Discord ScyllaDB Control Plane:36 小時降至 2 小時

primary=https://discord.com/blog/how-discord-automates-scylladb-clusters-at-scale

Discord Scylla Control Plane:Rust 任務編排系統將叢集建置從 36 小時縮至 2 小時

Discord Engineering · 2026-05-29

Discord 的 7 人 Persistence Infrastructure 團隊維護數十個 ScyllaDB 叢集、數百個資料庫節點。過去建立一套 shadow cluster 需要 36 小時以上的人工操作,充滿仰賴個人知識的手動步驟。為此他們以 Rust 打造 Scylla Control Plane(SCP)——一個以 YAML 定義工作流程、以 SQLite 持久化狀態的任務編排系統,現在完成同樣的工作不到 2 小時,大部分時間是節點啟動等待。

架構設計

SCP 把叢集操作拆成三類任務:

  • Node Task:單節點操作(安裝、重啟、升級 binary)
  • Cluster Task:跨節點協調(rolling restart、擴容)
  • Condition Check:狀態驗證(等待節點就緒、確認 repair 完成)

工作流程以 YAML 定義,參數化設計不需重新編譯即可調整。任務必須冪等(idempotent),以支援安全重試。狀態持久化到 SQLite,中斷後可從斷點繼續,不需重頭執行。

並行控制與 Availability Zone 感知

任務可按 availability zone 批次執行,每個任務設定並行上限,確保 rolling 操作不會同時影響多個 zone。Prometheus 指標輪詢作為 condition check 的依據,操作完成透過 Discord webhook 通知 ops 頻道。

效果

操作之前之後
建立 shadow cluster36+ 小時<2 小時
作業模式持續人工守候事件驅動通知
機構知識依賴高(個人手動步驟)低(YAML 工作流程)

同一套系統也用於管理 Elasticsearch 和 PostgreSQL 叢集。

原始來源:Discord Engineering Blog


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