成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淘寶升華:脫胎換骨的巨人

開發 前端
到2004年上半年,淘寶網已經運行了一年的時間,這一年積累了大量的用戶,也快速開發了很多功能,當時這個網站已經很龐大了,而且新的需求還在源源不斷地增加。把一個龐大的網站的開發語言換掉,無異于脫胎換骨,在換的過程中還不能拖慢業務的發展,這無異于邊換邊跑,對時間和技術能力要求都非常高。

淘寶傳奇工程師多隆的程序世界

多隆是淘寶的創始人之一,也是淘寶的***個程序員,他奠定了諸多淘寶重大軟件項目的基礎。有人說他是淘寶的“掃地僧”,有人說他是“神”。在淘寶,他做到了既懂C/C++語言,又懂Java和內核;既可以深入技術底層,又能切入到高層業務領域,從前端到后端,只是既光又深。他就是核心系統部專家組的多隆。

技術小兒中流傳一句話——“有困難,找多隆”。關于這點,我深有體會,又一次,我們組解決一個Apache服務器無故崩潰的詭異問題,搞了三天還是沒找出原因,于是請教多隆,他在三分鐘后就告訴了我答案。瞬間的秒殺,讓我領教了;高級研究員的威力。

我和多隆在同一個部門,工位相鄰。這個近水樓臺先得月的條件,讓我平時有很多機會觀察他,從他的一舉一動中思索他如何以非科班出身(生物系生命科學專業)成長為計算機牛人。

多隆說他的知識經驗的積累主要歸功于在淘寶業務發展的過程中,他遇到了各種各樣的問題。這些問題促使他不斷學習解決問題的各種技術,他和淘寶一起成長。在我看來,他對技術始終保持著謙卑的心態也很關鍵。他把自己當成一塊海綿一樣去吸收新知識——在他的字典里,沒有不值得去解決的問題,也沒有不值得去學習的技術。而且每學一個知識點,多隆都會寫一段代碼去驗證,一方面是練習,另一方面也讓他加深理解,直到真正掌握這個技術。

我的師父黃裳曾經說過“好的架構圖充滿美感”。一個架構好不好,從審美的角度就能看出來。后來我看了很多系統的架構,發現這個言論基本成立。反觀淘寶以前兩個版本的架構,如下頁圖所示,你看哪個比較美?

顯然,***個比較好看,第二個顯得頭重腳輕,這也注定了它不是一個穩定的版本,只存活了不到半年的時間。2004年初,SQL Relay的問題解決不了,數據庫必須要用Oracle,那么從哪里動刀呢?只有換開發語言了。換什么語言好?用Java。Java是當時最成熟的網站開發語言,它有比較良好的企業開發框架,被世界上主流的大規模網站普遍采用。另外,有Java開發經驗的人才也比較多,后續維護成本會比較低。

脫胎換骨的升級——更換開發語言

到2004年上半年,淘寶網已經運行了一年的時間,這一年積累了大量的用戶,也快速開發了很多功能,當時這個網站已經很龐大了,而且新的需求還在源源不斷地增加。把一個龐大的網站的開發語言換掉,無異于脫胎換骨,在換的過程中還不能拖慢業務的發展,這無異于邊換邊跑,對時間和技術能力要求都非常高。做這樣的手術,需要請***流的專家來主刀。現在再考一下。

