解密淘寶網的開源架構

淘寶網,是一個在線商品數量突破一億,日均成交額超過兩億元人民幣,註冊用戶接近八千萬的大型電子商務網站,是亞洲最大的購物網站。那麼對於淘寶網這樣大規模的一個網站,我猜測你們必定會很是關心整個網站都採用了什麼樣的技術、產品和架構,也會很想了解在淘寶網中是否採用了開源的軟件或者是徹底採用的商業軟件。那麼下面我就簡單的介紹一下淘寶網中應用的開源軟件。前端

對於規模稍大的網站來講,其IT必然是一個服務器集羣來提供網站服務,數據庫也必然要和應用服務分開,有單獨的數據庫服務器。對於像淘寶網這樣規模的網站而言,就是應用也分紅不少組。那麼下面,我就從應用服務器操做系統、應用服務器軟件、Web Server、數據庫、開發框架等幾個方面來介紹一下淘寶網中開源軟件的應用。web

 

操做系統spring

咱們首先就從應用服務器的操做系統提及。一個應用服務器,從軟件的角度來講他的最底層首先是操做系統。要先選擇操做系統,而後纔是操做系統基礎上的應用軟件。在淘寶網,咱們的應用服務器上採用的是Linux操做系統。Linux操做系統從1991年第一次正式被公佈到如今已¾¬走過了十七個年頭,在PC Server上有普遍的應用。硬件上咱們選擇PC Server而不是小型機,那麼Server的操做系統供咱們選擇的通常也就是Linux,FreeBSD, windows 2000 Server或者Windows Server 2003。若是不許備採用微軟的一系列產品構建應用,而且有能力維護Linux或者FreeBSD,再加上成本的考慮,那麼仍是應該在Linux和 FreeBSD之間進行選擇。能夠說,如今Linux和FreeBSD這兩個系統難分伯仲,很難說哪一個必定比另一個要優秀不少、可以全面的超越對手,應該是各有所長。那麼在選擇的時候有一個因素就是企業的技術人員對於哪一種系統更加的熟悉,這個熟悉一方面是系統管理方面,另一方面是對於內核的熟悉,對內核的熟悉對於性能調優和對操做系統進行定製剪裁會有很大的幫助。而應用全面的優化、提高性能也是從操做系統的優化開始的。數據庫

 

應用服務器windows

在肯定了服務器的硬件、服務器的操做系統以後,下面咱們來講說業務系統的構建。淘寶網有不少業務系統應用是基於JEE規範的系統。還有一些是C C++構建的應用或者是Java構建的Standalone的應用。那麼咱們要選擇一款實現了JEE規範的應用服務器。咱們的選擇是JBoss Applcation Server。JBoss AS是RedHat的一個開源的支持JEE規範的應用服務器。在幾年前,若是採用Java技術構建互聯網應用或者企業級應用,在開源軟件中的選擇通常也就是Apache組織的Tomcat、JBoss的 JBoss AS和Resin。嚴格意義上講,Tomcat和Resin並不能算是一個應用服務器,他們是實現了部分J2EE規範的一個容器。而商業軟件的選擇就是 IBM的WebSphere和BEA的WebLogic。到了如今,除了JBoss AS外,Apache的Geronimo,Sun的Glassfish也都是很優秀的JEE應用服務器。也給如今的開發人員提供了更多的選擇。具體對於目前JEE應用服務器的比較。這邊就不在贅述。緩存

在應用服務器前端,咱們採用了Web Server作了一次轉發,咱們選擇的Web服務器是大名鼎鼎的Apache。幾年前,Apache幾乎是Linux系統上開源Web Server的惟一選擇。那個時候雖然也有一些其餘的開源的Web Server,可是從功能和穩定性上來講都沒法和Apache相對。在今天來講,Lighty也會是一個很是好的選擇。Lighty是一個很是輕量級、佔用內存資源也比較少的Web Server。雖然功能上沒有Apache強大,可是在很多場景下,性能是很是出色、強於Apache的。而微軟的IIS,就只能工做在Windows的系統上了。而且使用IIS的話,基本上也就是選擇了ISAPI、ASP或者ASP.NET進行Web應用的開發了。安全

 

數據庫服務器

說完了咱們採用的操做系統、應用服務器、WebServer後,下面就來談談咱們的數據庫。在淘寶網的應用中,採用了兩種關係型數據庫管理系統。一個是 Oracle公司的Oracle 10g,另一個是Sun MySQL的MySQL。Oracle是一款優秀的、普遍採用的商業數據庫管理軟件。有很強大的功能和安全性,能夠處理相對海量的數據。而MySQL是一款很是優秀的開源數據庫管理軟件,很是適合用多臺PC Server組成多點的存儲節點陣列(這裏我所指的不是MySQL自身提供的集羣功能),每單位的數據存儲成本也很是的低廉。用多臺PC Server安裝MySQL組成一個存儲節點陣列,經過MySQL自身的Replication或者應用自身的處理,能夠很好的保證容錯(容許部分節點失效),保證應用的健壯性和可靠性。能夠這麼說,在關係數據庫管理系統的選擇上,能夠考慮應用自己的狀況來決定。架構

一個互聯網應用,除了服務器的操做系統,Web Server軟件,應用服務器軟件,數據庫軟件外,咱們還會涉及到一些其餘的系統,好比一些中間件系統、文件存儲系統、搜索、分佈式框架、緩存系統等等。在淘寶網,這些系統都是自主開發的,沒有采用目前商業的或者開源的產品。有些系統,會存在着一些開源的產品或者商業產品。可是,考慮到淘寶網本身的需求和大併發量的壓力,這些系統都選擇了自主開發。併發

 

開發框架

前面談的都是系統級的產品,下面咱們說說開發框架的使用。可能有朋友想問,做爲一個如此大規模的網站,淘寶網的Web展示層採用的是什麼框架,是怎麼實現的呢?曾¾¬也有到淘寶的應聘者問過我這個問題,他問我說是否是用的struts。我告訴他說不是的。其實淘寶網的Web展示層的框架用的不是 struts,不是webwork,不是spring mvc等等。淘寶網的Web展示層的框架用的是集團內部自主開發的一套Web框架。這個框架可以解決一些其餘Web框架不能解決的、在淘寶的應用中又會出現並須要解決的問題。在淘寶的多個應用中,也採用了一些開源的框架,好比Spring、iBatis、jBPM、Hessian、Mina等等。這些開源軟件的採用爲咱們構建應用系統提供了很大的幫助。

採用開源軟件構建系統,我想有兩個很大的好處:

一個是下降成本。假設你有1000臺應用服務器,若是你每臺服務器上採用的不是JBoss AS或者其餘開源的軟件,而是使用商業的Oracle BEA的Weblogic或者IBM的WebSphere,那麼爲這1000臺機器的應用購買License的費用是很是高的。

另一個好處(我以爲最大的好處)是你能夠看到軟件的源碼,你能夠研究瞭解軟件內部的工做過程、原理。這對於應用設計、開發、查錯、優化都是很是有幫助的。

 

淘寶網的開源觀

對於開源軟件的應用,有些人可能擔憂質量的問題,有些人可能擔憂軟件自己發展更新的問題,等等。對於質量的問題,我想如今不少的開源軟件尤爲是一些很著名的開源軟件都有很完善的組織,有完善的開發、測試、發佈流程。在一個新版本完成前,會有屢次的測試版本發佈,最後纔是正式版。這和商業軟件是同樣的。而且由於代碼公開,反而更加的容易發現錯誤,提升質量。至於第二個問題,我想跟第一個問題同樣,關鍵是組織和規劃而不在是否開源,而且在不少著名的開源軟件背後,會有廠商在進行支持。軟件自己的發展應該是不會成爲問題的,不太會出現軟件忽然中止發展的狀況。

在從此的發展中,咱們仍是會一如既往的關注開源軟件的發展,也還會根據須要採用不一樣的開源軟件。在選擇一個開源產品的時候,我會考慮如下幾點:

1. 這個軟件目前的功能和它的RoadMap

2. 軟件自己的架構

3. 該軟件開發的活躍度

4. 該開源軟件是不是遵照該領域內的國際規範的

5. 在同類產品中,要挑選有比較優點的。而且要考慮可能存在的移植代價。這個移植指的是採用了這款開源軟件後現有系統的移植,或者是從這個開源軟件到其餘軟件的移植。

對於企業級系統、互聯網應用來講,採用開源軟件不只能夠下降成本,更重要的是可以真正瞭解軟件的內部工做機制。還能夠在如今的基礎上進行加強和定製,也可以從開源軟件中借鑑到不少好的設計和實現。但願國內能有更多的企業在使用開源軟件的同時,也能開源自身的一些軟件,或者可以成爲一些開源軟件的貢獻者。而做爲淘寶網,咱們也會很是積極的參與到開源的活動中,也會努力爲開源的發展作出咱們應有的貢獻。

相關文章
相關標籤/搜索