一個改變世界的“箱子”

一個改變世界的“箱子”

撰文| 雲希

編輯| 猛哥 丹如


一個時代的變革往往始於一個微小的創新。


1956年,對航運一竅不通的卡車大亨麥克萊恩第一次將集裝箱用於貨物運輸時,恐怕連他自己也想象不到,一個普通的鐵箱子將會引發一場全球的巨大變革。


集裝箱尺寸一致,運輸流程標準、系統。每個箱子只裝一件貨物,能在港口、火車、輪船間自由裝卸。它大大提升效率的同時,也讓運輸成本降低了90%,從實質上打破了各個國家、港口之間的物流壁壘。


這個箱子將世界就變成了一座大工廠,促使了全球分工和資源流通——蘋果找到中國的富士康,豐田公司創造出“及時生產”,美國人吃到了巴西的牛肉……一個微不足道的創新讓世界的經濟和政治格局都為之改變。


在IT屆,這個箱子被稱為“容器”。


和集裝箱一樣,容器將應用封裝好後,便可以在任意環境之下自由裝卸、敏捷運行,提高研發效率的同時,大大降低了運維成本,從而掀起科技圈的新浪潮。


自2013年Docker出現以來,“容器”便成為雲計算領域炙手可熱的關鍵詞。2019年公開信息顯示,Docker開源版的下載次數超過800億次,有約有三分之一的財富100強和五分之一的全球500強公司都使用Docker企業版。權威機構Gartner預測,2022年將有75%的企業使用容器。


不同於以往追隨硅谷的姿態, 國內的容器化實踐早在10年前便已拉開帷幕。


性能危機


這其中,佈局最早的是阿里。


2011年,隨著雲計算的普及,阿里巴巴走過物理機時代,全面邁向虛擬機。


如果說物理機是家裡的電腦,那虛擬機則是在電腦上模擬出的許多臺小電腦,它擁有完整的軟硬件功能,使用體驗就跟電腦一致。但“虛擬化”有性能損耗。如果一臺100個CPU的物理機能虛擬出來100臺小電腦,那麼只有90臺真正幹活,另外10臺要額外做管理工作,損耗由此形成。


規模小時損耗無傷大雅,但阿里數萬集群,光是虛擬化過程中耗損的算力就抵得過一家中型互聯網公司。


2011年,為了緩解巨大的虛擬化損耗,淘寶的第一個程序員蔡景現(花名:多隆)和第一代架構師林昊(花名:畢玄)在無心插柳中研發出了阿里第一代容器——T4。


T4同樣基於物理機而來。普通虛擬機將整個操作系統運行在虛擬的硬件平臺上,進而提供運行環境供應用程序運行,而T4則直接在宿主平臺上加載運行應用程序。


所以T4使用體驗和虛擬機一致,卻能減少性能損耗,一經推出便大受歡迎,並逐漸取代虛擬機,承擔了集團整個交易系統的計算資源。


但它依然無法解決阿里高企的運維成本。


彼時,為了維繫龐大集群的穩定,阿里運維團隊超過300人,24小時輪班,依然追不上逐年攀升的業務量。“雙11”期間,用戶暴漲,應用激增,數以百計的工程師更要手動擴容,用人肉築起堤壩才不至於被流量洪峰衝倒。


也是在這一年,大洋彼岸一家名不見經傳的Dotcloud公司開源了其容器創建技術Docker。


一個改變世界的“箱子”


容器並不是Dotcloud公司的創新,但他們開源的Docker為容器引入了鏡像機制。


鏡像,簡而言之是一個壓縮包, 裡面包含應用代碼和所依賴的所有文件和目錄。將鏡像打包上傳到鏡像庫後,無論在何種環境,工程師只需到庫裡下載鏡像,便能重新創造出跟之前一摸一樣的容器,無縫操作。


有了它,工程師就像擁有魔法,能在任意環境中,快速構建出需要的容器。


