English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

guest
1 / ?
back to lessons

入口與出口作為獨立集合

網絡架構中的對偶圖

對偶圖將節點分為兩個集合,僅允許集合之間的邊(不允許集合內的邊)。

網路邊界具有自然的對偶結構:

- 入口側:外部客戶在一邊,內部服務在另一邊。邊:外部請求進入,內部響應出去。

- 出口側:內部服務在一邊,外部目的地在另一邊。邊:內部服務發起出bounds呼叫,外部響應回來。

不對稱性

- 入口:源集合是無限的(任何人在網際網路上)。目的集合是小的(幾個服務)。流量與用戶數量成比例。

- 出口:源集合是小的(幾個內部服務)。目的集合是有限的(幾個已知夥伴)。流量與內部活動成比例。

單機設計 通過一個節點將兩個對偶半邊塌陷。該節點從外部(入口)和內部(出口的反向)接收流量。節點負載 = 兩個部分的總和。

分裂設計 保持兩個對偶半邊分別位於不同節點。每個節點處理一個角色及其相應的擴展軸。

![/static/diagrams/distsys_geom_bipartite.svg]

為一個小型的SaaS繪製對偶圖:5個外部客戶端點(發送請求進入),3個內部服務(後端),以及4個外部合作夥伴API(被呼叫作出口)。識別出哪些邊屬於入口對偶半邊,哪些屬於出口對偶半邊。預測在內部服務失敗時,圖形連通性會發生什麼變化。

在分裂之前:切頂點無處不在

單盒子:一切都在一個節點裡

在分裂之前,一個單一代理盒子在每個外部/內部對之間。從圖形上來看,它是一個高階切斷點:其移除將使所有客戶從所有後端斷開,以及所有內部服務從所有外部夥伴斷開。

在這個節點的連通性為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。每個側面都可以根據需要水平擴展。

一個團隊目前運行一個代理盒子(雙向都有單個切斷點)。他們將其分為一個入口+一個出口,然後在後來添加第二個入口(HA對),但保持單個出口。逐步說明在每個步驟中圖形連通性是如何發生變化的,並識別在第三個步驟後仍然為1連通的分裂一半(這是仍然是最低容差模式)。

網絡分區容忍度

整合

您現在可以將網絡架構視為雙部分圖,識別切點和追蹤每半部的連通性。

將此應用於網絡分區。

一個 網絡分區 是一個圖形切割:跨分區邊失效;兩側各自繼續運行但無法相互連接。

一個地理分布式系統有兩個數據中心由單個 inter-DC鏈接相連。入口流量通過 DC1 進入;出口通過 DC1 對外傳送;一些內部服務位於 DC2,並將調回 DC1 進行有狀態操作。

如果DC間的鏈接失效,預測會發生什麼:(1)哪些分裂一半在每個DC內仍然保持連通,(2)哪些流量繼續流動,哪些停止,以及(3)提出一項建築改變,使系統能夠容忍這種分區,從而在有界退化中而不是全罷工。

陪伴筆記

陪伴筆記

這一課程將主課程中的 Ingress & Egress Separation 轉化為雙部分圖分析。

下一個陪伴課程 geometry_of_failure_modes_and_blast_radius 會導出之間中心性(識別瓶頸節點)和最小切割(界定爆炸半徑)。

好棒哦。