日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

十分鐘萬(wàn)臺(tái)服務(wù)器部署能力,探秘阿里雙十一彈性擴(kuò)容背后的技術(shù)故事

 Levy_X 2017-12-15

導(dǎo)讀:2017年天貓雙十一再次刷新了記錄, 交易峰值32.5萬(wàn)筆/秒,支付峰值25.6萬(wàn)次/秒。

 

往往在大促等高峰時(shí)段都需要對(duì)流量提前預(yù)估,但實(shí)際上預(yù)先計(jì)算好的資源和應(yīng)用容量,依然可能不足以支撐流量高峰,需要緊急擴(kuò)容;而容器技術(shù)則非常適合這種場(chǎng)景,在需要時(shí)快速地、自動(dòng)彈性伸縮。那么在業(yè)務(wù)需求極速上升的情況下,大量服務(wù)器資源啟動(dòng)時(shí)如何抗住并發(fā)部署的壓力呢?

 

在本次雙十一期間容器鏡像服務(wù)參與并提供了服務(wù)支撐,其具備在十分鐘之內(nèi)快速萬(wàn)臺(tái)服務(wù)其部署的能力。


指數(shù)級(jí)別增長(zhǎng)、百億次拉取次數(shù),容器鏡像之于容器技術(shù)


作為一種輕量級(jí)的虛擬化技術(shù),容器技術(shù)所具備的敏捷、可移植、可控性,使得它一經(jīng)推出就受到眾多開(kāi)發(fā)者的追捧。但其實(shí)更重要的是,容器技術(shù)定義了一種標(biāo)準(zhǔn)化的交付方式——容器鏡像。

 

容器鏡像將應(yīng)用的代碼以及代碼環(huán)境依賴都都打包在一起,這是一個(gè)與環(huán)境無(wú)關(guān)的交付物,可以應(yīng)用在軟件生命周期的任何階段。就像集裝箱改變了傳統(tǒng)的運(yùn)輸體系,創(chuàng)造了容器鏡像的容器技術(shù)徹底改變了傳統(tǒng)的軟件交付模式。

 

縱觀全球,整個(gè)容器技術(shù)在近三年得到了爆發(fā)式的增長(zhǎng)。據(jù)統(tǒng)計(jì)有67%的企業(yè)在生產(chǎn)環(huán)節(jié)或者嘗試在生產(chǎn)環(huán)節(jié)中使用Docker,幫助他們敏捷進(jìn)化,提高研發(fā)交付的效率。據(jù)Docker Con 2017的統(tǒng)計(jì),近三年應(yīng)用數(shù)增長(zhǎng)了30倍,約有百萬(wàn)級(jí)別的容器化應(yīng)用數(shù)。而容器鏡像的拉取個(gè)數(shù),近三年更是趨于了指數(shù)級(jí)別增長(zhǎng),承載了約110億次拉取。



  DockerCon2017年容器鏡像拉取情況的最新統(tǒng)計(jì)


雙十一與容器鏡像服務(wù)的故事

 

早在2015年,阿里巴巴就在嘗試使用容器技術(shù)。2016年雙十一就已經(jīng)將所有交易核心應(yīng)用容器化,幾十萬(wàn)容器撐起了雙 11 交易 17.5 萬(wàn)筆/秒的下單峰值。而在今年雙十一,阿里巴巴已在集團(tuán)范圍實(shí)現(xiàn)在線服務(wù)全部容器化,內(nèi)部已達(dá)到百萬(wàn)級(jí)容器部署規(guī)模,其中雙十一交易峰值到32.5萬(wàn)筆/秒并且可以實(shí)現(xiàn)十分鐘內(nèi)萬(wàn)臺(tái)服務(wù)器的快速部署。

 

截止目前,容器鏡像服務(wù)支撐了集團(tuán)10萬(wàn)鏡像的托管,共計(jì)2億次的鏡像下載量。

 

為了承受高壓,我們做了多維度的優(yōu)化


