在流量到達前識別瓶頸節點
介數中心性
在圖中的每一對節點之間,都存在一條最短路徑。節點 N 的介數中心性 = 所有最短路徑中經過 N 的比例。
具有高介數的節點位於許多其他節點對之間的路徑上。 如果它變慢,許多流量都會變慢。如果它失效,許多流量都會中斷。
架構解讀:高介數節點是每次架構審查都應格外關注的對象。它們同時是瓶頸、單點故障(SPOF)以及容量關鍵組件。它們通常是:
- DNS 供應商(位於每個客戶端與每個服務之間)
- 入口代理(Ingress proxy)(位於每個客戶端與每個後端之間)
- 資料庫主節點(位於每個後端與每個讀取操作之間)
- 身份驗證服務(位於每個使用者與每個授權操作之間)
無需測量即可偵測:僅憑圖拓撲即可識別具有高介數中心性的節點。您不需要流量數據,只需要架構圖。一個位於許多其他節點對之間的節點,在結構上具有關鍵性。
運營後果:高介數中心性的節點值得在以下方面獲得不成比例的重點投資:(1) 容量餘量,(2) 冗餘性,(3) 可觀測性,以及 (4) 事故應變手冊。
最小的割斷開最小的切片
以通俗語言解釋最小割定理
圖中兩個節點之間的最小割(min-cut)= 要將它們斷開,必須移除的最少邊(或節點)數量。
操作層面解讀:最小割限制了最壞情況下的爆炸半徑。如果「客戶端」與「資料庫」之間的最小割為 1 條邊(即單一代理),那麼失去這條邊就會使所有客戶端與資料庫斷開連接。如果最小割為 5,則需要同時失去 5 個元件才能完全斷開連接;這雖然是壞運氣,但影響範圍是有界的。
針對爆炸半徑進行設計:在每個重要邊界處提高最小割。使用多個代理;多個快取節點;資料中心之間的多條網路路徑。每增加一個,最小割就會增加 1。
以圖論術語解釋的防波堤模式(Bulkhead Pattern):將資源劃分為彼此之間不共享最小割的獨立子圖。由於邊不存在,一個子圖內的故障無法傳播到其他子圖。
直徑設定故障傳播距離
圖的直徑(Graph diameter)= 任意兩個節點之間最長的最短路徑。
故障傳播:當節點故障且重試流量回流時,它們會觸及上游節點,範圍最遠可達直徑距離。一個直徑為 3 的系統(客戶端 -> 代理 -> 後端 -> 資料庫)意味著資料庫故障會在重試風暴中影響 3 個上游層級。
含義:較短的直徑 = 更快的故障遏制,但也意味著更高的節點集中度。每種設計都有其權衡。
為真實架構計算最小割(Min-Cut)
一個架構:1 個 DNS、1 個 CDN、3 個反向代理、12 個後端副本、1 個資料庫主節點。
透過圖指標進行失效模式稽核
綜合應用
您現在可以識別高介數節點、計算每個邊界的最小割集,並透過直徑估算失效傳播距離。
同時應用這三項。
一個系統:50 個客戶端點 -> 1 個 DNS -> 2 個 CDN 節點 -> 4 個反向代理 -> 16 個後端副本 -> { 資料庫叢集(1 個主節點 + 2 個備用節點)、Redis 叢集(5 個節點)、3 個外部 API }。
配套筆記
配套筆記
這堂幾何學課程透過圖指標(介數、最小割、直徑)重新詮釋了故障模式與爆炸半徑主課程。
最後一份配套筆記 geometry_of_observability_and_capacity 探討了 CDN PoP 覆蓋範圍的 Voronoi 單元、延遲三角形的光速下限,以及在代理層重新審視的排隊曲線。
做得很好。