把阿里巴巴的核心系统搬到云上,架构上的挑战与演进是什么?
作者丨張瓅玶(谷樸)阿里巴巴研究員
阿里巴巴核心系統(tǒng)作為全球最大規(guī)模、峰值性能要求最高的電商交易系統(tǒng),在 2018 年之前只通過混合云彈性上云方式,為 雙11 節(jié)約大量成本。直到 2019 年,阿里巴巴實現(xiàn)了核心交易系統(tǒng)全面上云并經(jīng)歷了 雙11 峰值的考驗。
在今天由極客邦科技舉辦的 ArchSummit 全球架構(gòu)師峰會 2019 北京站上,阿里巴巴研究員張瓅玶博士作了主題演講《阿里巴巴核心系統(tǒng)上云:挑戰(zhàn)和架構(gòu)演進的思考》,以下內(nèi)容為演講整理。
核心系統(tǒng)上云之路
工程師時常把我們的系統(tǒng)用飛機來做比喻,乘客則是上面承載的業(yè)務(wù)。云也是一架這樣的載客飛機,作為基礎(chǔ)平臺承載著千萬家企業(yè)的業(yè)務(wù)。今年阿里巴巴實現(xiàn)了核心系統(tǒng) 100% 上云,這個過程實際上走了幾年才達到今天的進展,而且這還不是結(jié)束,也只是阿里巴巴上云的一個開始。
阿里巴巴集團自身業(yè)務(wù)體量巨大,支撐其的互聯(lián)網(wǎng)技術(shù)體系任務(wù)也非常繁重,再加上核心電商業(yè)務(wù)系統(tǒng)的復(fù)雜度,對技術(shù)帶來的挑戰(zhàn)可想而知。
用王堅博士的話說,核心系統(tǒng)上云讓阿里巴巴和客戶真正坐上了同一架飛機。從 in-house 的基礎(chǔ)設(shè)施、定制化的平臺能力,到通用的云平臺,從 cloud hosting 到 cloud native,這個過程面臨著巨大的挑戰(zhàn),同時也是阿里巴巴自身和阿里云的架構(gòu)演進升級的歷程。
阿里巴巴的核心交易系統(tǒng)涉及到包括天貓、淘寶、河馬、菜鳥、聚劃算、咸魚、飛豬等一系列業(yè)務(wù),其背后的核心電商系統(tǒng)的架構(gòu)演進經(jīng)歷了單機房架構(gòu)、同城雙機房架構(gòu)再到目前的中心同城容災(zāi),三地多單元多活架構(gòu)。軟件也分為應(yīng)用、微服務(wù)/中間件和數(shù)據(jù)庫。
阿里巴巴的上云步驟一共分為三個階段:
- 第一階段:在 2015 年之前未上云,全部采用內(nèi)部的基礎(chǔ)設(shè)施。
- 第二階段:2015 開始,雙11 期間單元化的交易應(yīng)用開始通過彈性使用云資源,實現(xiàn)成本節(jié)約的目標(biāo)(注: 圖中上云單元規(guī)模和實際上云規(guī)模不成比例)。
- 第三階段:2018 年的 12 月,CTO 行癲決定阿里巴巴啟動全面上云,隨后組建了以畢玄為上云總架構(gòu)師的架構(gòu)組,確定了上云的方案和步驟。
2019 年經(jīng)過 1 年的努力,終于在 雙11 前實現(xiàn)了核心系統(tǒng)的全面上云。這一年核心電商的中心和單元業(yè)務(wù),包括數(shù)據(jù)庫、中間件等組件,實現(xiàn)了全面上云和使用云的服務(wù)。通過彈性運化,以及離在線混部(圖中未標(biāo)識)等能力,使大促成本持續(xù)下降,到 2018 年,大促新增成本比前一年下降 17%,比早期方案下降 3/4。
這一年核心電商的中心和單元業(yè)務(wù),包括數(shù)據(jù)庫、中間件等組件,實現(xiàn)了全面上云和使用云的服務(wù)。全面上云也不只是將機器搬到云上,更重要的是 replatforming,集團的技術(shù)棧和云產(chǎn)品融合,應(yīng)用通過神龍服務(wù)器 容器和 K8s 上云,數(shù)據(jù)庫接入 PolarDB,中間件采用云中間件和消息產(chǎn)品,負載均衡采用云 SLB 產(chǎn)品等。
云已經(jīng)成為了基礎(chǔ)設(shè)施,無論是電商公司還是其他行業(yè),都可以用云去做更多事情。
云化架構(gòu)
以全面上云的 2019 年為例,2019 年 雙11 的實測,集群的規(guī)模超過百萬容器,單容器集群節(jié)點數(shù)量過萬,數(shù)據(jù)庫的峰值超過 54 萬筆每秒,對應(yīng) 8700 萬查詢每秒,而實時計算每秒峰值處理消息超過 25 億條,消息系統(tǒng) RocketMQ 峰值處理了超過每秒 1.5 億條消息。
這些數(shù)據(jù)背后所代表的,就是上云過程中形成的巨大挑戰(zhàn)。針對這些挑戰(zhàn),阿里巴巴集團從服務(wù)器、存儲、網(wǎng)絡(luò)、數(shù)據(jù)中心等基礎(chǔ)設(shè)施方面做了針對性的應(yīng)對。
1. 自研神龍服務(wù)器
核心系統(tǒng)全面上云決定采用了神龍服務(wù)器。神龍服務(wù)器自研了 HyperVisor 虛擬化卡來替代軟件虛擬化,從而實現(xiàn)無性能損耗的虛擬化架構(gòu)。其特點在于:
- 高性能:去掉了虛擬化帶來的 8% 的性能損耗;
- 支持二次虛擬化:使多樣虛擬化技術(shù) (Kata, Firecracker 等) 的探索和創(chuàng)新成為可能。
在阿里巴巴上云過程中,雙11 期間壓力測試顯示,高負載壓力下的電商應(yīng)用,實現(xiàn) 30% 的 QPS 上升,而 rt 也有明顯下降,長尾 rt 下降尤其明顯。同時,云化的神龍服務(wù)器,促進了運維管理的自動化和在線率水平的提升。阿里巴巴認為,神龍是容器的最佳載體,神龍 服務(wù)是無服務(wù)器化基礎(chǔ)設(shè)施的最佳載體。
存儲方面,走向了全面云化存儲,也即全面存儲計算分離。
上云也帶來了大規(guī)模使用云存儲產(chǎn)品:盤古(盤古 2.0),實現(xiàn)了集團業(yè)務(wù)的更大規(guī)模的存儲計算分離。存儲計算分離即業(yè)務(wù)邏輯執(zhí)行在計算集群上面,存儲部署在存儲集群上面。計算和存儲集群之間通過高速網(wǎng)絡(luò)連接。
隨著數(shù)據(jù)處理對存儲需求和計算需求在規(guī)模、速度、容量和成本等維度的不斷變化,計算與存儲分離可以最大限度地解耦并使這兩類不同的關(guān)鍵資源相對獨立地擴展和演進,獲得更好的彈性、資源效率,同時可以讓應(yīng)用更容易的獲得分布式存儲的可靠性。
上云過程中,盤古 2.0 的升級也帶來更好的 io 長尾延遲的穩(wěn)定性,通過慢盤黑名單、backup read、動態(tài) timeout 等關(guān)鍵技術(shù)大幅度的改進了長尾延遲。
2. 網(wǎng)絡(luò):高速混合云
原有的集團安全域,由現(xiàn)有的集團自建網(wǎng)絡(luò)為主體逐漸轉(zhuǎn)變?yōu)橐栽粕霞瘓F的虛擬網(wǎng)絡(luò)為主體,以 VPC 的方式實現(xiàn)網(wǎng)絡(luò)隔離混合云網(wǎng)絡(luò):為了實現(xiàn)集團網(wǎng)絡(luò)與云上 VPC 內(nèi)業(yè)務(wù)單元的互通,采用了云專線產(chǎn)品方案,組成了混合云網(wǎng)絡(luò)。云專線方案中的虛擬網(wǎng)絡(luò)網(wǎng)關(guān)(xGW 集群),采用硬件化 HGW 集群。
3. 數(shù)據(jù)中心:自建網(wǎng)絡(luò)遷移上云
數(shù)據(jù)中心自建網(wǎng)絡(luò)遷移到 VPC,在上云過程中,實現(xiàn)了云 VPC 最大規(guī)模提升 4 倍。安全組性能大幅度優(yōu)化,企業(yè)級安全組最大容量提升 25 倍。
在公司內(nèi)部,各業(yè)務(wù)自建的網(wǎng)絡(luò)之間是相互獨立的。隨著全站云化,網(wǎng)絡(luò)安全域的形態(tài)也隨之發(fā)生變化,TB 級別的云上云下網(wǎng)絡(luò)流量對穿,從軟件實現(xiàn)的 XGW 升級到軟硬結(jié)合的 HGW,單節(jié)點性能提升 20 倍。
另外,值得指出的是,資源、賬號和權(quán)限體系對接互通是上云的重要環(huán)節(jié)。
上云架構(gòu)未來演進:云原生
上云已成為趨勢,但是核心系統(tǒng)上云只是下一個開始。
企業(yè)上云今天已經(jīng)成為廣泛接受的必然趨勢,Rightscale state of the cloud report 2019 顯示,94% 企業(yè)已經(jīng)在使用云,其中公有云 91%,on prem 70%。
企業(yè)的數(shù)字化轉(zhuǎn)型的過程中,利用云的能力的過程也分為不同的階段,一般來說也會是走過和阿里上云類似的過程:首先是彈性使用云的資源,實現(xiàn)部分業(yè)務(wù)上云,Cloud-hosting。在此過程中,一般是非核心系統(tǒng)使用云資源。然后涉及到核心系統(tǒng)的云化,這里發(fā)生的變化不僅僅是上云的應(yīng)用的數(shù)量,更是底層基礎(chǔ)設(shè)施整體使用云平臺的能力的過程。
在阿里巴巴看來,未來是云原生化的。
什么是云原生?從技術(shù)角度講,云原生技術(shù)是一系列的應(yīng)用構(gòu)建和運維最佳實踐的集合。云原生技術(shù)的生命力在于它聚焦于給用戶帶來價值,這些價值分為幾個方面:
-
容器和資源的編排,如 K8s、Container,帶來的運維效率提升,和資源利用率的提升。中心化的編排可以很好的充分編排資源降低企業(yè)成本;
-
分布式系統(tǒng)的可以彈性擴展的能力 Scalability 以及可靠性。盡管互聯(lián)網(wǎng)技術(shù)發(fā)展了幾十年,到今天,分布式、可擴展、可靠的系統(tǒng),仍然是很難構(gòu)建的。也得益于云原生領(lǐng)域開放技術(shù)和云的快速發(fā)展,一切正在變得越來越容易;
-
開放治理和開放的技術(shù),改變了云廠商和用戶之間的信賴關(guān)系,越來越多的企業(yè)信賴開放標(biāo)準(zhǔn)的云服務(wù)。同時云原生也降低了遷云的成本;
-
云原生技術(shù)所倡導(dǎo)的持續(xù)交付,聚焦于企業(yè)真正關(guān)注的價值,即迭代創(chuàng)新的速度,time to market。
從上云視角看,云原生(Cloud native)化是最大化使用云的能力,使企業(yè)聚焦于業(yè)務(wù)的實踐。
為什么這么說?我們以阿里核心系統(tǒng)演進為例說明云原生化和使用云的能力的關(guān)系。
阿里巴巴的應(yīng)用上云前仍然存在應(yīng)用和基礎(chǔ)設(shè)施耦合問題,由于采用自建軟件基礎(chǔ)設(shè)施,配置管理、發(fā)布升級、監(jiān)控觀測、流量治理等與業(yè)務(wù)應(yīng)用耦合在一起,對于運維效率、研發(fā)演進效率和穩(wěn)定性都帶來了挑戰(zhàn)。
我們在上云過程中看到,實現(xiàn)標(biāo)準(zhǔn)的云基礎(chǔ)設(shè)施和業(yè)務(wù)應(yīng)用的全面解耦,將會帶來全面的研發(fā)運維效率提升。
**那么,**使用 in-house 自建基礎(chǔ)設(shè)施就一定不行嗎?
阿里巴巴集團的基礎(chǔ)設(shè)施也是由專門的團隊維護的,也在一定意義上實現(xiàn)了基礎(chǔ)設(shè)施和應(yīng)用的解耦。不是所有的 in-house 的基礎(chǔ)設(shè)施就不云原生。事實上,云原生技術(shù)的很多發(fā)源地,比如 Google 內(nèi)部的基礎(chǔ)設(shè)施很好地實現(xiàn)了和應(yīng)用的解耦并帶來了業(yè)界領(lǐng)先的研發(fā)運維效率。
但是一般來說,由于內(nèi)部開發(fā)容易忽視基礎(chǔ)設(shè)施和應(yīng)用的邊界而實現(xiàn)了過多的非標(biāo)功能或者傾向于采用更快速落地的方案,這些容易帶來基礎(chǔ)設(shè)施和應(yīng)用的更多耦合,不利于長期的演進和效率。
例如阿里的容器化雖然帶來了應(yīng)用發(fā)布的標(biāo)準(zhǔn)化的優(yōu)勢,但是在容器化過程中我們采用了富容器方案加快容器化進程,使容器支持了很多虛擬機使用模式(啟停、原地更新等),帶來了容器的可遷移性比較差,容器運行生命周期可變帶來運維成本等。因此運維效率、穩(wěn)定性和業(yè)務(wù)的演進效率,在這種耦合中,都受到了不同程度損失。
所以云原生化的關(guān)鍵路徑,是實現(xiàn)應(yīng)用和基礎(chǔ)設(shè)施的解耦,并且通過采用標(biāo)準(zhǔn)化的云產(chǎn)品方式來支持。
那么基礎(chǔ)設(shè)施和業(yè)務(wù)的邊界應(yīng)該在哪里?
阿里巴巴認為邊界是在不斷的變化過程中,真正的判斷標(biāo)準(zhǔn)是業(yè)務(wù)關(guān)注的邊界而非架構(gòu)邊界,基礎(chǔ)設(shè)施應(yīng)無須業(yè)務(wù)持續(xù)關(guān)注和維護。例如,使用了容器服務(wù),是否能讓業(yè)務(wù)無須關(guān)注底層資源?也未必,取決于資源的彈性能力是否有充分的支持(否則業(yè)務(wù)仍需時刻關(guān)注流量和資源壓力),也取決于可觀測性(否則問題的排查仍需關(guān)注底層環(huán)境)的能力。因此,能夠讓業(yè)務(wù)無須持續(xù)關(guān)注的基礎(chǔ)設(shè)施本身是一次重要技術(shù)演進。
無服務(wù)器化的基礎(chǔ)設(shè)施,具有以下三個特點:
阿里核心系統(tǒng)的云原生化演進
阿里巴巴集團的核心系統(tǒng)的云原生架構(gòu)演進,將繼續(xù)朝著基礎(chǔ)設(shè)施解耦,業(yè)務(wù)研發(fā)運維效率提升,成本下降的整體目標(biāo)推進。具體來說,圍繞幾個重點的方向工作正在展開:
1. 節(jié)點托管的 K8s 服務(wù)
實現(xiàn)節(jié)點運行環(huán)境全托管的標(biāo)準(zhǔn) K8s 基礎(chǔ)設(shè)施,實現(xiàn)資源和節(jié)點運行環(huán)境解耦:通過全托管的節(jié)點計算資源,業(yè)務(wù)無須管理服務(wù)器降低運維成本。今年 雙11 集團實現(xiàn)了上海單元的 ASI 升級,帶來發(fā)布擴容效率提升、運行時更穩(wěn)定容器自愈率提升的效果。未來一年將實現(xiàn)核心系統(tǒng)整體 ASI 化。
2. Service Mesh 化
實現(xiàn)網(wǎng)絡(luò)、流量管理配置下沉基礎(chǔ)設(shè)施,與應(yīng)用充分解耦。Mesh 化帶來的價值:
- 軟件基礎(chǔ)設(shè)施和業(yè)務(wù)解耦,各自獨立演進;
- 全鏈路精準(zhǔn)流量控制和資源動態(tài)隔離;
- 提供對應(yīng)用透明的云安全特性(安全特性解耦)。
3. 應(yīng)用和基礎(chǔ)設(shè)施全面解耦
阿里巴巴集團核心系統(tǒng)通過云原生化,實現(xiàn)應(yīng)用基礎(chǔ)設(shè)施全面解耦,將有效解決此前存在的運維、研發(fā)效率及可遷移性、穩(wěn)定性風(fēng)險,這也是云原生帶來的技術(shù)賦能。像下圖所表示的,應(yīng)用的關(guān)注對象,從繁雜的基礎(chǔ)設(shè)施耦合組件,到只需要關(guān)于業(yè)務(wù)邏輯本身。
4. 應(yīng)用交付的標(biāo)準(zhǔn)化:OAM
今天應(yīng)用的交付仍然面臨挑戰(zhàn):目前云上進行應(yīng)用管理,需要面對的是差異性的云基礎(chǔ)設(shè)施能力和多樣化的運行環(huán)境, 需要分別對接和管理,如 SLB、日志、網(wǎng)絡(luò)環(huán)境、后端依賴等。
今年,阿里云和微軟云 Azure 聯(lián)合發(fā)布了一個全新的項目,叫做 Open Application Model OAM:開放應(yīng)用模型。是業(yè)界第一個云原生應(yīng)用標(biāo)準(zhǔn)定義與架構(gòu)模型。在這個模型下,應(yīng)用的開發(fā)人員、運維人員和支持 OAM 模型的平臺層,就可以通過一個標(biāo)準(zhǔn)的 OAM 應(yīng)用描述來進行協(xié)作。
通過上云,最大化的使阿里巴巴的業(yè)務(wù)使用云的技術(shù),通過技術(shù)架構(gòu)的演進使業(yè)務(wù)更好的聚焦于自身的發(fā)展而無須關(guān)于通用底層技術(shù),使業(yè)務(wù)研發(fā)效率提升,迭代速度更快是技術(shù)人的真正目標(biāo)。正如阿里巴巴集團上云項目的代號所說的,“云創(chuàng)未來”,通過技術(shù)創(chuàng)造新的價值和機會,通過技術(shù)創(chuàng)新帶來更好的未來。
“阿里巴巴云原生微信公眾號(ID:Alicloudnative)關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢、云原生大規(guī)模的落地實踐,做最懂云原生開發(fā)者的技術(shù)公眾號?!?/p>
總結(jié)
以上是生活随笔為你收集整理的把阿里巴巴的核心系统搬到云上,架构上的挑战与演进是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Knative Serverless 之
- 下一篇: 如何熟悉一个系统?(内含知识大图)