在早期的容器推行演練中,由于當(dāng)時(shí)發(fā)布系統(tǒng)日均的發(fā)布量上萬(wàn),很多應(yīng)用的規(guī)模開(kāi)始破萬(wàn),發(fā)布失敗率開(kāi)始增高,影響到了業(yè)務(wù)的正常迭代流程。這個(gè)困境的根本問(wèn)題在于發(fā)布過(guò)程大量大應(yīng)用鏡像拉取的需求,而應(yīng)用鏡像內(nèi)容過(guò)于冗余臃腫,彼時(shí)存在大量超過(guò)5G的大鏡像,文件服務(wù)器扛不住大量的請(qǐng)求。

 

為了解決多規(guī)模、并發(fā)情況下容器鏡像的獲取問(wèn)題,我們考慮了容器鏡像大小、容器內(nèi)容加速及流控、鏡像Registry性能等三個(gè)大維度的優(yōu)化。

 

容器鏡像大小優(yōu)化


Action 1:之前將所有的構(gòu)建過(guò)程編寫(xiě)在同一個(gè)Dockerfile中,包括應(yīng)用及其依賴庫(kù)的編譯、測(cè)試、打包等流程,這里可能會(huì)帶來(lái)的一些問(wèn)題:鏡像臃腫、鏡像層次嵌套深、也可能存在源代碼泄露的風(fēng)險(xiǎn)。我們進(jìn)行了多階段鏡像構(gòu)建優(yōu)化,將鏡像制作過(guò)程中的中間產(chǎn)物與最終鏡像構(gòu)建產(chǎn)物分離,形成最精簡(jiǎn)的應(yīng)用鏡像。


多階段鏡像構(gòu)建優(yōu)化后獲取最精簡(jiǎn)應(yīng)用鏡像

 

Action 2:將功能統(tǒng)一的命令聚合到同一層來(lái)完成,將使用頻繁的應(yīng)用或環(huán)境制作成基礎(chǔ)鏡像復(fù)用,盡可能減少鏡像的層數(shù)。

 

容器內(nèi)容加速和流控


在大規(guī)模的鏡像分發(fā)場(chǎng)景之下,優(yōu)化鏡像本身的大小作用有限,我們依然需要考慮如何從系統(tǒng)上提升鏡像拉取的性能。最初很容易想到服務(wù)器擴(kuò)容,可是擴(kuò)容后又發(fā)現(xiàn)后端存儲(chǔ)成為瓶頸。此外,大量來(lái)自不同IDC的客戶端請(qǐng)求消耗了巨大的網(wǎng)絡(luò)帶寬,造成網(wǎng)絡(luò)擁堵。同時(shí),很多業(yè)務(wù)走向國(guó)際化,大量的應(yīng)用部署在海外,海外服務(wù)器下載要回源國(guó)內(nèi),浪費(fèi)了大量的國(guó)際帶寬,而且還很慢;如果傳輸大文件,網(wǎng)絡(luò)環(huán)境差,失敗的話又得重來(lái)一遍,效率極低。

 

為了解決這些問(wèn)題,阿里推出了蜻蜓這個(gè)產(chǎn)品。蜻蜓通過(guò)使用P2P技術(shù)同時(shí)結(jié)合智能壓縮、智能流控等多種創(chuàng)新技術(shù),解決大規(guī)模文件下載以及跨網(wǎng)絡(luò)隔離等場(chǎng)景下各種文件分發(fā)難題,大幅提高數(shù)據(jù)預(yù)熱、大規(guī)模容器鏡像分發(fā)等業(yè)務(wù)能力。

 

在本地機(jī)器使用了分層的方式來(lái)下載鏡像,下面介紹下DockerPull的執(zhí)行過(guò)程:


Docker 鏡像分層下載圖


Docker Daemon調(diào)用RegistryAPI得到鏡像的Manifest,從Manifest中能算出每層的URL,Daemon隨后把所有鏡像層從Registry并行下載到Host本地倉(cāng)庫(kù)。

 

所以最終,鏡像傳輸?shù)膯?wèn)題變成了各鏡像層文件的并行下載的問(wèn)題。而蜻蜓擅長(zhǎng)的正是將每層鏡像文件從Registry用P2P模式傳輸?shù)奖镜貍}(cāng)庫(kù)中。

 

那么具體又是如何做到的呢?

 

事實(shí)上蜻蜓會(huì)在Host上啟動(dòng)proxy,Docker Engine的所有命令請(qǐng)求都會(huì)通過(guò)這個(gè)proxy,我們看下圖:


