作者:朱祺 阿裡雲全球最有價值專家
3 神龍出世
3.1 繼續說我們的搬磚問題

第2章中指出隻要采用虛拟化和彈性計算,就代表100個勞動力必須選擇1個管理人員,實際上隻能有99個勞動力進行搬磚。而神龍想做到的目标就是既然100個勞工搬磚,就要全部搬磚,但同時也需要有手段來管理和控制我家和鄰居家不同時間搬磚的勞工數。以上圖為例就是讓黃色的那個被抽出來負責管理工作的勞工回去仍然搬磚去。
包工頭看着目前的情況想,如果要維持兩家搬磚的勞工彈性靈活,就需要100個勞工抽1個勞工做管理工作,那如果1000個勞工就需要損失10個,10000個勞工就需要損失100個。工程量越大則損失的勞動力就越多,當業務得到大規劃發展時這個損耗的問題如果能夠解決就可以大幅度的提升搬磚的效率。阿裡雲在神龍架構問世前的虛拟化損耗其實比搬磚的例子更大,平均虛拟化損耗為10%左右,代表100個勞工,隻有90個在搬磚,剩下的10個在做搬磚管理工作。
3.2 神龍1.0的核心理念
結合實際情況包工頭決定讓原來被抽出來做管理工作的勞工甲仍然回去搬他的磚去,因為他的力氣大的特點意味着他本來就适合搬磚而不适合管理工作。而勞工隊伍的管理工作采用項目經理制,即引入專業管理人員來負責勞工隊伍的管理,使勞工隻負責搬磚,當然引入專業管理人員後,成本肯定是上升的,但是搬磚的勞動力就沒有損耗了。采用項目經理制後的情況如下圖所示:
需要重點指出的是,搬磚隊伍彈性伸縮的最小機關是1個隊伍,如果搬磚1隊忙不過來,隻能要求整個搬磚2隊或者搬磚3隊整個隊伍過來幫忙,而不能說從搬磚2隊僅抽取幾個勞工過來幫忙。通過這種結構確定了每隊搬磚隊伍的勞動力因為有專門的項目經理進行管理而不會有損耗。這裡先不引伸到神龍架構,因為還有一個重要的問題沒有提到。
3.3 異構計算的本質是搬磚和砌牆的結合
包工頭從自身業務的發展進行分析,發現我和我的鄰居除了搬磚外還有砌牆的需求,而原先的勞工全部都是擅長于搬磚而沒有擅長砌牆的泥瓦工,讓搬磚的勞工去砌牆固然也是可以的,但是速度和品質顯然不及專門砌牆的泥瓦工。是以包工頭的做法是,在原來的隊伍中加上泥瓦工,這樣1支隊伍就即可以搬磚又可以砌牆了,如下圖所示:
搬磚勞工和泥瓦工結合的方式就叫異構,搬磚勞工在搬磚的時候泥瓦工在砌牆,就叫異構計算。
3.4 神龍1.0的特點總結
到這裡為止雖然沒提過神龍,其實已經把神龍1.0的特點全部說明白了,這裡把搬磚砌牆隊伍的問題和神龍1.0的特點結合起來來作為神龍1.0的特點總結。
搬磚砌牆隊伍為了解決勞動力損耗的問題搬磚的全部搬磚,砌牆的全部砌牆,管理工作由專門的項目經理負責。反映到神龍1.0中即阿裡雲為了解決虛拟化損耗的問題新造出一個帶有智能晶片的專用闆卡負責虛拟化排程,這塊專用闆卡稱為MOC卡,外觀如下圖所示:
為了解決搬磚砌牆任務而專門成立的帶項目經理的搬磚砌牆隊即是阿裡雲的神龍雲伺服器如下圖所示:
業内一般管它叫彈性裸金屬伺服器。根據阿裡雲官方文檔:彈性裸金屬伺服器(ECS Bare Metal Instance)是一種可彈性伸縮的高性能計算服務,計算性能與傳統實體機無差别,具有安全實體隔離的特點,分鐘級的傳遞周期将提供給您實時的業務響應能力,助力您的核心業務飛速成長。現在能夠了解了為什麼計算性能與傳統實體機無差别,因為神龍雲伺服器就是實體機,是以當然計算性能和實體機沒有差别,此外它又可以像雲伺服器一樣彈性伸縮,并且傳遞周期為分鐘級。
一句話總結神龍1.0的特點就是,神龍雲伺服器兼具了實體機和雲伺服器優點,本質上是可以彈性伸縮的實體機并且這種實體機專門為提供雲服務設計。
3.5 神龍1.0的瓶頸
回到搬磚的例子,包工頭又碰到了新問題,鄰居他自己就是一個項目經理,對于搬磚和砌牆有特殊的要求,他要求一個搬磚砌牆隊内的100個勞工上午搬左邊的磚,同時砌右邊的牆;下午搬右邊的磚,同時砌左邊的牆。而目前搬磚砌牆隊的項目經理沒經曆過這種情況,不知道該怎麼調配隊伍内的勞工。
這就是神龍1.0的瓶頸,虛拟化其實分成兩個方向:一個方向是虛拟化組合,把一堆實體機粘成一個大的虛拟機;另一個方向是虛拟化切分,把一個實體機切成一堆小的虛拟機。神龍1.0做到了虛拟化組合,但并沒有做到虛拟化切分,在例子中即為搬磚砌牆隊的項目經理隻知道在自己的隊伍不夠用時叫别的隊伍來幫忙,但是自己的隊伍内怎麼去響應我鄰居家的要求,上下午通過隊内勞工調配做到勞動力彈性卻沒有辦法實作。
這個問題在神龍2.0中得到了解決。