它完美地解決了 傳統IT流程下的兩大難題——發佈成功率低和運維壓力。


傳統的IT流程下, 業務、研發、運維職責不明晰,運維要一次次調整參數來保障應用運行穩定。


但用了Docker,情況便大為不同。研發工程師在寫應用代碼的同時,便會交代清楚運行所依賴的環境,應用發佈成功率自然能提高,也減小了運維壓力。這也形成了一種DevOps (研發運維一體化)的工作模式。


Docker扇動翅膀,科技圈出現容器風暴。擁有了鏡像後的容器,成為了IT屆的“集裝箱”,與之配套的技術、標準也紛紛上線。


微軟、谷歌、亞馬遜等巨頭公司熱烈擁抱,先前瀕臨淘汰的小公司Dotcloud成為炙手可熱的新星,爾後還直接將公司名字改成了大功臣Docker,並利用Docker著手商業化。


大洋彼岸的阿里不遑多讓。2015年,林昊招募林軒加入團隊,持續完善T4。後者敏銳地捕捉到了這股容器化熱浪。他和林昊、蔡景現一致決定將T4鏡像化升級,以保持技術先進性。


在林軒的搖旗吶喊下, 楊育兵(花名:沈陵)、張振(花名:守辰)、一嘯等人先後加入,成為最早的容器小分隊。大半年後,他們成功將T4升級為Alidocker。


一盆涼水


容器團隊期望將T4全部替換成Alidocker。原想一鳴驚人,沒承想等來的卻是冷板凳。


如先前所說,容器,作為封裝業務應用的集裝箱,如若替換便會帶來一整條研發、運維鏈路的改變。而阿里的技術體系之複雜世所罕見,一個參數的改變都有可能引發故障,故而甚少業務部門願意拿身家性命冒險。


但容器團隊有自己的考慮。在技術迭代頻仍的科技圈,即便是具有壟斷地位的產品、技術和公司,也會驟然被時間的浪潮打翻,


危機感是科技公司的達摩克利斯之劍。


2015年,Docker正式成為了容器屆的標準,但阿里卻還在使用T4。


不能再等了!容器團隊夾著PPT,奔走宣揚,為了讓業務團隊留下深刻印象,林軒介紹楊育兵“這是我們容器小王子”,而張振是“鏡像小王子”,他還在內網寫下長帖疾呼《阿里人請用Alidocker !》


一番操作下,大家記住了Alidocker和兩位王子,依然無動於衷。有主動找上門的,問的都是T4,也有禁不住熱情的,送上幾個沒有名字的邊緣應用。


轉眼來到2016年6月,團隊只接到30多個應用。此時各業務已開始籌備雙11,說服其用Alidocker更是難上加難。


林軒急了,在一次會議中舌戰百人,痛陳鏡像化的必要性:“弓馬再嫻熟,遲早要換成火槍大炮原子彈。不接受先進的文明,總有一天像大清朝一樣完蛋!”


事情陷入僵局,時任阿里集團CTO張建鋒(花名:行癲)站了出來,“我支持Alidocker,在線應用要100%容器化!”


一個改變世界的“箱子”

張建鋒


對於容器化,張建鋒有完整的佈局。容器的優勢有目共睹,阿里業務逐年爆發,容器規模化後,跑在雲服務器上是必然趨勢。


阿里雲的飛天操作系統已經可以成熟調度數萬臺物理機,但因為虛擬化損耗,容器依然只跑在物理機上,無法享受到上雲便利。


為了給容器打造最合適的底座,在2016年雙11覆盤會上,張建鋒點將張獻濤(花名:旭卿)為首的彈性計算團隊,打造神龍服務器,攻克雲計算十數年的難題——將虛擬化損耗降低為零。


從上層的容器到下層的資源底座神龍,如此,阿里便能構建敏捷、高效的業務運行體系。