蜻蜓P2P容器鏡像分發(fā)示意圖


首先,docker pull命令,會(huì)被dfget proxy截獲。然后,由dfget proxy向CM發(fā)送調(diào)度請(qǐng)求,CM在收到請(qǐng)求后會(huì)檢查對(duì)應(yīng)的下載文件是否已經(jīng)被緩存到本地,如果沒(méi)有被緩存,則會(huì)從Registry中下載對(duì)應(yīng)的文件,并生成種子分塊數(shù)據(jù)(種子分塊數(shù)據(jù)一旦生成就可以立即被使用);如果已經(jīng)被緩存,則直接生成分塊任務(wù),請(qǐng)求者解析相應(yīng)的分塊任務(wù),并從其他peer或者supernode中下載分塊數(shù)據(jù),當(dāng)某個(gè)Layer的所有分塊下載完成后,一個(gè)Layer也就下載完畢了,同樣,當(dāng)所有的Layer下載完成后,整個(gè)鏡像也就下載完成了。

 

蜻蜓支持多種容器技術(shù),對(duì)容器本身無(wú)需做任何改造,鏡像分發(fā)比natvie方式提速可高達(dá)57倍,Registry網(wǎng)絡(luò)出流量降低99.5%以上。為阿里巴巴業(yè)務(wù)的極速擴(kuò)張和雙十一大促保駕護(hù)航。

 

鏡像Registry性能優(yōu)化


蜻蜓利用P2P的模式解決了從Registry獲取鏡像層并傳輸?shù)奖镜氐膯?wèn)題,不過(guò)當(dāng)鏡像拉取規(guī)模在幾萬(wàn)并發(fā)的量級(jí)的時(shí)候,從Registry獲取鏡像的Manifest也會(huì)成為性能瓶頸。容器鏡像服務(wù)從代碼層面、基礎(chǔ)設(shè)施層面做了很多定制化的增強(qiáng):

 

在代碼層面:容器鏡像服務(wù)增加了對(duì)于Docker Registry優(yōu)化,根據(jù)之前的鏡像請(qǐng)求,自動(dòng)分析熱點(diǎn)數(shù)據(jù)并增加了熱點(diǎn)數(shù)據(jù)的緩存,從容應(yīng)對(duì)大規(guī)模并發(fā)下鏡像Manifest的拉取。增加了對(duì)鏡像下載源的動(dòng)態(tài)判斷,根據(jù)鏡像下載請(qǐng)求的不同來(lái)源,自動(dòng)返回離鏡像下載最近的Registry地址。


在基礎(chǔ)設(shè)施層面:為了應(yīng)對(duì)流量的突發(fā),容器鏡像服務(wù)加強(qiáng)了針對(duì)Registry流量、存儲(chǔ)的多維度監(jiān)控,定時(shí)進(jìn)行監(jiān)控探活,并且實(shí)時(shí)收集監(jiān)控?cái)?shù)據(jù),當(dāng)達(dá)到監(jiān)控閾值,Registry會(huì)自動(dòng)進(jìn)行報(bào)警和基礎(chǔ)設(shè)施的彈性擴(kuò)容。

 

鏡像服務(wù)惠及云上用戶


自2015年起面向阿里集團(tuán)內(nèi)部和對(duì)阿里云容器服務(wù)提供支撐以來(lái),阿里云容器鏡像技術(shù)積累了深厚的經(jīng)驗(yàn)。一般而言,大家認(rèn)為容器鏡像服務(wù)是為用戶提供了安全穩(wěn)定的鏡像托管能力,但是實(shí)際上并不至于此:除了鏡像托管以及鏡像的上傳下載之外,容器鏡像服務(wù)還包含了從鏡像構(gòu)建到應(yīng)用部署等一整套的DevOps能力。

 

為了將阿里巴巴在容器技術(shù)上的積累帶給云上用戶,容器鏡像服務(wù)于2017年10月30日正式對(duì)外公測(cè)。容器鏡像服務(wù)(ContainerRegistry)免費(fèi)提供了安全的鏡像托管能力,穩(wěn)定的國(guó)內(nèi)外鏡像構(gòu)建服務(wù),便捷的鏡像授權(quán)功能,方便用戶在云上進(jìn)行容器鏡像全生命周期管理,體驗(yàn)容器技術(shù)帶來(lái)的敏捷變革。

 

