淘寶青春:煩惱中成長的巨人

講到這裏,順便先闢個謠,網上有很多這樣騙轉發的勵志段子:“1998年,馬化騰等一夥人湊了50萬元創辦了騰訊,

沒買房;1998年,史玉柱借了50萬元搞腦白金,沒買房;1999年,丁磊用50萬元創辦了163.com,沒買房;1999年,陳天橋炒股賺了50萬元,創辦盛大,沒買房;1999年,馬雲等18人湊了50萬元註冊了阿里巴巴,沒買房。如果當年他們用這50萬元買了房,現在估計還在還着銀行的貸款吧。”事實上,阿里巴巴和淘寶網都是在馬雲自己的房子裏創辦的,阿里巴巴是1999年初發布上線的。所以,關於馬雲買房子的事情,真相是這樣的。

淘寶網作爲個人網站發展的時間其實並不長由於它太引人注目了,馬雲在2003年7月就宣佈這個是阿里巴巴旗下的網站,隨後在市場上展開了很成功的推廣運作。最著名的就是利用中小網站來做廣告,突圍eBay在門戶網站上對淘寶的廣告封鎖。這時候,eBay終於看到淘寶網這個後起之秀了,他對競爭者的態度就是“封殺他”。eBay買斷了新浪、搜狐、網易的電子商務類型的廣告,簽署了排他性協議,切斷了淘寶在這上面做廣告的路子。大路不通,我們就獨闢蹊徑,上網比較早的人應該還記得那些在右下角的彈窗和網站腰封上一閃一閃的廣告,“淘寶網”幾個字總是如影隨形地出現在任何中小型網站上。市場部那位到處花錢買廣告的傢伙太能花錢了,一出手就是幾百萬元,他被我們稱爲“大少爺”。

數據庫從mySQL到Oracle

“大少爺”們做的廣告,帶來的就是迅速上漲的流量和交易量。在2003年年底,MySQL已經撐不住了,技術的替代方案非常簡單,就是換成Oracle。換爲Oracle的原因除了它容量大、穩定、安全、性能高之外,還有人才方面的原因。在2003年的時候,阿里巴巴已經有一支很強大的DBA團隊了,有魯國良、馮春培、汪海(七公)這樣的人物,後來還有馮大輝(@fenng)、陳吉平(拖雷)。這樣的人物牛到什麼程度呢?Oracle給全球的技術專家頒發一些頭銜,其中最高級別的叫ACE(就是撲克牌的“尖兒”,夠大的吧),被授予這個頭銜的人目前全球也只有300多名(公佈名單的網址爲http://apex.oracle.com/pls/otn/f?p=19297:3 ),當年全球只有十幾名,而阿里巴巴就有4名。有如此強大的技術後

盾,把MySQL換成Oracle是順理成章的事情。

但更換數據庫不是隻換個庫就可以的,其訪問方式和SQL語法都要跟着變,最重要的一點是,Oracle的性能和併發訪問能力之所以如此強大,有一個關鍵性的設計——連接池,連接池中放的是長連接,是進程級別的,在創建進程的時候,它就要獨佔一部分內存空間。也就是說,這些連接數在固定內存的Oracle Server上是有限的,任何一個請求只需要從連接池中取得一個連接即可,用完後釋放,這不需要頻繁地創建和斷開連接,而連接的創建和斷開的開銷是非常大的。但對於PHP語言來說,它對數據庫的訪問都是很直接的,每一個請求都要一個連接。如果是長連接,應用服務器增多時,連接數就多了,就會把數據庫拖掛,如果是短連接,頻繁地連接後再斷開,性能會非常差(而Java語言有很多現成的連接池)。那如何是好呢?我們打探到eBay用了一個連接池的工具,是BEA賣給他們的。我們知道,BEA的東西都很貴,我們買不起,就放棄了找BEA的念頭,於是多隆在網上尋尋覓覓,找到一個開源的連接池代理服務SQL Relay(http://sqlrelay.sourceforge.net),這個東西能夠提供連接池的功能,多隆對它進行了一些功能改進之後,系統的架構就變成了如下形式。

數據一開始是放在本地的,七公帶領的DBA們對Oracle做調優的工作,也對SQL進行調優。後來數據量變大後,本地存儲無法滿足了,買了NAS(Network Attached Storage,網絡附屬存儲),NetApp(Network Appliance,美國網域存儲技術有限公司)的NAS作爲數據庫的存儲設備,加上Oracle RAC(Real ApplicationClusters,實時應用集羣)來實現負載均衡。七公說這實際上是走了一段彎路,NAS的NFS(Network File System)協議傳輸的延遲很嚴重,但那時不懂。後來採購了Dell和EMC合作的SAN低端存儲,性能一下提升了十幾倍,這才比較穩定了。再後來,數據量更大了,存儲的節點一拆二、二拆四,RAC又出問題了,這才踏上了購買小型機的道路。在那段不穩定的時間裏,七公曾經在機房住了5天5夜,差點被輻射成蜘蛛俠。

替換完數據庫後,時間到了2004年春天,俗話說“春宵一刻值千金”,但這些人的春宵卻不太好過,他們在把數據的連接放在SQL Relay之後就噩夢不斷,這個代理服務經常會死鎖,如同之前的MySQL死鎖一樣。雖然多隆做了很多修改,但當時那個版本內部處理的邏輯不對,問題很多,最快的解決辦法就是“重啓”它的服務。這在白天還好,只要連接上機房的服務器,把進程殺掉,然後開啓就可以了。但是最痛苦的是它在晚上也要死掉,於是工程師們不得不24小時開着手機,一旦收到“SQL Relay進程掛起”的短信,就從春夢中醒來,打開電腦,連上機房的網絡,重啓服務,後來乾脆每天睡覺之前先重啓一下。做這事最多的據說是三豐,他現在是淘寶網的總裁。現在我們知道,任何牛B的人物,都有一段苦B的經歷。


轉載自 http://developer.51cto.com/art/201307/402518.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章