在張建鋒的支持下,阿里容器化的進程按下“加速鍵”, 一場橫跨了5個事業部,9個團隊,11個業務域的容器化改革拉開帷幕。


初露鋒芒


容器掀起的風暴繼續在科技圈狂吹,若想將Docker進行大規模應用,編排、調度就顯得尤為重要。


2015年,谷歌的K8S、Docker的Swarm、以及開源社區的Mesos在容器編排市場呈“三足鼎力”之勢。


為了避免Docker一家獨大,谷歌(Google)、紅帽(RedHat)等開源玩家們,共同成立了一個名為CNCF(Cloud Native Computing Foundation)的基金會,它本質上是以K8S為核心的開源社區。


一個改變世界的“箱子”


容器編排市場進入長達兩年的混戰。期間,阿里容器化進程也如火如荼。


Alidocker起初表現不穩定,發佈卡單、響應延時、鏡像下載慢、擴容難……每一個Bug的出現,都會帶來一次業務方的跳腳。容器團隊7乘24小時輪班值守,為了與不同的業務高度匹配,他們每週迭代十幾個版本,楊育兵專門寫了《Alidocker的1000個細節》來答疑解惑。


2016年9月,雙11進入全鏈路壓測,容器團隊一舉一動都在聚光燈下。


第一次壓測,Alidocker因為發佈鏈路慢,導致壓測失利。為了解決問題,楊育兵把上下游相關係統全摸了一遍;張振做鏡像到吐,直到雙11所有交易業務都能跑通。


時間逼近,連阿里集團CEO逍遙子都忍不住過問:“畢玄,你覺得今年上Alidocker靠不靠譜?”


開弓沒有回頭箭,雙11如約而至。零點,大屏幕數字飛速翻滾。容器團隊緊緊盯著屏幕。


17.5萬筆/秒,訂單創建峰值再破記錄。數百應用,20萬容器,100%核心流量,Alidocker成功扛住,數據處理能力提升5倍。


萬重大山落地,容器團隊露出久違的笑容。



突破瓶頸


容器編排市場的國際戰局也逐漸清晰。


K8S在開源社區Github上的各項指標一騎絕塵,將Docker原配Swarm遠遠甩在身後,2017年底,隨著Docker宣佈支持K8S。K8S最終勝出,成為容器編排平臺的標準。


有了K8S這個護城河,CNCF社區迅速推出了一系列容器生態的知名工具和項目。大量的公司和創業團隊開始圍繞CNCF而非Docker制定容器化策略。社區日益繁榮,號召力貫徹中外。


AWS、Azure、阿里雲、谷歌雲和IBM雲等前五大雲廠商都已經成為了CNCF 會員,並在自己的雲平臺中提供了K8S服務——國外媒體稱“他們確認了雲原生和容器是企業計算的未來”。


珠玉在前,國內公司也紛紛加快了容器化的步伐。華為從2017年開始,在內部支撐華為終端雲服務等核心業務容器化。一年後, 騰訊自研業務開始上雲,並計劃完成雲原生技術的改造。


阿里步子更大,在線業務於2017年實現全面容器化(Alidocker正式更名為PouchContainer),容器數量上升至百萬。


帶領團隊完成這項工程的,正是丁宇(花名:叔同)。2017年初,丁宇接手容器團隊,阿里備戰雙11的制勝法寶——全鏈路壓測,也是他的手筆。


一個改變世界的“箱子”

丁宇


碼頭上的集裝箱僅僅憑藉箱子本身,並不能實現如此巨大的變革。麥克萊恩的偉大之處在於,圍繞著集裝箱提出了全新的貨運體系,包括管理者、港口、貨船、起重機、卡車和全新的交付流程等。


IT行業同樣如此,容器只是集裝箱和簡單吊裝,背後的編排、調度等配套設施同樣不可或缺。


