天天看點

【幹貨】阿裡研究員蔣江偉:雙十一背後的分布式技術

2016阿裡技術論壇于4月15日在清華大學舉辦,主旨是闡述阿裡對世界創新做出的貢獻。阿裡巴巴集團技術委員會主席王堅,阿裡巴巴集團首席技術官(CTO)張建鋒(花名:行癫),阿裡巴巴集團首席風險官(CRO)劉振飛(花名:振飛),螞蟻金服首席技術官(CTO)程立(花名:魯肅)以及來自阿裡巴巴集團各部門多位技術大咖齊聚一堂,與莘莘學子分享阿裡的技術夢想。

【幹貨】阿裡研究員蔣江偉:雙十一背後的分布式技術

在下午的《電商技術:零到三萬億,從未停止的技術創新》分論壇上,阿裡巴巴研究員蔣江偉(花名:小邪)發表了題為《零點之戰,雙十一背後的分布式技術》的演講。

以下為演講實錄:

我的分享有兩個部分,一是阿裡技術部的發展過程,二是跟“雙十一”技術相關的情況。

2008年,當時淘寶跟淘寶商城的體系是分開的,包括商品、交易、營銷以及店鋪等。那時候我們在維護一個龐大的系統,代碼以及各種各樣的問題嚴重制約了整個技術的發展。在這個背景情況下,我們做了分布式化的改造。

【幹貨】阿裡研究員蔣江偉:雙十一背後的分布式技術

這對于技術有非常明顯的幫助。舉個例子,我們資料庫,小到做變更,大到資料庫重新選型,都可以做到比較透明。如果沒有抽離出共享服務層,那這個事情的變更是難以想象的,現在我們在基礎技術上去做大量的創新工作,但是上層的業務系統根本不需要去修改任何的代碼。是以一個是技術上面的創新,一個是業務上面效率帶來了非常正向的變化。

整個架構就變化了。原來是一個應用,它從應用到資料做完之後就變成這樣了(如圖),這個隻是0.1版本,是用來教學用的。但是到現在已經沒有辦法學了,已經超過幾千個系統,已經畫不下的這麼一個場景。

【幹貨】阿裡研究員蔣江偉:雙十一背後的分布式技術

那麼做一個比較大的分布式的架構需要哪些技術?第一個阿裡巴巴,還要下APS,還要下篩選,還有服務架構,還有做資料的治理,另外還有我們的應用軟體,還有我們的開發架構,最下面可能就是一個存儲,非常重要的就是存儲,很多的資料都是加入到了緩和裡面。比如現在通路淘寶,經常被通路的會員的資料和商品的資料都是放在緩存的。還有檔案系統,這些圖檔存在在系統裡面,這個規模也是非常大,在全國也是非常大的一個檔案系統。還有阿裡的關系資料庫,我們通過TDDL對資料做了分庫分表,還有我們利用消息中間件解決異步流程,解決資料最終一緻性的問題。通過這7個中間件的産品,構成了整個阿裡技術體系的分布式架構。使得我們的工程師在開發我們系統的時候,開發一個單機版的程式一樣簡單。

【幹貨】阿裡研究員蔣江偉:雙十一背後的分布式技術

剛才講到的是分布式技術上的呈現,其實使用了分布式技術之後,直接帶來的影響就是讓我們整個擴充性得到了非常大的提升,同時,從原來的商用的體系裡面變成了分布式體系之後,成本下降也非常明顯。

哪些技術在“雙十一”誕生的?“雙十一”它是一個對于工程師來說,就像是面臨聯考,在座的可能就考過一次聯考,我們工程師每年都要做聯考,考砸了跟各位是一樣的,都是非常嚴重。

總共7年的“雙十一”下來,沒有出過大的問題。差不多2年的時間整個技術體系有一些沉澱。2009年—2010年,還是懵懵懂懂的過程,基本沒有出現什麼問題,工程師都沒有特别的感覺。

但是也有一些小問題,我了解到當時最大的問題就是圖檔,圖檔由于CDN的容量到了,我們做了一件事情就是把淘寶上部分商品的最後一些圖檔不做顯示。第二個事情,因為剛才前面講到2008年中後期做了改造之後,整個系統全部分布式之後,系統的規模速度增加,一個是系統的數量增加,導緻了整個系統的邏輯,或者說整個依賴關系已經沒法用工程師的視角歸置和梳理出來, 做了一個工具用來治理系統之間依賴的關系,流量,強弱。

