閱讀983 返回首頁    go 阿裏雲 go 技術社區[雲棲]


阿裏SRE體係如何支撐24小時峰值壓力、220+個國家“剁手黨”?

淘寶點亮了全中國,Aliexpress點亮了全球,在近百個國家的購物類app排名第一。但AE國際隻有1-2個物流,峰值壓力一度導致多個國家的銀行係統、物流係統癱瘓,可以想象,作為Aliexpress的SRE壓力多大。

究竟阿裏工程師是如何解決這一難題?今天我們通過AliExpress SRE負責人周誌偉的分享,揭開這個謎題。

image
阿裏巴巴高級技術專家、AliExpress SRE負責人周誌偉

Aliexpress是阿裏巴巴集團跨境及國際消費業務,國內大家都知道淘寶,但是走出國門,知道Aliexpress的外國人非常多了。AE在Alexa全球排名前50,淘寶排名11,可以想象Aliexpress的流量當前已經非常龐大。此外,AE在近百個國家的購物類app排名第一。如果有去俄羅斯的旅遊朋友可以問問當地出租車司機、餐館服務員、或者當地路人Aliexpress,相信大多都有在上麵購物的經曆。

目前Aliexpress有過成交記錄的國家覆蓋220+,大家都知道雙11,淘寶點亮了全中國,而Aliexpress點亮了全球。但AE國際隻有1-2個物流,峰值壓力一度導致多個國家的銀行係統、物流係統癱瘓,爆倉已經不僅僅隻有中國才會發生,可以想象,作為Aliexpress的SRE壓力多大。

image
AliExpress(全球速賣通)是阿裏巴巴旗下麵向全球市場打造的在線交易平台,被廣大賣家稱為“國際版淘寶”

Aliexpress SRE

SRE在Aliexpress的定義僅僅指與可用性相關,當它指一種技術方麵時,是指原來的穩定性的概念;當它用來指團隊時,是指各技術團隊負責穩定性的同學組成的虛擬團隊。在Aliexpress,SRE是由橫向的虛擬團隊組成,每個業務團隊一主一備保障整個Aliexpress的穩定性,隻有這樣才能最高效和最快速的發現問題根因和解決問題。穩定性是一切一切的基礎,所以這個虛擬組織也是得到了眾多的資源和KPI基礎保障。

阿裏國際化SRE的挑戰

時差讓每時每刻都是高峰期

在全球化的前提下,SRE的挑戰是非常巨大的,它的難題和挑戰並非淘寶所經曆過的,在這些方麵我們也並沒有太多的參考和借鑒。首先,Aliexpress的用戶群體分布來自全球238個國家,不同種族不同膚色。這不是最關鍵的,因為用戶分布不同國家和不同時區,對於Aliexpress來說其實沒有真正意義的低峰期,每個國家的高峰時間都不一樣,一波接著一波,對我們的產品可用性提出了更高的要求所有國家*7*24。


image

網絡複雜但容不得半點延遲

在中國,我們的網絡在三大運營商的扶持下可以說是非常不錯的,雖然偶爾有些抖動,起碼我們很清楚也比較容易獲得原因或者作出一些預案。但對於全球這麼多國家來說,運營商非常複雜,帶來的全球互聯互通問題也非常複雜,這麼多國家,花點精力知道每個國家哪家運營商好,應該不難,但是要把各個國家串起來,互聯互動這個問題就複雜了。

比如東南亞國家訪問中國服務器和美國服務器,哪個會更快?從物理距離看應該國內會更快對吧?但是實際並非如此,東南亞訪問國內,大部分都是繞行美國再連國內,這是多麼奇葩的網路鏈路,但事實如此,就因為運營商接入美國再到中國更加便宜比直接接入中國便宜。這給我們全球化增加很多困難,我們需要做更多的事情去解決這類難題。