為了讓容器實現最佳性能,團隊將PouchContainer融合整套設施,升級為ASI容器服務(Alibaba Serverless Infrastructure)。


使用ASI容器服務後,用戶只需關心容器中的應用即可,至於容器的創建、調度、運維管控等一系列瑣事,交給容器廠商即可。


為了能讓阿里集團、阿里雲及外部用戶都享受到同樣的容器服務,ASI勢必要兼容通用標準K8S和Docker,但難度極大。


“你得保證幾百萬個容器遷移到ASI時運行穩定,不掉鏈子,”ASI項目負責人黃濤(花名:智清)說,“這就像給一個百米衝刺的人移植心臟。”


而且K8S有一個致命弱點,當集群達到萬級規模,便會出現延遲和拒絕訪問,無法適應動輒上萬的集群,這也是業界難以突破的瓶頸。


Docker同樣有弱點,創建容器時鏡像下載慢,無法實現快速擴容。


黃濤不敢掉以輕心,選出3人組成突擊隊,為大部隊探路。花了2個月時間,試遍了所有方法,依然想不出萬全之策。


林昊遠赴海外,請來張瓅玶(花名:谷樸)和李響。張瓅玶曾在谷歌管理著雲原生資源池。李響則是ETCD分佈式存儲系統的作者,ETCD一經問世,就成為了業界標準。2019年,李響成為CNCF 9 位 委員之一,也是委員會有史以來首位中國委員。


引發ASI的性能瓶頸的重要原因之一,便是管理節點中的存儲瓶頸。為了突破存儲性能,阿里技術團隊改進ETCD底層存儲引擎的分配算法,將存儲空間從原本的2GB提升為100GB,且沒有延時。除了存儲,團隊還通過提前加載節點所需數據,減少同步事件等方式,拓展了管理節點的各項性能。


與此同時,PouchContainer也迎來喜訊。之前創建容器時,必須完整地拉取鏡像,一旦遇到大規模的業務量,擴容速度甚至會飆升至10分鐘。而團隊研發出了秒級鏡像技術,讓鏡像能夠按需加載,實現了秒級下載擴容。


一個改變世界的“箱子”

前排左一:黃濤,右二:張振 ;後排左四:楊育兵,右三:林昊,右二:林軒


突破兩大瓶頸,ASI打破業界難題,實現超萬級節點穩定運行。阿里內外越來越多的業務方接入。



血的教訓


現實總是在不經意間給予痛擊。


“一個基礎技術團隊,在推動技術變革期間,萬眾矚目下,捅出一個大簍子……”。回憶起曾經的一個大故障,總裁直接技術負責人打電話,團隊成員們心有餘悸。


那次事故後,原打算接入的業務方陸續退出,ASI團隊士氣低落,有人頂不住壓力離開。


痛定思痛後,丁宇在內網發帖,如此自省:“基礎不牢,地動山搖。這一年跑得太快了,不停接入新業務,忽略了團隊的承受能力,希望大家記住這個血的教訓,引以為戒。”


不夠成熟的調度,就像一個擁有“關鍵按鈕”的頑皮孩子,後果不堪設想。有一次,調度系統誤判,直接抹掉了一整個機房的容器,一秒鐘,幾萬個容器不見了,“就像天塌了一樣”。


黃濤不得不開始考慮最極端情況下的保障措施,比如阿里集群都掛了,容器如何恢復;又或者調度系統崩潰了,如何讓業務不受影響......


為了打造一個固若金湯的“集裝箱”, 他們苦修內功。


衝上雲霄


與此同時,阿里集團開始了轟轟烈烈的上雲之路。


2019年初,時任阿里集團CTO兼阿里雲智能總裁的張建鋒召集阿里的技術骨幹開會,“今年開始,阿里巴巴不再採購物理機,所有新增計算都上公共雲。”


阿里終於迎來衝向雲霄的時機。ASI團隊決定將讓所有容器搭載在阿里自研的神龍服務器上,完成最關鍵的一步——上雲。


