入口與出口作為獨立集合
網絡架構中的對偶圖
對偶圖將節點分為兩個集合,僅允許集合之間的邊(不允許集合內的邊)。
網路邊界具有自然的對偶結構:
- 入口側:外部客戶在一邊,內部服務在另一邊。邊:外部請求進入,內部響應出去。
- 出口側:內部服務在一邊,外部目的地在另一邊。邊:內部服務發起出bounds呼叫,外部響應回來。
不對稱性:
- 入口:源集合是無限的(任何人在網際網路上)。目的集合是小的(幾個服務)。流量與用戶數量成比例。
- 出口:源集合是小的(幾個內部服務)。目的集合是有限的(幾個已知夥伴)。流量與內部活動成比例。
單機設計 通過一個節點將兩個對偶半邊塌陷。該節點從外部(入口)和內部(出口的反向)接收流量。節點負載 = 兩個部分的總和。
分裂設計 保持兩個對偶半邊分別位於不同節點。每個節點處理一個角色及其相應的擴展軸。
![/static/diagrams/distsys_geom_bipartite.svg]
在分裂之前:切頂點無處不在
單盒子:一切都在一個節點裡
在分裂之前,一個單一代理盒子在每個外部/內部對之間。從圖形上來看,它是一個高階切斷點:其移除將使所有客戶從所有後端斷開,以及所有內部服務從所有外部夥伴斷開。
在這個節點的連通性為1。 Anything that disrupts this node (process crash, network glitch, OOM kill) disconnects every dependent path。
在分裂後:切斷點被兩個較輕的節點取代
將其分為入口+出口創建了兩個圖形節點,其中一個。每個節點現在只坐在一個分裂一半上:
- 入口節點:外部客戶到內部服務的分裂一半的切斷點
- 出口節點:內部服務到夥伴的分裂一半的切斷點
Hairpin loop消失幾何學地:在單盒子圖形中,內部服務嘗試通過公共地址與外部對應服務建立聯繫,需要通過同一個節點兩次(首先通過出口角色出發,然後通過入口角色進入)。在分裂圖形中,轉移觸及兩個不同的節點。
每個側面的連通性保持在1,但兩個切斷點可以獨立地被替換。添加第二個入口代理增加入口側的連通性為2,而不改變出口側。
每側的複製
生產集群經常運行2+個入口代理(HA)以及2+個出口代理(HA)。每個側面都可以獨立地達到連通性2。每個側面都可以根據需要水平擴展。
網絡分區容忍度
整合
您現在可以將網絡架構視為雙部分圖,識別切點和追蹤每半部的連通性。
將此應用於網絡分區。
一個 網絡分區 是一個圖形切割:跨分區邊失效;兩側各自繼續運行但無法相互連接。
一個地理分布式系統有兩個數據中心由單個 inter-DC鏈接相連。入口流量通過 DC1 進入;出口通過 DC1 對外傳送;一些內部服務位於 DC2,並將調回 DC1 進行有狀態操作。
陪伴筆記
陪伴筆記
這一課程將主課程中的 Ingress & Egress Separation 轉化為雙部分圖分析。
下一個陪伴課程 geometry_of_failure_modes_and_blast_radius 會導出之間中心性(識別瓶頸節點)和最小切割(界定爆炸半徑)。
好棒哦。