淘寶網,是一個在線商品數量突破一億,日均成交額超過兩億元人民幣,註冊用戶接近八千萬的大型
電子商務網站,是亞洲最大的購物網站。那麼對於淘寶網這樣大規模的一個網站,我猜想大家一定會非常關心整個網站都採用了什麼樣的技術、產品和架構,也會很想了解在淘寶網中是否採用了開源的軟體或者是完全採用的商業軟體。那麼下面我就簡單的介紹一下淘寶網中應用的開源軟體。
對於規模稍大的網站來說,其IT必然是一個
伺服器集群來提供網站服務,資料庫也必然要和應用服務分開,有單獨的資料庫伺服器。對於像淘寶網這樣規模的網站而言,就是應用也分成很多組。那麼下面,我就從應用伺服器作業系統、應用伺服器軟體、Web Server、資料庫、開發框架等幾個方面來介紹一下淘寶網中開源軟體的應用。
作業系統
我們首先就從應用伺服器的作業系統說起。一個應用伺服器,從軟體的角度來說他的最底層首先是作業系統。要先選擇作業系統,然後才是作業系統基礎上的
應用軟體。在淘寶網,我們的應用伺服器上採用的是Linux作業系統。Linux作業系統從1991年第一次正式被公布到現在已¾¬走過了十七個年頭,在PC Server上有廣泛的應用。硬體上我們選擇PC Server而不是
小型機,那麼Server的作業系統供我們選擇的一般也就是Linux,FreeBSD, windows 2000 Server或者Windows Server 2003。如果不準備採用微軟的一系列產品構建應用,並且有能力維護Linux或者FreeBSD,再加上成本的考慮,那麼還是應該在Linux和FreeBSD之間進行選擇。可以說,現在Linux和FreeBSD這兩個系統難分伯仲,很難說哪個一定比另外一個要優秀很多、能夠全面的超越對手,應該是各有所長。那麼在選擇的時候有一個因素就是企業的技術人員對於哪種系統更加的熟悉,這個熟悉一方面是系統管理方面,另外一方面是對於內核的熟悉,對內核的熟悉對於性能調優和對作業系統進行定製剪裁會有很大的幫助。而應用全面的優化、提升性能也是從作業系統的優化開始的。
應用伺服器
在確定了伺服器的硬體、伺服器的作業系統之後,下面我們來說說業務系統的構建。淘寶網有很多業務系統應用是基於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軟體,應用伺服器軟體,資料庫軟體外,我們還會涉及到一些其他的系統,比如一些中間件系統、文件存儲系統、搜索、分布式框架、緩存系統等等。在淘寶網,這些系統都是自主開發的,沒有採用目前商業的或者開源的產品。有些系統,會存在著一些開源的產品或者商業產品。但是,考慮到淘寶網自己的需求和大並發量的壓力,這些系統都選擇了自主開發。