資料中心網路(datacenter network)
想像一棟巨大的辦公大樓,每張桌子都有一支電話,而任何一位員工都可能在任何時刻需要打給任何另一位,整天都這樣。大樓的內部電話系統——配線、交換機、樓層之間如何連接——決定了人們能多快協作。在倉儲規模電腦裡,對應的東西就是資料中心網路:讓數萬台伺服器中任何一台都能把資料送給任何另一台的交換器與纜線。因為單一個使用者請求常常扇出到數千台機器、它們的答案又必須回來合併,這個內部網路不是枝微末節——它是神經系統,決定整棟建築是表現得像一台快速電腦,還是一群緩慢的人。
網路被建成一個反映實體佈局的階層。每台伺服器連到一個架頂交換器(top-of-rack switch),由它機架裡那數十台伺服器共用。那些機架交換器往上連到匯聚交換器,再連到核心層,形成一棵樹(現代設計用胖樹或 Clos 結構,提供許多平行路徑,好讓上層不會變成單一瓶頸)。機架內部頻寬充沛、延遲極小——相距一公尺的兩台伺服器幾乎瞬間交談——而當流量必須爬上樹、跨越機架之間時,兩者都變糟。所以 WSC 生活的一個關鍵事實是:並非所有伺服器對伺服器的連結都相等;兩段工作彼此相對的位置,會改變它們能多快通訊。
這就是為什麼軟體的放置如此要緊。排程器會試著把一件工作裡常常交談的片段放進同一個機架,好讓它們的閒聊留在便宜、快速的機架內連結上,避開較稀缺、較慢的跨叢集頻寬。網路的結構滲進程式的設計方式:資料佈局、副本放置、哪些機器合作,全都被它們之間搬移位元組的成本所形塑。把網路搞錯,整台 WSC 就停滯,不管個別 CPU 多快。
誠實的一點:「一台伺服器能連到任何另一台」這個標題為真,但並不均勻。這棵樹通常被超額認購(oversubscribed)——底部伺服器處的頻寬遠多於頂部核心處——所以若太多機器同時想橫越整棟建築傳輸,上層連結就飽和,一切都變慢。網路是個共享、有限的資源,在規模下它常常才是真正的瓶頸,而非處理器。
同一機架裡的兩台伺服器透過一個架頂交換器交談,延遲低、頻寬滿。不同叢集裡的兩台伺服器則必須往上到核心再下來——跳數更多、延遲更高,且共享的上層連結可能壅塞。同一支艦隊,通訊成本卻大不相同。
兩台伺服器在網路樹中的位置,決定它們能多快交換資料。
並非所有連結都相等。機架內頻寬便宜又快;跨叢集頻寬稀缺且常被超額認購。好的放置會把愛交談的工作放得很近。