一個改變世界的「箱子」

 

頭圖.png 做者 | 雲希  一個時代的變革每每始於一個微小的創新。程序員

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

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

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

在 IT 屆,這個箱子被稱爲「容器」。服務器

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

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

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

性能危機

這其中,佈局最先的是阿里。運維

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

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

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

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

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

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

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

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

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

1.png

容器並非 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% 容器化!」 

2.png 張建鋒

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

阿里雲的飛天操做系統已經能夠成熟調度數萬臺物理機,但由於虛擬化損耗,容器依然只跑在物理機上,沒法享受到上雲便利。

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

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

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

初露鋒芒

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

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

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

3.png

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

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 的制勝法寶——全鏈路壓測,也是他的手筆。

4.png 丁宇

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

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 分鐘。而團隊研發出了秒級鏡像技術,讓鏡像可以按需加載,實現了秒級下載擴容。

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

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

血的教訓

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

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

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

痛定思痛後,丁宇在內網發帖,如此自省:「基礎不牢,地動山搖。這一年跑得太快了,不停接入新業務,忽略了團隊的承受能力,但願你們記住這個血的教訓,引覺得戒。」

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

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

爲了打造一個固若金湯的「集裝箱」, 他們苦修內功。

衝上雲霄

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

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

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

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

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

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

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

6.png

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

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

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

7.png

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

集裝箱的威力

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

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

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

雲原生大潮奔騰而來。

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

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

8.png 蔣江偉

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

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

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

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

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

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

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

而這一切,都始於那個「箱子」。

相關文章
相關標籤/搜索