天天看點

大型網際網路架構演變曆程-《淘寶技術這10年》

1.  淘寶技術這10年

1.1.  淘寶現狀

高并發已經成為目前網際網路企業面臨的巨大挑戰!例如2015年“雙十一”全球狂歡節正式落下帷幕,天貓最終交易額也達到了創紀錄的912.17億元!參與交易國家和地區達到232個,雙十一支付寶最高峰每秒處理的交易筆數是8.59萬筆,線上人數峰值達到4500萬。

淘寶的核心技術(國内乃至國際的Top,這還是2011年的資料)

l  擁有全國最大的分布式Hadoop叢集(雲梯,2000左右節點,24000核CPU,48000GB記憶體,40PB存儲容量)

l  全國分布80+CDN節點,能夠自動找尋最近的節點提供服務,支援流量超過800Gbps

l  不遜于百度的搜尋引擎,對數十億商品進行搜尋,全球最大的電商平台

l  頂尖的負載均衡系統,頂尖的分布式系統,頂尖的網際網路思想,功能多樣運作極其穩定

l  豐富的生态産業以及先進的資料挖掘技術

l  ……很多很多

1.2.  淘寶技術演變,摘自《淘寶技術這十年》

l  馬總在2003年4月7日秘密叫來阿裡巴巴的十位員工,來到杭州一個隐秘的毛坯房,要求他們在一個月左右的時間内做出一個C2C網站。結果當然還是直接買的快,一個基于LAMP架構的網站,原名是PHPAuction,老美開發的一個拍賣網站。當然必須要做修改才能用。

l  2003年底,淘寶注冊使用者23萬,PV 31萬/day,半年成交額3371萬

l  很顯然MySQL無法撐得起如此大的通路量,資料庫瓶頸出現了。幸好阿裡的DBA隊伍足夠強大,他們使用Oracle替代了MySQL。Oracle那時就已經有了強大的并發性通路設計——連接配接池,從連接配接池取連接配接的耗費比單獨建立連接配接少很多。但是PHP當時并沒有官方提供支援語言連接配接池特性,于是多隆前輩用Google(不會是Baidu)搜到了一個開源的SQL Relay,于是資料庫軟體方面的瓶頸暫時解決了。

l  随之而來的是面臨硬體性能瓶頸,阿裡買了EMC的SAN儲存設備,加上Oracle高性能RAC,硬體容量也暫時沒問題了。

l  因為SQL Relay的問題實在過于嚴重,2004年于是淘寶終于做出了跨時代的決策——使用Java重寫網站。

l  淘寶請了Sun的進階工程師來幫忙做Java架構。那麼他們是如何做到修改程式設計語言而不改變網站使用呢——子產品化替換,今天寫好了A子產品,另開一個新域名,将連接配接指向該子產品,同時别的子產品不變,等到全部子產品完成的時候,原域名放棄。Sun公司堅持使用EJB作為控制層,加上使用iBatis作為持久層,一個可擴充且高效的Java EE應用誕生了。

l  送走Sun的大牛們之後,阿裡的資料存儲又遇到了瓶頸,于是忍痛買了一台IBM小型機,也就有了IOE(IBM + Oracle + EMC)這樣的傳說

l  2004年底,淘寶注冊使用者400萬,PV 4000萬/day,全網成交額10個億。

l  2005年Spring誕生了,早聞Spring架構在Web應用不可或缺,而在淘寶網,Spring也達到了Rod Johnson設計它的目的——替代EJB。

l  2005年底,淘寶注冊使用者1390萬,PV 8931萬/day,商品數目1663萬個。

l  考慮到未來的發展,這樣的設施架構隻是勉強可以應付現在的要求。于是,CDN技術派上用場了,一開始使用商用的ChinaCache,後來使用章文嵩博士搭建低耗能CDN網絡,淘寶網的性能越來越好了。

l  2006年底,淘寶注冊使用者3000萬,PV 15000萬/day,商品數目5000萬,全網成交額169億元。

l  淘寶在2007年之前,使用NetApp的商用存儲系統,但是仍然不夠應付迅速增長的趨勢。同年Google公布了GFS的設計思想,參照它的思想,淘寶也開發了自己的檔案系統——TFS每個使用者在TFS上擁有1GB的圖檔存儲空間,這些都得益于TFS叢集的檔案存儲系統以及大量的圖檔伺服器。淘寶使用實時生成縮率圖,全局負載均衡以及一級和二級緩存來保證圖檔的通路優化與高效通路。

l  淘寶的伺服器軟體使用Tengine,一個被優化過的nginx子產品。

l  淘寶分離出了UIC(UserInformation Center),供所有子產品調用。多隆前輩再次為其編寫出了TDBM,完全是基于記憶體的資料緩存(參考了memcached)。再然後,淘寶将TBstore和TDBM合并,寫出了Tair,一個基于Key-Value的分布式緩存資料系統。然後更新了自己的iSearch系統。

l  2007年底,淘寶注冊使用者5000萬,PV 25000萬/day,商品數目1個億,全網成交額433億元。

l  ...

l  Dubbo是阿裡巴巴内部的SOA服務化治理方案的核心架構,每天為2000+ 個服務提供3,000,000,000+ 次通路量支援,并被廣泛應用于阿裡巴巴集團的各成員站點。Dubbo自2011年開源後,已被許多非阿裡系公司使用。

2.  技術發展曆程總結

2.1.  單節點架構

2.2.  叢集架構

2.3.  叢集+分布式架構