《天下網商·經理人》十月刊開始將連載系列文章《淘寶網的技術發展史》,為讀者描述淘寶網在整個發展過程中,所有的主動和被動的技術變革的前因后果。
文/淘寶技術大學培訓專家 子柳??
前言
11月11日,這個棍子最多的日子被網民自我調侃變成了一個節日——“光棍節”。而淘寶網又用瘋狂的折扣促銷給它賦予了另外一個意義——“購物狂歡節”。2011年11月11日這一天,淘寶商城(現天貓商城)與淘寶網交易額之和突破52億元,這個數字是“購物天堂”香港一天零售總額8.5億元的6倍。
網民感受到的是瘋搶的喜悅,而網站的技術人員感受到的卻是“壓力山大”。就如同你家辦酒席,宴請左鄰右舍,這個辦起來容易。倘若宴請十里八鄉所有的人,吃飯的人自然開心,但卻不是一般人家能夠辦得起來的。能辦得起來如此盛宴者,需要強大的財力物力、組織能力、技術實力,例如做這么多菜,你的炒鍋一定要是“分布式的”、“可復制的”、“可擴展的”,洗菜切菜要有“工作流引擎”,上菜的路徑要用圖論計算出來,甚至連廚房的下水道都要重新設計。
淘寶能夠舉辦如此盛宴,網站的技術實力可見一斑。淘寶網擁有全國最大的hadoop分布式計算集群之一,日新增數據50TB,有40PB海量數據存儲。分布在全國各地80多個節點的CDN網絡,支持的流量超過800Gbps。淘寶的搜索引擎能夠對數十億的商品數據進行實時搜索,另外還擁有自主研發的文件存儲系統和緩存系統,以及java中間件和消息中間件系統,這一切組成了一個龐大的電子商務操作系統。
另外從商業數據上來看,Amazon的財報顯示其2011年完成了大約 480億美金的交易額。eBay2011年財報顯示其全年完成了大約600億美金的交易額(不包括其獨立的汽車交易平臺交易額)。不管從交易額、商品數量還是同比增速等指標上看,淘寶網均遠超于此,是目前全球最大的電子商務平臺。(筆者注:由于淘寶非上市公司,未公布2011年業績,以上內容來自淘寶網技術副總裁行癲的微博)
為了有個更直觀的對比,我們說一個同行,它在2011年光棍節之前做促銷,流量上去之后,達到12Gbps,達到了極限,網站幾乎掛掉,用戶無法下訂單。而淘寶網光棍節當天網絡的流量最高達到800多Gbps,帶給各家銀行和快遞公司的流量也讓他們壓力山大,如臨大敵。另外如果你在網上購買過火車票的話,更能體會到網站能支持多大的流量有多重要。但這不是一朝一夕做出來的,也不是有錢就能辦到的。
以上對比的這些網站,也許讀者很容易就猜到是哪一家,這里拿出來作對比,絕對沒有嘲笑人家的意思,采用通常的網站技術方案,能做到這種程度已經算不錯了。
任何網站的發展都不是一蹴而就的,處在什么樣的階段就采用什么樣的技術。在發展的過程中網站會遇到各種各樣的問題和業務帶來的壓力,正是這些推動著技術的進步和發展,而技術的發展又會反過來促進業務的更大提升。二者互為因果,相互促進。如今淘寶網的流量已經是全球排名第12、國內排名第3。淘寶網的系統也從使用一臺服務器,到采用萬臺以上的服務器。
本文就為大家描述淘寶網在整個發展過程中,所有的主動和被動的技術變革的前因后果。淘寶網的出身,網上有非常多的傳說,下面我們就從它的出生開始講起。
出生:買一個來
2003年4月7日,馬云,在杭州成立了一個“神秘的組織”。他叫來十位員工,要他們簽了一份協議,這份協議要求他們立刻離開阿里巴巴,去做一個神秘的項目。這個項目要求絕對保密,老馬戲稱“連說夢話被老婆聽到都不行,誰要是透漏出去,我將追殺到天涯海角”。這份協議是英文版的,匆忙之間,大多數人根本來不及看懂,但出于對老馬的信任,都卷起鋪蓋離開了阿里巴巴。
他們去了一個神秘的據點——湖畔花園小區的一套未裝修的房子里,房子的主人是馬云。這伙人剛進去的時候,馬云給他們布置了一個任務,就是在最短的時間內做出一個個人對個人(C2C)的商品交易網站。
先介紹一下這個創業團隊的成員:三個開發工程師(花名虛竹、三豐、多隆)、一個UED(花名二當家)、三個運營(花名小寶、阿珂、破天)、一個經理(花名財神),還有就是馬云和他的秘書。當時對整個項目組來說壓力最大的就是時間,怎么在最短的時間內把一個從來就沒有的網站從零開始建立起來?
了解淘寶歷史的人都知道淘寶是在2003年5月10日上線的,這之間只有一個月。要是你在這個團隊里,你怎么做?我們的答案就是:買一個來。
買一個網站顯然比做一個網站要省事一些,但是他們的夢想可不是做一個小網站而已,要做大,就不是隨便買個就行的,要有比較低的維護成本,要能夠方便地擴展和二次開發。
那接下來就是第二個問題:買一個什么樣的網站?答案是:輕量一點的,簡單一點的。于是買了這樣一個架構的網站:LAMP(linux+apache+mySQL+PHP)。這個直到現在還是一個很常用的網站架構模型。這種架構的優點是:無需編譯,發布快速,PHP功能強大,能做從頁面渲染到數據訪問所有的事情,而且用到的技術都是開源的,免費。
當時我們是從一個美國人那里買來的一個網站系統,這個系統的名字叫做PHP Auction,他們的官方網站是http://www.phpauction.net。這個名字很直白,一眼就能看出來這個系統是用什么語言做的、是干什么用的。PHP Auction有好幾個版本,我們買的是最高版的,功能比較多,而且最重要的是對方提供了源代碼。最高版比較貴,當時花了我們2000美金。
要注意的是,買來之后這個網站系統是不能直接就用的,需要很多本地化的修改,例如頁面模板改得漂亮一點,頁頭頁腳加上自己的站點簡介等,其中最有技術含量的是對數據庫進行了一個修改。原來是從一個數據庫進行所有的讀寫操作,拿過來之后多隆把它給拆分成一個主庫、兩個從庫,讀寫分離。這么做的好處有幾點:存儲容量增加了,有了備份,使得安全性增加了,讀寫分離使得讀寫效率提升了。(見下圖)