神龍服務器將虛擬化損耗降低至幾乎不計,可以讓計算成本下降50%,容器性能提升30%,這是真正為容器而生的雲服務器。


但PouchContainer下搭載著阿里用了十多年的物理機,運行著上萬應用, 要從雲下搬遷至雲上,僅靠ASI團隊,難以面面俱到。為了爭取業務方的配合,丁宇帶著所有人到一線技術團隊宣講如何上雲。


與此同時,為了真正讓阿里雲、阿里集團內部以及開源社區享受到同樣的容器服務,實現“三位一體”。李響帶領團隊與雲產品ACK(阿里雲對外的容器服務產品)融合。團隊熟讀ACK代碼,在阿里雲飛天園區閉關數週,“做不出來不回西溪!”


歷時近一年,這場集結了阿里5萬名工程師的浩大工程,在2019年雙11禁受住了全球最高流量洪峰的考驗。阿里正式宣佈,其核心繫統已100%跑在阿里雲上。


一個改變世界的“箱子”


ASI也成功實現了與雲產品ACK的會師。如今的雲產品ACK,既保留了雲上的各種能力,也能成功應對阿里集團複雜的業務環境。


少為人知的是,這同時是全球最大規模的雲原生實踐。


所謂雲原生,便是以“天生就在雲上”的理念打造的一整套IT體系,自容器開始,雲原生中間件、數據庫、服務器等基礎系統也陸續出爐,共同構建出幅員遼闊的雲原生版圖。


一個改變世界的“箱子”


正如集裝箱的出現締造了全新的航運體系,容器的出現也開啟了雲計算的新時代。


集裝箱的威力


2019和2020年,在雲計算史上註定是兩個熱鬧的年份。


谷歌推出了以K8S為核心的混合雲/多雲管理平臺Anthos;微軟推出了開源的雲原生服務網絡Open Service Mesh;華為雲發佈了第二代零損耗裸金屬容器;阿里繼2019年之後,在2020年實現了更徹底的最大規模雲原生實踐……


阿里集團CTO程立(花名:魯肅)表示:阿里核心系統實現了全面雲原生化,每萬筆峰值交易的IT成本較四年前下降了80%,規模化應用交付效率提升了一倍之多,可在1小時內擴展超百萬容器,彈性伸縮性能提升10倍以上。


雲原生大潮奔騰而來。


權威機構Gartner預測,到2020年,將有50%的傳統老舊應用被以雲原生化的方式改造,到2022年,將有75%的全球化企業將在生產中使用雲原生的容器化應用。


沒有人再懷疑——“雲原生就是未來”。


2020年9月的雲棲大會上,阿里巴巴成立雲原生技術委員會 ,負責人蔣江偉(花名:小邪)稱將對外賦能數百萬家企業進行雲原生改造,提升 30% 研發效率的同時降低 30% IT 成本。


一個改變世界的“箱子”

蔣江偉


雲原生拓展商業邊界,並將這股浪潮滲透到人類活動的每個角落。


中國移動使用容器取代虛擬機;網商銀行已將400多個應用程序調整為雲原生架構;


京東雲也在進行微服務和容器化改造;


疫情爆發期,釘釘基於阿里雲容器解決方案,在2小時內擴容一萬臺主機支撐2億上班族線上工作;


申通快遞將核心系統搬到雲上,大規模部署阿里雲容器,億級包裹過境,系統穩如泰山,IT成本還降低了30%;


阿里自研雲原生技術 Virtual Cluster、 Open kruise,在社區開源後,已經被領英、蘋果等公司採用。


如果是5年前,你會看到“Docker基礎介紹”和“雲原生是什麼?”而今天,當你再次搜索時,“雲原生”已是行業公認的“雲計算的下一個時代”。


而這一切,都始於那個“箱子”。


分享到:


相關文章: