淘寶技術發展(Oracle/支付寶/旺旺)

jopen 12年前發布 | 40K 次閱讀 淘寶 軟件架構

淘寶網作為個人網站發展的時間其實并不長,由于它太引人注目了,馬云在2003年7月就宣布了這個是阿里巴巴旗下的網站,隨后在市場上展開了很成功的運 作。 最著名的就是利用中小網站來做廣告,突圍eBay在門戶網站上對淘寶的廣告封鎖。上網比較早的人應該還記得那些在右下角的彈窗和網站腰封上一閃一閃的廣 告。市場部那位到處花錢買廣告的家伙,太能花錢了,一出手就是幾百萬,他被我們稱為“大少爺”。


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

但更換數據庫不是只換個庫就可以的,訪問方式,SQL語法都要跟著變,最重要的一點是,Oracle并發訪問能力之所以如此強大,有一個關鍵性的設計—— 連接池。但對于PHP語言來說它是放在Apache上的,每一個請求都會對數據庫產生一個連接,它沒有連接池這種功能(java語言有servlet容 器,可以存放連接池)。那如何是好呢?這幫人打探到eBay在PHP下面用了一個連接池的工具,是BEA賣給他們的。我們知道BEA的東西都很貴,我們買 不起,于是多隆在網上尋尋覓覓,找到一個開源的連接池代理服務SQL Relay( http://sourceforge.jp/projects/freshmeat_sqlrelay ),這個東西能夠提供連接池的功能,多隆對它進行了一些功能改進之后就拿來用了。這樣系統的架構就變成了如下的樣子:
淘寶技術發展(Oracle/支付寶/旺旺)

數據一開始是放在本地的,DBA們對Oracle做調優的工作,也對SQL進行調優。后來數據量變大了,本地存儲不行了。買了NAS(Network Attached Storage:網絡附屬存儲),NetApp的NAS存儲作為了數據庫的存儲設備,加上Oracle RAC(real application clusters,實時應用集群)來實現負載均衡。七公說這實際上是走了一段彎路,NAS的NFS(Network File System)協議傳輸的延遲很嚴重,但那時侯不懂。后來采購了dell和EMC合作的SAN低端存儲,性能一下子提升了10幾倍,這才比較穩定了。再往 后來數據量更大了,存儲的節點一拆二、二拆四,RAC又出問題了。這才踏上了購買小型機的道路。在那段不穩定的時間里,七公曾經在機房住了5天5夜。

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


微博上有人說“好的架構是進化來的,不是設計來的”。的確如此,其實還可以再加上一句“好的功能也是進化來的,不是設計來的”。在架構的進化過程中,業務 的進化也非常迅猛。最早的時候,買家打錢給賣家都是通過銀行轉賬匯款,有些騙子收了錢卻不發貨,這是一個很嚴重的問題。然后這伙人研究了paypal的支 付方式,發現也不能解決問題。后來這幾個聰明的腦袋又想到了“擔保交易”這種第三方托管資金的辦法。于是在2003年10月,淘寶網上面上線了一個功能, 叫做“安全交易”,賣家選擇支持這種功能的話,買家會把錢交給淘寶網,等他收到貨之后,淘寶網再把錢給賣家。這就是現在的支付寶,在前兩天 (2012.2.21)年會上,支付寶公布2011年的交易筆數已經是paypal的兩倍。這個劃時代的創新,其實就是在不斷的思索過程中的一個靈光乍 現。

當時開發“安全交易”功能的是茅十八和他的徒弟苗人鳳(茅十八開發到一半去上海讀MBA去了,苗人鳳現在是支付寶的首席業務架構師),開發跟銀行網關對接 的功能的是多隆。當時多數銀行的網站已經支持在線支付了,但多隆告訴我,他們的網關五花八門,用什么技術的都有,必須一家一家去接。而且他們不保證用戶付 錢了就一定扣款成功、不保證扣款成功了就一定通知淘寶、不保證通知淘寶了就一定能通知到、不保證通知到了就不重復通知。這害苦了苗人鳳,他必須每天手工核 對賬單,對不齊的話就一定是有人的錢找不到地方了,少一分錢都睡不著覺。另外他為了測試這些功能,去杭州所有的銀行都辦理了一張銀行卡。一堆銀行卡擺在桌 子上,不知道的人還以為這個家伙一定很有錢,其實里面都只是十塊八塊的。現在我們再一次知道,任何牛B的人物,都必須有一段苦B的經歷。


有人說淘寶打敗易趣(eBay中國)是靠免費,其實這只是原因之一。如果說和易趣過招第一招是免費的話,這讓用戶沒有門檻就愿意來,那第二招就是“安全支 付”,這讓用戶放心付款,不必擔心被騙。在武俠小說中真正的高手飛花摘葉即可傷人,他們不會局限于一招兩招,一旦出手,連綿不絕。而淘寶的第三招就是“旺 旺”。其實淘寶旺旺也不是自己生出來的,是從阿里巴巴的“貿易通”復制過來的。從2004年3月開始,“叮咚、叮咚”這個經典的聲音就回蕩在所有淘寶買家 和賣家的耳邊,“親,包郵不?” “親,把零頭去掉行不?”這親切的砍價聲造就了后來的“淘寶體”。有人說中國人就是愛砍價,雖然筆者體會不到砍價成功后有多少成就感,但每次我去菜市場, 看到大媽們砍價砍得天昏地暗,那滿足的勁頭堪比撿到了錢,我就深刻的理解了淘寶旺旺在交易過程中的價值。我猜eBay也體會不到砍價的樂趣,他們一直不允 許買賣雙方在線聊天,收購了skype之后也沒有用到電子商務中去。

旺旺在推出來沒多久,就惹了一個法律方面的麻煩。有個做雪餅的廠家找上門來,說我們侵權了,他們家的雪餅很好吃,牛奶也做得不錯,我們都很喜歡。然后我們 就在旺旺的前面加了兩個字,叫做“淘寶旺旺”。在那個野蠻生長的階段,其實很多產品都是想到什么就做什么,例如我們還搭建過一個聊天室,但似乎淘寶網不是 一個閑聊的地方,這個聊天室門可羅雀,一段時間后就關閉掉了。

SQL Relay的問題搞得三豐他們很難睡個囫圇覺,那一年開半年會的時候,公司特地給三豐頒了一個獎項,對他表示深切的安慰。但不能總這樣啊,于是,2004年的上半年開始,整個網站就開始了一個脫胎換骨的手術。
下一篇:淘寶技術發展(Java時代:脫胎換骨)
原文出處:http://blog.sina.com.cn/s/blog_633219970100xdty.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!