也許大家會說繞就繞唄,就這麼用,可中國到美國來回耗時在130ms左右,還是在網絡非常好的情況下,接近光速的速度,這個延遲看起來不起眼,我們做個對比,一般服務請求數據庫基本在5~10ms左右會得到返回,如果有類似緩存機製就更快了,有多少服務能扛得住因為距離帶來的130ms延遲。這對網站穩定性又提出了技術的挑戰。國際形勢下想獲得用戶的信息反饋,並不像國內那麼容易,需要我們采取更多的手段去主動獲取。

Aliexpress SRE之路

在Aliexpress,我們要提升可用性,需要考慮成本以及研發效率,在剛開始組建SRE團隊的時候,沒有任何基礎,又想提升可用性,我們需要分析從何下手。這個圖有點像力學,一方使勁,會造成另一方的倒退,如何尋找平衡,獲得最高的回報率。

image


我們可以看到,可用性的追求是會降低研發效率的,可用性的追求是會增加研發和技術成本的,通過流程規範的建設是可以提升可用性的,但是會極大降低研發效率,通過工具化和智能化實現可用性,對效率提升有幫助,也對成本節省有幫助。

製定規範 提高可用性

Aliexpress的SRE初期,我們希望能快速的提升可用性,選擇了成本最低,也是最容易先拿到結果的方式,製定流程規範,但是他給研發效率會帶來降低,規範會有很多的製約,發布需要review,核心應用改一行代碼也需要多機房的觀察監控,整個過程耗時比較久。

其實規範現行,雖然很土,不夠酷,但非常見效,不得不說對於一線研發同學來說,規範不僅僅是對他的約束,通過穩定性規範的考試,讓一線研發知道非常多的流程細則以及為什麼需要這麼做,以及其中風險是什麼,更讓一線工程師對生產環境有更多的了解。devops的角色也得到很多認知上的提升,我們對曆史的故障也是做過分析的,會發現有很大比例的問題都是對於生產環境的陌生,不小心或者不知道該怎麼做而產生了問題。我們全球化多機房有很多地方需要注意,對線上的陌生一定會帶來問題,比如多機房數據同步,沒有做好任務消費的冪等性處理,一定會造成數據的一致性的問題,這是架構規約的一部分,也是SRE穩定性的範疇。此外,我們堅持每個半年會進行一次穩定性考試,讓大家對規約,線上環境有知識的迭代更新,對生產環境的操作時刻保持敬畏之心。

Aliexpress SRE基礎治理

對於SRE來說,最想做到的就是線上發生的一切都在掌控之中,即使出現問題,我們能通過有效的手段快速恢複,這也是Aliexpress SRE的核心。我們的治理也是從這條核心思想出發的,首先要做到這點,不可或缺的是對整個站點有全麵的監控,出現問題我們都能快速發現,那就是監控。監控建設是有成本投入的,需要業務係統追加日誌輸出,根據需要繪製出我們想要的核心大盤(交易、流量、登錄等待),如果有下跌,可以進入下一級分級是由哪些渠道造成的,幫助快速發現問題,同時我們也會追加分機房的大盤,這個後麵會描述為什麼需要這樣的分類,有何目的。


image


一開始做這個事情的時候並沒有那麼係統的來做,而是各個團隊分別輸出日誌,然後手工配置監控大盤,去年年初我們開始推廣微服務Springboot,結合Springboot定製一個starter專門做日誌的標準輸出,采集所需日誌的同時提升研發效率,標準化的日誌對於後續的大數據分析來說非常有利,這也是長遠考慮的一步,為日後智能化做的鋪墊。


image


前麵提到,對於SRE來說,希望自己有掌控權,監控的完善隻能做到可見,沒有掌控能力,所以我們還有幾件事情,讓SRE有掌控能力。快速恢複能力,俗稱“容災”,在Aliexpress容災是一個體係,分了很多層,應對不同問題而定,這也是全球化所需。

