我們都知道,淘寶網的橫空出世是在2003年,也就是但年SARS流行的時候,當初淘寶用的是現在看來也是十分流行的LAMP架構,即Linux+Apache+MySql+Php,的一個非常常用的架構模型,當時淘寶已經使資料庫實現了讀寫分離,從資料庫都只能是支援唯讀操作,在主要資料庫上才能進行寫操作,同時,有了備份,也使得安全性也增加了。
隨著淘寶網的發展規模迅速,當初的那個小網站已經不足以支撐當時的情況了,第一步要改的就是換資料庫了,所以自然阿里巴巴的DBA團隊把MySQl換了Oracle了,Oracle資料庫的並發和和效能自然是比MySql好很多,還為此做了專門的資料庫連接池,同時淘寶的DBA們也對SQL進行了最佳化。但是當時還是出現了問題,有的時候會出現死結。
過了一年,也就是04年,淘寶網面臨著一個巨大的變革,之前存在的問題遲遲未能解決,所以淘寶的技術人員準備更換開發語言了,Java是當時比較流行的開發語言,當然在現在也是非常流行,而且是當時世界上大規模網站普遍採用的語言。但是要把好端端的語言完全的更換成另一種語言,難度可想而知,但是阿里巴巴比較牛逼,請了sun公司的人來改造,顯然他們更懂Java,他們先保留原來的功能模組,然後逐步遷移,最後完成所有的改造。當時的阿里巴巴打造了一個自己用的mvc的WebX,頁面支援JSP ,持久層支援ibatis和hibernate,控制層可以用EJB和Spring,,Sun的這幫工程師我們改造完了淘寶網之後,用同樣的架構做了同樣在後來很出名的網站,叫做“支付寶”。
一台資料庫的處理能力是有限的,淘寶的做法,把使用者的資訊按照ID存放到了2個資料庫中,DB1,DB2,除了分庫,分表,還是什麼辦法能提升系統的效能呢,1個是緩衝,1個是CDN加速。CDN這個工作比較獨立,當時淘寶的人專門搭建了自己的CDN網路,他們一開用的是商用CDN,ChinaCache。在這個穩定的版本下,淘寶網的業務有了突飛猛進的發展。
隨著淘寶的資料量越來越大,成本也隨之越來越來高,而且未來淘寶的資料一定還會呈現爆炸信的增長的,自此,開始了淘寶網自己研發的技術之路,當時的目標就是為了儲存一些相關的圖片,當時的Google,公布了GFS的設計論文,這給阿里巴巴的技術人員帶來了很多思路,後來,淘寶的檔案儲存體系統上線運營,取名TFS,這和後來的騰訊的檔案系統一樣的名字,都叫做TFS,TFS系統參照了GFS做了大量的修改,叢集由一對NameSever結點和多台DataServer構成,每個DataServer運行在一個普通的Linux機上。與TFS檔案系統一起出來的還有一個淘寶KV-緩衝系統,Tair.Tair 作為一個分布式系統,由一個中心控制結點,和一系列的服務結點,Data Server對外提供各種資料服務,並以心跳的形式,將自身的狀況報告給Config Server
到了06年,淘寶又經曆了服務模組化的過程,對系統進行拆分的好處顯而易見,拆分之後的系統需要2種中介軟體系統,1種是即時的調用的中介軟體,高效能,HSF,高效能服務架構,另一種是非同步訊息的中介軟體,Notify,一筆交易的發生會導致10幾次的通知。
阿里巴巴的技術團隊在後來還增加了專門管理Session的叢集服務,用以保留使用者狀態,後來也用了大資料比較流行的Hadoop平台。最近幾年淘寶已經在使用自己研發的Oceanbase資料庫,這個資料庫結合了傳統RDBMS和Nosql的一些優點,由於,單獨的適用於淘寶網當前的一個狀況。不過現在都已經開源了,大家可以學習學習其中的設計思想。
好了,淘寶的技術演變就說到這裡了,都是網上的和書上看到的拼湊在一起的,不得不佩服阿里的技術的大牛們,做出了這麼龐大的系統。