倉儲規模電腦(warehouse-scale computer)
當你搜尋網路、串流影片或打開聊天程式時,你的手機幾乎沒做什麼真正的工作。它把一個請求送過網際網路,傳到一棟有好幾座足球場那麼大的建築裡,裡面塞了數萬台電腦,而這棟建築在零點幾秒內就回答你。倉儲規模電腦(warehouse-scale computer)的激進構想,是不再把這棟建築看成一整屋各自獨立的機器,而是把整棟建築當成一台單一電腦來設計——設計的單位是整座倉庫,不是單一台機器。伺服器、放伺服器的機架、把它們連起來的網路、供電與散熱:全部一起被設計,好把同一個工作負載跑好,就像一台 PC 的各個零件被一起設計那樣。
具體而言,WSC 是一支大致同質的商用伺服器艦隊,組織成機架(每架數十台伺服器)與叢集(許多機架),由資料中心網路串連,再由能在整支艦隊上排程工作的軟體來管理。使用者的一個請求,例如單一次網路搜尋,會被平行扇出到數千台這樣的伺服器,每台搜尋索引的一小片,然後它們的部分答案被合併,頁面才回傳給你。沒有任何一台伺服器握有整個工作;是整棟建築握有。這就是為什麼架構師用建築層級的數字來衡量 WSC——每個請求的總成本、每個有用運算的瓦數、整支艦隊每秒處理的請求數——而不是任何單一晶片的速度。
WSC 很容易和傳統的科學超級電腦搞混,但它們是不同的物種。超級電腦是為一個龐大、緊密耦合的計算(氣象模型、物理模擬)而建,其各部分必須不斷溝通,任何一處故障就會中止整次運算。WSC 反而靠許多彼此獨立的請求(請求層級平行)維生,用便宜可互換的商用零件而非奇特硬體打造,把不斷發生的故障當成常態而非災難,並且為了在規模下的成本、能耗與可靠性而被無情地最佳化,而不是為了浮點運算的尖峰速度。它是把運算當成基礎建設:一個你按請求租用的公共設施。
也要誠實看待這幅圖的極限。WSC 不是魔法,也不是無限的;它是一筆巨額的資本投資(一棟建築常達數億美元),其經濟被供電、散熱,以及更換不斷耗損的硬體所主導。而把它叫做一台電腦是個好用的抽象,不是字面上的真實——軟體必須拚命去隱藏一個事實:它其實是數萬台會出錯的機器,其中任何一台都可能隨時掛掉。
你打的一次網路搜尋大約花 0.2 秒。在 WSC 內部,它被拆給比方說一千台伺服器,每台在幾毫秒內掃描自己那一片索引;它們最好的結果被收集、排名、組裝成一個頁面。你體驗到一台快速的電腦;幕後是一千台機器各做了一點點。
WSC 抽象:許多機器各做一點點,呈現給使用者的卻是一台快速的電腦。
WSC 不只是一台很大的超級電腦。它是為了成本、能耗,以及在硬體不斷故障下處理許多獨立請求的吞吐量而最佳化——不是為了一個緊密耦合計算的尖峰速度。