1)全球多地域支持及鏡像加速器:


阿里云容器鏡像服務(wù)提供了全球多地域支持,用戶可以在自己業(yè)務(wù)地就近托管容器鏡像,保障應(yīng)用鏡像的極速上傳、下載操作。我們也為每一位用戶提供了新一代專屬鏡像加速器,通過(guò)鏡像加速器可以快速獲取國(guó)外優(yōu)秀的鏡像。鏡像加速器采用了自主研發(fā)的智能路由及動(dòng)態(tài)緩存技術(shù),極大提升了鏡像的下載速度和用戶體驗(yàn)。并且完全兼容 Docker 原生參數(shù)配置方式,支持 Linux、MacOS、Windows 三大平臺(tái)。目前,容器鏡像服務(wù)已經(jīng)加速了千萬(wàn)次的鏡像拉取,幫助用戶節(jié)省超過(guò)十萬(wàn)個(gè)小時(shí)。

 

2)多階段構(gòu)建:


阿里云容器鏡像服務(wù)提供了豐富穩(wěn)定的鏡像構(gòu)建功能,包含自動(dòng)構(gòu)建、海外構(gòu)建、多階段構(gòu)建(multi-stage build)支持,方便打造云上容器DevOps最佳實(shí)踐。用戶可以將應(yīng)用代碼托管在阿里云Code、Github、Bitbucket或者自建的GitLab之上,通過(guò)容器鏡像服務(wù)多階段構(gòu)建功能或者阿里云CodePipline進(jìn)行代碼編譯測(cè)試,構(gòu)建完成后的鏡像將推送至容器鏡像服務(wù)托管。最后通過(guò)容器鏡像服務(wù)上的webhook,動(dòng)態(tài)通知容器服務(wù)集群上相應(yīng)的應(yīng)用重新部署。

 

通過(guò)整個(gè)解決方案,用戶在將代碼提交至線上之后,可以實(shí)現(xiàn)自動(dòng)的代碼測(cè)試,測(cè)試通過(guò)后應(yīng)用自動(dòng)構(gòu)建成鏡像,最終部署到測(cè)試、預(yù)發(fā)或者生產(chǎn)環(huán)境的集群上。


阿里云容器化DevOps流程圖

 

3)  鏡像安全掃描


鏡像已經(jīng)成為企業(yè)的核心資產(chǎn),企業(yè)軟件交付流水線的中心,線上的應(yīng)用的安全問(wèn)題也是至關(guān)重要的。容器鏡像服務(wù)提供了便捷的鏡像安全掃描功能,提供多維度的鏡像漏洞報(bào)告。鏡像漏洞報(bào)告中包含漏洞的CVE編號(hào)、漏洞的等級(jí)、漏洞位置及官方和社區(qū)提供的漏洞修復(fù)方案。



阿里云容器鏡像安全掃描示意圖

 

總結(jié)

 

容器鏡像服務(wù)通過(guò)Registry性能優(yōu)化,蜻蜓通過(guò)P2P技術(shù)結(jié)合智能壓縮和流控等方案,共同解決了大規(guī)模文件下載以及跨網(wǎng)絡(luò)隔離等場(chǎng)景下各種文件分發(fā)難題,在阿里已然成為重要的基礎(chǔ)設(shè)施之一,為業(yè)務(wù)的極速擴(kuò)張和雙十一大促保駕護(hù)航。

 

截止到目前為止,已經(jīng)有數(shù)萬(wàn)用戶經(jīng)過(guò)容器鏡像服務(wù)(ContainerRegistry)享受了安全的鏡像托管能力、穩(wěn)定的國(guó)內(nèi)外鏡像構(gòu)建服務(wù)、便捷的鏡像授權(quán)功能,通過(guò)容器鏡像進(jìn)行全生命周期管理。容器鏡像服務(wù)簡(jiǎn)化了Registry的搭建運(yùn)維工作,支持多地域的鏡像托管,并聯(lián)合容器服務(wù)、CodePipeline等云產(chǎn)品,為用戶打造云上使用Docker的一體化體驗(yàn)。

  

作者簡(jiǎn)介:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多