容量規劃
1)什麼是容量規劃,為什麼需要
能力規劃(能力規劃)是評估並提供以最低成本實現目標SLO所需資源的系統過程。它不僅涉及CPU/內存,還涉及網絡吞吐量,存儲,DB/kesh,事件隊列/總線,外部提供商(付款/KUS/antifrod)以及人力資源(電話,支持)。
目標是:- 執行SLO/SLA甚至在高峰和降解。
- 盡量減少TCO和簡單資本(過度投資)。
- 減少資源耗盡的事件風險(saturation → p99/錯誤)。
- 確保發布和活動(市場營銷,錦標賽,頂級比賽)的可預測性。
2)輸入和真相來源
可觀察性:RPS/concarrentity,p50/p95/p99,error-rate,aturation(CPU,mem,disk IOPS,network pps/mbps),隊列長度,rate限制。
商業活動:活動日歷,季節性(晚上/周末/大型活動),地區/轄區。
Tehdolg/Fichi:路線圖發布、體系結構更改(例如加密、新拼寫)。
提供商:配額和通過支付/KUS/郵件/反欺詐服務。
過去的事件:瓶頸在哪裏(DB,kesh,L7平衡器,總線,CDN,磁盤)。
3)基本概念和公式
Headroom-容量庫存:'headroom=(max_RPS −實際_RPS )/max_RPS"。
峰值為20-40%(對於關鍵流)的目標值。
Aturation-占用資源與可用資源的關系(CPU% 、內存/GC、連接、文件描述器、IOPS、隊列深度)。
Throughput是穩定的-p99和error-rate執行長時間SLO(非一次性激增)的速度。
Capacity Unit(CU)是該服務的配給功率單位(例如X RPS每個pod vCPU=1,RAM=2 GiB)。
系統限制為max,無降解:「N_pods × CU」。重要的是要考慮共享的依賴性(DB/kesh/總線)。
4)需求模型: 預測
統計排名:每周/每日季節性,假期,體育決賽,區域高峰。
隊列:按國家/地區、支付提供商、設備、VIP細分市場。
事件三角洲:運動/槍支/發行版/SEO的影響。
「如果」(場景規劃):晚上7點至晚上10點的流量增加50%;提供商A的下降→重新分配到B(對潛伏期增加30%)。
實時調整:不按主要指標(重振會議,排隊比賽,籃子)進行調整。
5)句子模型: 鏈條「斷裂」的地方
請求管道:Edge/CDN → L7平衡器→應用程序→ kesh → DB →外部API →隊列/總線→ 處理程序/ETL。
對於每個鏈接,我們固定:- 容量(CU/實例)、可擴展性(Horizon/Vertic)。,極限(連接,pps,IOPS),滯後。
- 拒絕政策(利率限制,電路突破,退化)。
- SLO是本地的,它們對e2e-SLO的貢獻。
6)錯誤庫存和預算
我們將頭部與錯誤預算聯系起來:預算減少→庫存增加。
對於關鍵流(付款/驗證)-上面的頭部,對於次要流-下面的頭部。
寒冷/溫暖儲備:在高峰/事故中激活。
7)縮放: 戰術
HPA(按負載度量):RPS,latency,隊列長度,定制SLI(優於CPU%)。
VPA:調整podam資源(與stateful和p99 GC)。
KEDA/適配器:按外部源(Kafka lag, Redis list length, CloudQueue depth)進行縮放。
Warm pools/加熱:提前舉起實例以避免寒冷的開始。
「加載代碼」方法:對自動軌道/限制/定時器/轉發策略進行驗證並進行審查。
8)隊列,後壓和尾部控制
目的是防止p99的雪崩狀生長。
限制並發性和隊列大小,引入時間窗口和冪等性。
Hedging/Retry-budget:限制用戶和系統的總體時間預算。
Graceful degradation:在超載時關閉次要幻燈片。
9) DB、Keshi和Storage
DB:連接限制,日誌/FSync,索引,查詢計劃,replica lag,熱鍵/表,事務的max TPS。
Keshi:按細分得分,釋放/殘障時的「錯過風暴」,按鍵分配。
Storaj: IOPS/throughput,延遲,壓縮,TTL,清理舊批次/快艇。
遷移模式:expand→migrate→contract沒有停止鎖定。
10)事件流和ETL
Kafka/總線:批量吞吐量,lag,ISR,compaction,生產商/消費者限制。
ETL/batchi:啟動窗口、運行時間預算、對原木的影響(throttle I/O)。
對於臨界浮動(付款/資產負債表),相同性和異常性。
11)網絡和外圍
L4/L7平衡器:連接極限,syn backlog, TLS offload, session reuse。
CDN/Edge:帶寬、緩存策略以減少起源負載。
網內限制:VPC/子網中的 pps/mbps,egress成本(FinOps)。
12)多區域,DR和轄區
策略:主動(GSLB/Anycast),主動(熱/熱/冷DR)。
N+1按地區分列:在保持SLO核心流的同時忍受AZ/地區的損失。
法律本地化:按國家/地區劃分流量/數據,不同的限制以及每個提供商的SLO。
DR測試:具有實際負載轉移的常規遊戲日。
13)外部提供商: 配額和路線
付款/KYC/antifrod/郵件/SMS:TPS配額,爆發,日限。
多供應商:潛能/成功路由,SLO按供應商,自動收件人。
SLA合同:合規e2e-SLO,升級渠道,狀態網絡手冊。
14) FinOps: 成本和效率
TCO:compute+storage+network egress+許可證/提供商+值班。
單位經濟學:1k 請求/1存款交易/1 KYC的成本。
優化:右對齊,現貨/前綴折扣,高速緩存命中,登錄/跟蹤,冷存儲級別。
時移負荷:在「夜間」窗口和廉價區域不關鍵的戰鬥。
15)Dashbords和報告(最低招聘)
Capacity Overview:
當前負載vs持續的鏈路通過。
按服務和地區分列的Headroom;預計24/72小時。
KPI FinOps:$/1K查詢,$/存款。
Risk & Hotspots:
頂部瓶頸(p99, saturation, lag), DR.
Providers:
提供商的成功/潛伏期和限制;路線上的流量份額。
Backlog:
升級計劃/指數/優化計劃,預期節省/容量增長。
16)流程和角色
RACI:平臺(infra/cluster/balancer),DB/Data(索引,復制),服務命令(分析/緩存),SRE(SLO,Alerta),Sec/Compliance(加密/日誌),財務(預算)。
節奏:每周能力審查(路線圖,預測,風險),每月FinOps摘要,每季度DR測試。
更改管理:大型活動/發布通過機會門(下表)。
17)發行和活動支票清單(capacity-gate)
- 高峰負荷預測和「+x%緊急尾巴」。
- 用於核心流(付款/CUS/登錄)的可用頭頂。
- 向提供者確認配額;備用路由處於活動狀態。
- HPA/KEDA閾值和warm-pool設置。
- 隊列/限制和降級得到驗證(花花公子準備就緒)。
- 金絲雀股份和自動回滾包括在內。
- Dashbords/Alerta (burn-rate, saturation, p99)已驗證。
- DR計劃和升級聯系是相關的。
18)反模式
「CPU <70%-一切都很好」:忽略依賴性限制(DB連接,IOPS,隊列)。
沒有按鏈接度量的集中式「黑匣子」-無法理解限制的位置。
缺少緩存策略-釋放失敗會殺死起源。
沒有預算的撤退限制的硬碼是一場查詢風暴。
「一個支付提供商」是高峰期的故障點。
忽視溫暖的儲備是事件的起因。
沒有定期的DR測試-該計劃在需要時不起作用。
19)迷你計算(示例)
服務X:每波德350 RPS的可持續性(vCPU=1, RAM=2 GiB)。目標是5,000 RPS,頭部25%。
所需功率='5000/0。75 = 6667 RPS`.
Podov='ceil(6667/350)=20'。另外,warm-pool 15% → 3 pod。
DB: 12k TPS限制,當前信用9k TPS,高峰預測10。5k TPS →庫存1.5k (14%).需要:索引/sharding/副本或緩存以降至 8。5k.
提供商A (KYC):配額120 rps,峰值95 rps,活動+40% → 133 rps>配額→路由70% A/30% B。
20)實現能力規劃模板
1.描述e2e路徑和瓶頸。
2.引入CU並測量每個層的穩定通量。
3.在所有鏈接上配置靜止度和p99度量。
4.形成事件/活動/發布日歷。
5.構建隊列和「如果」腳本的預測。
6.固定對流和對流區域(綁定到錯誤預算)。
7.設置HPA/VPA/KEDA+warm-pools、限制/轉發/隊列。
8.檢查提供商配額,啟用多條路由。
9.收集減速板和每周的節奏能力評論。
10.每季度-DR演習和模型修訂。
21)結果
容量規劃是一組可管理的預測,架構限制和成本,而不是「增加CPU」。當每個e2e路徑層都具有測得的容量,並且頭部和降解策略與SLO和錯誤預算相關聯時,峰值負載,活動和事故不再令人驚訝。這種方法可以降低事故風險,穩定業務指標並優化成本。