之所以這麼做,是有背景的,在前麵提到Aliexpress SRE麵臨的挑戰,全球網絡質量問題,對於Aliexpress來說是不會輕易去切換DNS,原因主要有2個:
1.全球化架構會針對用戶歸屬進行路由,接入層的改變並不會使其在後續鏈路發生變化2.DNS的切換會帶來性能損耗,更何況我們有很多cdn策略,切換回源帶來的性能損耗大概在8~15%,這個損失太心疼了

打造全球化架構

全球化架構,可以簡單的描述為我們通過管控全球的用戶,通過大數據的計算,配合DNS就近最優解析,將用戶分別歸屬到不同的區域IDC,讓全球用戶獲得最優的購物體驗。基於這套邏輯通過嚴格的版本控製利用ZK上報確保全球多個IDC的用戶路由表保持一致,接入層、服務層、數據層包括數據同步加載用戶路由表,進行區域的修正路由,確保歸屬用戶的操作都在一個區域完成,以達到全球數據一致性。這是一套完整的全球化解決方案。


image

基於這套架構,SRE的容災也變的更加豐富,當某個變更導致web層發生問題,比如英文站搜索頁麵出現問題也許是樣式也許是頁麵處理邏輯,基於我們的規範嚴格按照分機房發布策略,至少有一個機房是可用的,可以通過容災到沒有汙染的區域,而其他層的邏輯都不發生改變。

image

當服務層發生問題,同樣可以將用戶從A區域切換到B區域,而在網絡接入層不發生任何變化。這一層的容災更加細膩,支持分流觀察,按比例分流。當然發生重大問題,可以將整個區域failover,切換到災備區域這些容災都是秒級生效,並且有數據保護停寫機製。

建立保障機製GTR

前麵說到的都是基於機房級別的快速恢複,在全球化背景下,應對全球互聯互通問題,我們也做了一套保障機製,GTR(global traffic routing service)。

image

簡單介紹下這個圖的含義:紅點代表我們在全球有多個POP點,也就是網絡接入點,五角星代表我們全球的IDC,思路是我們采集全球用戶訪問我們機房的信息,比如某國用戶通過訪問不同的pop點然後到我們的IDC,POP點都會匯入阿裏骨幹網,可以認為更加穩定,類似動態加速技術。

通過國家對應pop點對應IDC的訪問響應時間來判斷,當一條線路發生問題時,我們可以將這個國家或者叫區域的用戶訪問切換到其他網絡線路,這個是某個國家訪問美國機房的數據,通過德國接入點進入美國機房和直接從美國接入美國機房的時間差不多。

以上是對SRE監控、容災的介紹,在此之外,我還是要分享下我們應對重大問題時,確保能快速定位恢複,這套應戰平台對於收集作戰人員經驗起了很好的作用。作戰成員都是各個產品線的專家,他們的經驗在平台得以沉澱也為我們國際SRE智能化有很大的幫助。


image


Aliexpress SRE成立以來成果也比較明顯,故障數明顯下降,一線研發對線上環境以及自己身為devops角色的轉型都比較成功,在這過程中,成功恢複多次重大線上故障,這也證實了我們平時的演練非常有效和重要。同時也為阿裏集團國際化構建基礎技術。

在SRE的體係運作下,朝著一個良性的循環運作,穩定性規範-分區域變更-分區域監控-分區域容災-常態化演練。持續的優化工具、沉澱數據、培養研發素養,為未來SRE智能化做好準備。在這個體係下,我們會持續優化和豐富我們的自動化工具,豐富我們數據,優化我們的基礎治理,往智能化的方向發展。謝謝大家。

Aliexpress誠邀有國際化背景的技術人員加入,直達郵箱:zhiwei.zhouzw@alibaba-inc.com

來源:阿裏技術
原文鏈接

最後更新:2017-09-19 10:32:50

  上一篇:go  阿裏雲前端周刊 - 第 25 期
  下一篇:go  國行 Xbox One 遭遇兩連擊