大家:親,如果你在這個創業團隊中,請什么樣的人來做這件事?我們的答案是請Sun公司的人。沒錯,就是創造Java語言的那家公司,世界上沒有比他們更懂Java的了。除此之外,還有一個不為人知的原因,我剛才說到Java被世界上主流的大規模網站普遍采用,其中有一個網站就是eBay,那時eBay的系統剛剛從C++改到而且就是請Sun的工程師給改造成Java架構的,這下你懂了吧?他們不僅更懂Java,而且更懂eBay。Sun公司的這幫工程師的確很強大,在筆者2004年年底來淘寶的時候,他們還在,我有幸與他們共事了幾個月。現在擺在他們面前的問題是用什么辦法把一個龐大的網站從PHP語言遷移到Java?而且要求在遷移的過程中,不停止服務,原來系統的bugfix和功能改進不受影響。親,你要是架構師,你怎么做?有人的答案是寫一個翻譯器,如同把中文翻譯成英文一樣,自動翻譯。我只能說你這個想法太超前了,“too young, too simple, sometimes naive”。當時沒有,現在也沒有人能做到。他們的大致方案是給業務分模塊,一個模塊一個模塊地漸進式替換。如用戶模塊,老的member.taobao.com繼續維護,不添加新功能,新功能在新的模塊上開發,跟老的模塊共用一個數據庫,開發完畢之后放到不同的應用集群上,另開一個域名member1.taobao.com,同時再替換老的功能,替換一個,就把老的模塊上的功能關閉一個,逐漸把用戶引導到member1.taobao.com,等所有的功能都替換完之后,關閉member.taobao.com。從設計上來看,這個member1的二級域名應該是一個過渡狀態,但我們把member域名的代碼下線以后,發現很難把member1切換回member,因為有些地方把鏈接寫死了,于是后來很長時間里我們都是在用member1.taobao.com這樣奇怪的域名。一年后,有另外一家互聯網公司開始做電子商務了,我們發現他們的域名也叫member1.xx.com、auction1.xx.com,復制得毫無保留,我們只能會心一笑。

 說了開發模式,再說說用到的Java MVC框架,當時的struts1.x是用得比較多的框架,但是用過webwork和struts2的人可能知道,struts1.x在多人協作方面有很多致命的弱點,由于沒有一個輕量框架作為基礎,因此,很難擴展,這樣架構師對于基礎功能和全局功能的控制就很難做到。而阿里巴巴的18個創始人之中,有個架構師周悅虹,他在Jakarta Turbine的基礎上做了很多擴展,打造了一個阿里巴巴自己用的MVC框架WebX (http://www.openwebx.org/docs/Webx3_Guide_Book.html ),這個框架易于擴展,方便組件化開發,它的頁面模板支持JSP和Velocity等,持久層支持ibatis和hibernate等,控制層可以用EJB和Spring(Spring是后來才有的)。項目組選擇了這個強大的框架。另外,當時Sun在全世界大力推廣他們的EJB,雖然淘寶的架構師認為這個東西用不到,但他們還是極力堅持。在經歷了很多次的技術討論、爭論甚至爭吵之后,這個系統的架構就變成了下圖的形式。

MVC框架是阿里的WebX,控制層用了EJB,持久層是ibatis。另外,為了緩解數據庫的壓力,商品查詢和店鋪查詢放在搜索引擎中。這個架構圖是不是好看了一點了?Sun的這幫工程師開發完淘寶的網站之后,用同樣的架構又做了一個很牛的網站,叫“支付寶”。(上一篇說過支付寶最初是淘寶上的“安全交易”功能,這個功能后來獨立出來,成立了一個網站,也成立了一個公司,就是現在的支付寶。把支付寶從淘寶分出去的人,就是Sun公司的這幾個人。)下圖是支付寶的***次員工大會。

 [[76979]]

上面的架構中,引入了搜索引擎iSearch(前文說過,iSearch其實是在LAMP系統運行一段時間之后被多隆引進的,換為Oracle之后只是替換一下數據源)。其實這個搜索引擎的原理很簡單,就是把數據庫里的數據dump(傾倒)成結構化的文本文件后,放在硬盤上,提供Web應用以約定的參數和語法來查詢這些數據。這看起來不難,難的是數以億計的信息,怎么做到快速更新呢?這好比你做了一個網站,在百度上很快就能搜到,你一定很滿意了。但如果你發布一件商品,在淘寶上過1個小時還搜不到,你肯定要郁悶了。另一個難點是如何保證非常高的容量和并發量?再往后面就要考慮斷句和語義分析的問題,以及推薦算法等更加智能的問題。這些內容先不詳細介紹,因為搜索引擎的技術已經足以寫好幾本書了。

其實在任何時候,開發語言本身都不是系統的瓶頸,業務帶來的壓力更多的存在于數據和存儲方面。前面也說到,MySQL撐不住之后換為Oracle,Oracle的存儲一開始在本機上,后來在NAS上,NAS撐不住了用EMC的SAN存儲,再后來,Oracle的RAC撐不住了,數據的存儲方面就不得不考慮使用小型機。在2004年夏天,DBA七公、測試工程師郭芙和架構師行癲,踏上了去北京測試小型機的道路。他們帶著小型機回來的時候,我們像歡迎***一樣歡迎他們,因為那是我們最值錢的設備,價格表上的數字嚇死人。小型機買回來之后,我們爭相合影,然后Oracle就運行在了小型機上,存儲方面,從EMC低端CX存儲到Sun oem hds高端存儲,再到EMC dmx高端存儲,一級一級地往上跳。

到2004年底,淘寶網已經有4百多萬種商品了,日均4千多萬個PV,注冊會員達400萬個,全網成交額達10億元。

到現在為止,我們已經用上了IBM的小型機、Oracle的數據EMC的存儲,這些東西都是很貴的,那些年可以說是花錢如流水。有人說過“錢能解決的問題,就不是問題”,但隨著淘寶網的發展,在不久以后,錢已經解決不了我們的問題了。花錢買豪華的配置,也許能支持1億個PV的網站,但淘寶網的發展實在是太快了,到了10億個PV怎么辦?到了百億怎么辦?在幾年以后,我們不得不創造技術,解決這些只有世界***的網站才會遇到的問題。后來我們在開源軟件的基礎上進行自主研發,一步一步地把IOE(IBM小型機、Oracle、EMC存儲)這幾個“神器”都去掉了。這些神器就如同《西游記》中那些神仙的兵器,他們身邊的妖怪們拿到這些兵器能把猴子打得落荒而逃。但最牛的神仙是不依賴這些神器的,他們揮一揮衣袖、翻一下手掌就威力無比了。

堅若磐石——圍繞性能、容量和成本的進化已經有讀者在迫不及待地問怎么去掉了IOE?別急,在去掉IOE之前還有很長的路要走(在后面講到TDDL的時候,會提到去IOE的一些事情)。行癲等人買回小型機之后,我們用上了。

 

責任編輯:陳四芳 來源: 51CTO
相關推薦

2014-10-30 17:43:59

Android 5.0Android Wea

2012-11-14 15:43:29

淘寶技術

2015-06-15 15:46:09

聯想互聯網

2021-07-13 10:26:10

Windows 10Windows操作系統

2021-06-08 10:45:15

微軟Windows 10Windows

2014-10-30 14:47:37

2021-03-15 05:45:13

Edge微軟瀏覽器

2022-02-13 07:39:16

工具Windows應用

2011-08-24 09:42:05

筆記本評測

2011-01-06 10:21:00

啟明星辰聯想網御

2022-01-06 19:00:03

微軟WindowsWindows 11

2020-09-15 17:22:14

電腦內存硬盤

2020-11-02 07:28:07

Windows10

2024-06-11 07:26:28

2016-11-08 07:58:02

樂視難關科技新聞早報

2022-05-16 17:54:37

智能科技

2012-04-23 14:04:56

CSS網站

2021-10-28 21:12:51

小米MIUI12.5

2009-10-28 17:44:31

VB.NET語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费看黄视频网站 | 欧美八区| 99久久99| 亚洲综合在线视频 | 国产99久久| 国产精品视频一区二区三区 | 欧美日韩三级 | 91视频88av| 伊人网站视频 | 精品自拍视频 | 91免费电影| 久久久久久久久一区 | m豆传媒在线链接观看 | 日韩一区在线播放 | 亚洲精品中文字幕 | 免费v片 | 精品一区二区三区四区五区 | 亚洲一区二区三区视频在线 | 亚洲天堂一区 | 视频一区在线 | 欧美日韩在线精品 | 欧美在线日韩 | 免费观看av网站 | 欧美国产中文字幕 | 国产99热精品 | 久久极品| 国产精品久久久久久婷婷天堂 | 成人在线看片 | 成人免费一区二区 | 一区二区三 | 久久激情网 | 久久久久久久综合色一本 | 免费观看一级特黄欧美大片 | 国产一级淫片免费视频 | 欧美视频一区 | 97人人超碰 | 国产夜恋视频在线观看 | 亚洲国产精品成人无久久精品 | 在线视频一区二区 | 中文字幕在线视频免费观看 | 免费人成激情视频在线观看冫 |