淘宝网的架构演化分析
2012年11月30日,淘寶(包括天貓)的當年交易額突破1萬億,這是一個可以鄙睨亞馬遜和eBay的數(shù)字。而就在此前不久的2012年11月11日,淘寶更是創(chuàng)造了全球電子商務(wù)的奇跡,當天
- 總交易額:191億人民幣
- 零點的第一分鐘,1000萬獨立用戶涌入www.tmall.con
- 全天訪問用戶總數(shù)達2億1千3百萬,占中國網(wǎng)民總數(shù)的40%
- 總成交訂單數(shù):1億零5百萬
- 高峰期,每分鐘成交訂單89678筆
所有這些絢麗的業(yè)務(wù)數(shù)字背后是淘寶多年積淀的電子商務(wù)網(wǎng)站架構(gòu)技術(shù)。
淘寶網(wǎng)的業(yè)務(wù)發(fā)展歷程
淘寶的技術(shù)是和淘寶的業(yè)務(wù)一起發(fā)展起來的,沒有飛速發(fā)展的淘寶業(yè)務(wù),就不會有今天讓技術(shù)界艷羨的淘寶技術(shù),可以說,是業(yè)務(wù)驅(qū)動著技術(shù)不得不往前走。而淘寶的業(yè)務(wù)也經(jīng)歷了由簡單到復(fù)雜,由初級到高級的發(fā)展歷程,通過淘寶首頁的變遷,我們可以看出淘寶業(yè)務(wù)逐步發(fā)展的脈絡(luò)。
2003年,在馬云家里,用一個買來的C2C交易軟件稍作修改就成了最初的淘寶網(wǎng),簡約也簡單,如圖所示。
2004年,淘寶業(yè)務(wù)由模仿eBay的拍賣交易,開始向一口價交易轉(zhuǎn)型,也就是現(xiàn)在淘寶購物的主要交易模式,這一年,淘寶的架構(gòu)也經(jīng)歷了一次重大重構(gòu),PHP換成了Java,MySQL換成了 Oracle。那時,淘寶網(wǎng)首頁雖然依舊簡單,但是對于電子商務(wù)網(wǎng)站最重要的部分——商品類目開始建立并成為重要的商品導(dǎo)航方式,如圖所示。
此后數(shù)年間,淘寶逐步成為網(wǎng)購的代名詞,引領(lǐng)中國電子商務(wù)的步伐,每年一度的“雙十一”促銷成為有中國特色的購物狂歡節(jié)。
淘寶網(wǎng)技術(shù)架構(gòu)演化
2003年,花3000美金買來的淘寶網(wǎng)站是用PHP開發(fā)的,淘寶的工程師做了簡單的漢化處理,并對數(shù)據(jù)庫做了讀寫分離,最早的淘寶網(wǎng)架構(gòu)如圖所示。
像我們見過的絕大多數(shù)中小網(wǎng)站一樣,當年的淘寶網(wǎng)使用典型的 Linux+Apache+MySQL+PHP(LAMP)架構(gòu)。作為一個剛剛起步的小網(wǎng)站,使用開源、免費、簡單的技術(shù)產(chǎn)品搭建網(wǎng)站是明智之舉,可謂一舉多得:免費的技術(shù)降低網(wǎng)站的成本,成熟的開源技術(shù)可以從開源社區(qū)獲取文檔和技術(shù)支持;網(wǎng)站發(fā)展初期,業(yè)務(wù)不明確,需求變化多,簡單的技術(shù)方案可以快速響應(yīng)需求變化;簡單的技術(shù)也可以讓工程師快速上手,縮短學(xué)習(xí)周期;退一步,如果業(yè)務(wù)發(fā)展不順利,及時關(guān)閉網(wǎng)站止損,亦可減少沉沒成本促使管理層和投資者快速決策。
2003年淘寶網(wǎng)架構(gòu)(圖)
幸而淘寶業(yè)務(wù)蒸蒸日上,逐步蠶食eBay在中國的市場。隨著業(yè)務(wù)的快速發(fā)展,電子商務(wù)網(wǎng)站特有的業(yè)務(wù)復(fù)雜性和PHP易開發(fā)、難維護的特性產(chǎn)生了難以調(diào)和的沖突;不斷擴展的業(yè)務(wù)讓工程師承受著沉重的負擔;不斷增加的用戶和商品數(shù)又讓系統(tǒng)特別是存儲系統(tǒng)不堪重負。總之,架構(gòu)重構(gòu)勢在必行。2004年,淘寶在SUN技術(shù)顧問的協(xié)助下進行了一次重要的重構(gòu),放棄了原來的LAMP架構(gòu),轉(zhuǎn)而使用Java作為開發(fā)平臺,使用 Oracle做后端數(shù)據(jù)庫,如圖所示。
系統(tǒng)架構(gòu)使用了當時在企業(yè)應(yīng)用領(lǐng)域嶄露頭角的MVC框架和ORM框架,分別解決視圖與業(yè)務(wù)邏輯分離的問題和對象與關(guān)系數(shù)據(jù)庫解耦的問題,淘寶沒有使用當時風頭正勁的 Struts和 Hibernate,而是選擇了自己開發(fā)MVC框架Webx,而ORM框架則選擇了IBatis。
2004年淘寶網(wǎng)架構(gòu)(圖)
當時淘寶還開發(fā)了另一個重要產(chǎn)品Anx,這個針對Java平臺的、擴展自Ant的項目構(gòu)建工具對于網(wǎng)站項目開發(fā)、測試、發(fā)布至關(guān)重要,一個非常重要的功能就是管理配置項。對于一個Java開發(fā)的大型Web系統(tǒng),內(nèi)部通常會包含數(shù)百個jar文件,每個jar文件都是一個獨立的模塊,這些模塊由不同團隊開發(fā),實現(xiàn)不同功能,最后組成一個完整的系統(tǒng)。這些模塊通常也都有自己的配置文件,比如數(shù)據(jù)庫連接模塊需要配置數(shù)據(jù)庫URL連接池大小等,這些配置參數(shù)在開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境各不相同。Antκ提供了一個靈活管理這些分散配置項的解決方案。
應(yīng)用服務(wù)器使用 Weblogic,數(shù)據(jù)庫使用 Oracle,這些產(chǎn)品都需要昂貴的授權(quán)使用費。而 Oracle又需要部署在昂貴的IBM小型機和同樣昂貴的EMC存儲設(shè)備上。淘寶這時候棄免費而選擇付費產(chǎn)品,和建站初選擇免費一樣,同樣是明智之舉:業(yè)務(wù)快速發(fā)展,寶貴的開發(fā)資源應(yīng)該投入到新業(yè)務(wù)開發(fā)上,而不是解決這些可以用付費產(chǎn)品搞定的基礎(chǔ)技術(shù)問題上;成熟的付費產(chǎn)品和售后支持令業(yè)務(wù)和市場沒有后顧之憂,可以全力以赴地拓展市場;對于一個快速發(fā)展的網(wǎng)站,特別是電子商務(wù)網(wǎng)站而言,嚴重宕機、重要用戶數(shù)據(jù)丟失可能會極大地打擊消費者信心,令網(wǎng)站發(fā)展平生波瀾,而這些業(yè)界領(lǐng)先的產(chǎn)品經(jīng)過多年的洗練,有較強的可用性保證。
此后三四年間,淘寶在 Oracle、EMC、IBM的護航下,高歌猛進,業(yè)務(wù)蒸蒸日上,技術(shù)也逐漸成長,基于自身需求,逐步摸索適合自己的技術(shù)發(fā)展之路,如圖所示。
2006年淘寶網(wǎng)架構(gòu)(圖)
放棄EJB,引入 Spring,用免費的 JBoss替代收費的 Weblogic,因為 Weblogic并非物有所值,EJB對于網(wǎng)站來說也太過笨重。淘寶后來甚至用更輕量級的Jey替代了 JBoss,對淘寶而言,應(yīng)用服務(wù)器只需要一個 Servlet容器,越簡單越快越好。在合適的場景下使用合適的產(chǎn)品,而不是最好的產(chǎn)品,所謂小腳穿大鞋,不但跑不快,還可能會摔跤。
直到這時,淘寶架構(gòu)和技術(shù)依然是泯然于眾的中庸水平而已,沒有拖業(yè)務(wù)的后腿,使用業(yè)界成熟的方案和可靠的技術(shù),沒有什么可指責的也沒有什么可炫耀的。但也就是在這個時候,淘寶技術(shù)開始發(fā)力,許多奠定淘寶堅實架構(gòu)基礎(chǔ)的產(chǎn)品和技術(shù)從這個時候開始逐步醞釀,走向成熟。目前這些產(chǎn)品多數(shù)都已開源,如表所示。
| Tair | 分布式 Key/value存儲引擎,分為持久化和非持久化兩種使用方式 |
| TFS | 分布式文件系統(tǒng),適用于海量小文件存儲 |
| Ocean Base | 分布式數(shù)據(jù)庫系統(tǒng),支持千億級別的讀寫事務(wù) |
| TDDL | 對應(yīng)用透明的分庫分表層和具有眾多特性的動態(tài)數(shù)據(jù)源 |
隨著淘寶技術(shù)的不斷發(fā)展壯大,淘寶對集群環(huán)境下分布式高可用系統(tǒng)的架構(gòu)設(shè)計技術(shù)越來越得心應(yīng)手, Oracle、IBM、EMC也變得不是必須,于是淘寶開始逐步放棄使用這些昂貴的設(shè)備和軟件,回歸到開源的 MySQL及 NOSQL系統(tǒng),正如淘寶2003年建站之初的選擇。這也再一次驗證了辯證法關(guān)于事物發(fā)展的否定之否定及螺旋式上升的普遍規(guī)律,仿佛回到原點,但一切已經(jīng)完全不同了。
感觸
如果說有什么神奇的力量促使淘寶技術(shù)脫胎換骨,化蛹成蝶,站在中國互聯(lián)網(wǎng)軟件開發(fā)技術(shù)之巔華山論劍的話,筆者認為最重要甚至唯一的驅(qū)動力就是:不得已。隨著業(yè)務(wù)的飛速發(fā)展,用戶、數(shù)據(jù)、流量、業(yè)務(wù)復(fù)雜度都呈指數(shù)級增長,飛速接近甚至突破 Oracle、IBM這些企業(yè)提供的解決方案的有效范圍,在開源領(lǐng)域雖有 Google、 Yahoo等先驅(qū)在探索道路,并有一些開源產(chǎn)品,但是在大規(guī)模集群實踐上,大家都在摸索,淘寶必須走自己的路,路上也許有燭光照明,但是沒有人指路。而有些路,走過以后,再回頭,一覽眾山小!
總結(jié)
以上是生活随笔為你收集整理的淘宝网的架构演化分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript --- 跨浏览器
- 下一篇: css加了固定定位就不显示内容_前端开发