2011年、2012年的時候192億、370幾億,這個時候對整個交易系統的挑戰非常大了。是以主要是做了整個擴容,整個容量擴大的非常快。在這之前,我們講“雙十一”最大的挑戰有兩個。第一個是怎麼評估容量,系統能支撐多少容量,這個容量的評估那時候開始做了。第二個,一代治理,容量規劃,就是說做了這些事情,其實表現得并不好,在2011年、2012年的時候前面30分鐘還是出現了不少問題,突然間購物車商品被删除掉了,或者說下單的時候紅包沒有用,各種各樣的問題。出現這些問題之後,引進了下一代技術,比如說我們做了自動化資料訂正系統。

2013年、2014年有了一個先進的技術,剛才我們在視訊有提到,在“雙十一”之前都是在做這個事情,它是一個容量規劃的新的高度。原來我們在之前做容量評估的時候,我們評估每個系統的容量怎麼評估呢?通過引流,目前使用者,我們把使用者的流量集中在一個上面,看一下應用,當你流量不斷上漲的時候你的表現情況是什麼樣的,我們的CPU,還有我們的記憶體等等。當它出現拐點的時候,我們把這些值給記錄下來,這樣的話就知道系統的容量。這種辦法非常準确,但是有一個問題,因為你系統的量非常大,即使參與整個“雙十一”的系統,我預估,因為我搞不清楚到底有多少,預估有幾百個系統,直接參與“雙十一”交易,就是航天飛機的零件,如果一個零件發生問題,整個就會毀掉。

在“雙十一”之前我們做了這麼一個事情,它是按照正完全真實的場景,全部動用現在的伺服器,然後去模拟“雙十一”當天可能會産生的使用者行為,系統、伺服器,還有真實的邏輯去做壓測。與原來的壓測方式相比它有幾個比較好的地方,第一個原來的方式是真實的流量,但是實際情況是促銷的時候,“雙十一”大促的時候,它的流量跟平時的模型是不一樣的,平時的路徑我們是通過搜尋或者翻頁,“雙十一”肯定不是這樣的,“雙十一”肯定就是所有的東西都加到購物車裡面了,這個時候我很少再去做搜尋或者再去下單,甚至有一些借助浏覽器工具怎麼樣更快的搶到一些東西,模型是不一樣的,但是我們需要模拟出當時的場景。總結一下我們需要這樣一個技術:第一是做了一些根據業務場景做模拟的能力,第二個它能夠産生巨大的流量,這個巨大的流量能夠把我們整個叢集,超過幾十萬台的流量全部壓滿,然後我們給那個伺服器加上新的伺服器,然後我們再來做,把所有伺服器的流量拉平。

還有一個事情我們做了BCP防資損對賬,這個産品做完之,如果出現問題會被秒級發現。剛開始做BCP的時候,我自己覺得意義不是非常大,因為我覺得如果是所有的代碼是工程師寫的,我認為隻要經過測試上線的系統,邏輯肯定是不會出問題。感覺意義不是非常大,但是沒有拒絕做這件事情。 後來做出來之後發現這個事情還是非常有意義,原因是什麼?我們系統出現異常的流程會導緻我們的資料出現異常。比如說我講“雙十一”的時候,突然因為我的優惠券沒有使用,這時候就會發現,是以在2013年2014年的時候,整個交易額到了570幾億,但是整個表現已經非常好了,就是這個表現跟我們行業内的其他公司不一樣,無論從資料上,體驗流暢上面都要遠遠超于同行。

2015年的時候,我們達到了912億的交易額,整個體驗也是非常不錯,但是我們遇到了新的挑戰,為了支撐這912億之後我們大量的計算,但是過了這一天之後,本來非常繁忙的變成非常空閑,這個成本浪費是非常大的。不過不用擔心,因為利用阿裡雲計算,是以可以非常好的解決彈性的問題。

【幹貨】阿裡研究員蔣江偉:雙十一背後的分布式技術

後面介紹一個整個阿裡的文化。我們是開源項目最多的,比如說2015年開源了65個項目,還有高含量的項目18個,還有一些在國内都是非常知名的一些開源項目,這些項目都是由阿裡巴巴的工程師,可能是在工作中的一些沉澱,或者說業餘的時間來貢獻力量。在阿裡直接參與開源操作有300多人,這是開源的文化。