其中pear DB是一個PHP模塊,負責數據訪問層。另外也用開源的論壇系統PHPBB( http://www.phpbbchina.com )搭建了一個小的論壇社區,虛竹負責機器采購、配置、架設等,三豐和多隆負責編碼,他們把交易系統和論壇系統的用戶信息打通,給運營人員開發出后臺管理(admin系統)的功能,把交易類型從只有拍賣這一種增加為拍賣、一口價、求購商品、海報商品(意思是還沒推出的商品,先掛個海報出來)這四種。
PHP Auction只有拍賣的交易,Auction即拍賣的意思。行癲在微博中提到:今天eBay所有交易中拍賣交易仍然占了40%,而在中國,此種模式在淘寶幾乎從一開始就未能占據優勢,如今在主流的交易中幾乎可以忽略不計。背后的原因一直令人費解。我大致可以給出其中一種解釋:eBay基本在發達國家展開業務,制造業外包后,電子商務的基本群體大多只能表現為零散的個體間交易。
在經歷了另外一些有趣的事情之后,網站開始上線運行了。

運行:個人網站
在接下來的大半年時間里,這個網站迅速顯示出了它的生機。這里有必要提一下當時的市場環境,非典(SARS)的肆虐使得大家都不敢出門,尤其是去商場之類人多的地方。
另外在神州大地上最早出現的C2C網站易趣也正忙得不亦樂乎。2002年3月,eBay以3000萬美元收購了易趣公司33%的股份,2003年6月以1.5億美元收購了易趣公司剩余的67%股份。
當時淘寶網允許買賣雙方留下聯系方式,允許同城交易,整個操作過程簡單輕松。而eBay為了收取交易傭金,是禁止這么做的,這必然增加了交易過程中的難度。而且eBay為了全球統一,把易趣原來的系統替換成了美國eBay的系統,用戶體驗一下子全變了,操作起來非常麻煩,這等于是把積累的用戶拱手送給了淘寶。
為了不引起eBay的注意,淘寶網在2003年里一直聲稱自己是一個“個人網站”。由于這個創業團隊強大的市場開拓和運營能力,淘寶網發展非常迅猛,2003年底,最高每日31萬PV,從5月到年底成交額4000萬。這沒有引起eBay的注意,卻引起了阿里巴巴內部很多員工的注意,他們覺得這個網站以后會成為阿里巴巴強勁的對手。甚至有人在內網發帖,忠告管理層要警惕這個剛剛起步的網站,但管理層似乎無動于衷。
在市場和運營的后方,淘寶網的技術團隊也在快速做著系統的改進和創新。這里插一個有趣的故事:eBay和易趣早期都有員工在論壇上響應用戶的需求,eBay的論壇用粉紅色背景來區分員工的發言,易趣的員工在論壇上昵稱都選各種豆豆,例如黃豆豆、蠶豆豆等。淘寶在討論運營策略的時候提到這個問題,要求所有的員工都去論壇上回答用戶的問題。最早回答問題的任務落在小寶頭上,那我們用什么名字好呢?
“淘淘”?“寶寶”?小寶都不滿意,太女性化了。討論了很久之后,小寶靈光乍現,干脆取個名字叫“小寶”吧,小寶帶七個老婆來開店,迎接各位客官,很有故事性。于是很多武俠小說中的人物開始在論壇中行俠仗義,這些昵稱下面標注著“淘寶店小二”,他們回答各種各樣的問題,快速響應用戶的各種需求。如果是技術上能解決的,幾個人商量一下,馬上就開發、測試、發布上線。反過來對比一下,易趣被eBay收購之后,系統更換成了全球通用的版本,響應用戶的一個需求需要層層審批,反應速度自然慢了下來。
當時淘寶第一個版本的系統里面已經包含了商品發布、管理、搜索、商品詳情、出價購買、評價投訴、我的淘寶這些功能。(現在主流程中也是這些模塊。在2003年10月增加了一個功能節點:“安全交易”,這個是支付寶的雛形。)
隨著用戶需求和流量的不斷增長,系統上面做了很多的日常改進,服務器由最初的一臺變成了三臺,一臺負責發送email、一臺負責運行數據庫、一臺負責運行web App。
過了一段時間之后,商品搜索的功能占用數據庫資源太大了,又從阿里巴巴中文站搬過來他們的搜索引擎iSearch,起初iSearch索引的文件放在硬盤上,隨著數據量的增長,又采購了NetApp服務器放置iSearch。
如此快節奏的工作,其實大家都累得不行,有人就提議大家隨時隨地地鍛煉身體。可是外面SARS橫行,在一個一百多方的房子里,怎么鍛煉呢?高挑美女阿珂提議大家練習提臀操,這個建議遭到男士的一致反對,后來虛竹就教大家練習倒立,這個大家都能接受。于是這個倒立的傳統一直延續至今,和花名文化、武俠文化一并傳承了下來。
隨著訪問量和數據量的飛速上漲,問題很快就出來了,第一個問題出現在數據庫上。mySQL當時是第4版的,我們用的是默認的存儲引擎myisam,這種類型讀數據的時候會把表鎖住,我們知道Oracle在寫數據的時候會有行鎖,讀數據的時候是沒有的,尤其是主庫往從庫上面寫數據的時候,會對主庫產生大量的讀操作,使得主庫性能急劇下降。這樣在高訪問量的時候,數據庫就撐不住了。另外當年的mySQL不比如今的mySQL,在數據的容量和安全性方面也有很多先天的不足(和Oracle相比)。
淘寶網作為個人網站發展的時間其實并不長,很快地,隨著其知名度的飛升,它也從個人網站開始了轉型。已經撐不住的mySQL,被替換成了Oracle,開啟了淘寶技術的另一個時代。
http://i.wshang.com/?p=17019