36為什么總有人覺得5萬塊錢可以做一個淘寶加獲取課程_第1頁
36為什么總有人覺得5萬塊錢可以做一個淘寶加獲取課程_第2頁
36為什么總有人覺得5萬塊錢可以做一個淘寶加獲取課程_第3頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、最新一手資源 更新通知 加微信 ixuexi66資料整理不易 僅供個人學(xué)習(xí) 請勿倒賣36 | 為什么總有人覺得5萬塊錢可以做一個淘寶?鄭曄 2019-04-0300:0010:46講述:鄭曄 大?。?.64M今天,我們從軟件行業(yè)的一個段子說起。甲方想要做個電商網(wǎng)站,作為乙方的程序員問:“你要做個什么樣的呢?”甲方說:“像淘寶那樣就好?!背绦騿T問:“那你打算出多少錢?”甲方想了想,“5 萬塊錢差不多了吧!”這當(dāng)然是個調(diào)侃客戶不懂需求的段子,但你有沒有想過,為什么在甲方看來并不復(fù)雜的系統(tǒng),你卻覺得困難重重呢?因為你們想的根本不是一個東西。在客戶看來,我要的不就是一個能買東西的網(wǎng)站嗎?只要能上線商品

2、,用戶能看到能購買不就好了,5 萬塊錢差不多了。而你腦中想的卻是,“淘寶啊,那得是多大的技術(shù)挑戰(zhàn)啊,每年一到雙 11,那就得考慮各種并發(fā)搶購。淘寶得有多少程序員,5 萬塊你就想做一個,門都沒有?!比绻旁谇懊妗皽贤ǚ答仭钡哪K,我可能會講雙方要怎么協(xié)調(diào),把想法統(tǒng)一了。但到了“自動化”的模塊,我想換個角度討論這個問題:系統(tǒng)是怎么變復(fù)雜的。淘寶的發(fā)展歷程既然說到了淘寶,我們就以一些公開資料來看看淘寶的技術(shù)變遷過程。2013 年,子柳出版了一本淘寶技術(shù)這十年,這本書里講述了淘寶是怎么一步步變化的。按照書中的說法,第一個淘寶是“買來的”,買的是一個叫做 PHPAuction 的系統(tǒng),即便選擇了最高配,

3、也才花了 2000 美元左右。這是一個采用 LAMP 架構(gòu)的系統(tǒng),也就是 Linux + Apache+ MySQL + PHP,這在當(dāng)年可是典型的開源架構(gòu)。團隊所做的主要就是一些訂制化工作,最大的調(diào)整就是將單一數(shù)據(jù)庫的讀寫進行了拆分,變成了一個主庫和兩個從庫。這種結(jié)構(gòu)在今天來看,依然是很多團隊做調(diào)整的首選。當(dāng)訪問量和數(shù)據(jù)量不斷提升,MySQL 數(shù)據(jù)庫率先抗不住了。當(dāng)年的 MySQL 默認(rèn)采用的是MyISAM 引擎,寫數(shù)據(jù)的時候會鎖住表,讀也會被卡住,當(dāng)然,這只是諸多問題中的一個。2003 年底,團隊將 MySQL 換成了 Oracle。由于 Oracle 的性能要好上許多,主從的數(shù)據(jù)庫架構(gòu)又

4、改回了單一數(shù)據(jù)庫。但由于 PHP 訪問數(shù)據(jù)庫的缺省方案沒有連接池,只好找了開源的 SQL Relay,這也為后續(xù)的改進埋下了伏筆。最新 更新通知 加 ixuexi66資料整理不易 個人學(xué)習(xí) 倒賣當(dāng)數(shù)據(jù)量繼續(xù)加大,本地 就已經(jīng) 了,只能通過引入網(wǎng)絡(luò) 解決問題。數(shù)據(jù)量進一步增大之后, 節(jié)點一拆再拆,依然不能解決問題,淘寶就踏上了 小型機的道路。IBM 的小型機、Oracle 的數(shù)據(jù)庫和 EMC 的 ,這個階段就踏上了 IOE 。2004 年初,SQL Relay 已經(jīng)成了一個揮之不去的痛點,于是,只能從更根本的方案上動腦筋: 更換程序設(shè)計語言。作為當(dāng)時的主流,Java 成了不二之選。替換的方案就是

5、給業(yè)務(wù)分模塊,一塊一塊地替換。老模塊只維護,不增加新功能,新功能只在新模塊開發(fā),新老模塊共用數(shù)據(jù)庫。新功能上線,則關(guān)閉老模塊對應(yīng)功能,所有功能替換完畢,則老模塊下線。淘寶的數(shù)據(jù)量繼續(xù)增長,單臺 Oracle 很快到了上限,團隊采用了今天常見的“分庫分表”模式,但“分庫分表”就會帶來新的問題,跨數(shù)據(jù)庫的數(shù)據(jù)怎么整合?于是,打造出了一個DBRoute,用以處理分庫的數(shù)據(jù)。但是,這種做法也帶來了一個新的問題,同時連接多個數(shù)據(jù)庫,任何一個數(shù)據(jù)庫出了問題,都會導(dǎo)致整個 的故障。當(dāng)淘寶的數(shù)據(jù)量再次增長,每次 都到了數(shù)據(jù)庫,數(shù)據(jù)庫很難承受。一個解決方案就是引入緩存和 CDN(Content Delivery

6、 Network,內(nèi)容分發(fā)網(wǎng)絡(luò)),這樣,只讀數(shù)據(jù)的 就從數(shù)據(jù)庫了出來。當(dāng)時的緩存系統(tǒng)還不像今天這么成熟,于是,團隊基于一個開源項目改出了一個。他們用的的CDN。CDN 最開始是一個 系統(tǒng),但流量的增加導(dǎo)致這個系統(tǒng)也支撐不住了,只好開始搭建后來,因為 CDN 要消耗大量的服務(wù)器 ,為了降低成本,淘寶又開始研發(fā) 的低功耗服務(wù)器。隨著業(yè)務(wù)的不斷發(fā)展,開發(fā) 越來越多,系統(tǒng)就越來越臃腫,耦合度也逐漸提升,出錯的概率也逐漸上升。這時,不得不對系統(tǒng)進行分解,將復(fù)用性高的模塊拆分出來,比如,用戶信息。業(yè)務(wù)繼續(xù)發(fā)展,拆分就從局部開始向更大規(guī)模發(fā)展,底層業(yè)務(wù)和上層流程逐漸剝離,并逐漸將所有業(yè)務(wù)都模塊化。有了一個相

7、對清晰地業(yè)務(wù)劃分之后, 的底層業(yè)務(wù)就可以應(yīng)用于不同的場景,一個基礎(chǔ)設(shè)施就此成型,新的業(yè)務(wù)就可以使用基礎(chǔ)設(shè)施進行構(gòu)建,上層業(yè)務(wù)便如雨后春筍一般蓬勃發(fā)展起來。在這個過程中,有很多技術(shù)問題在當(dāng)時還沒有好的解決方案,或者是不適于他們所在的場景。所以,淘寶的工程師就不得不打造 的解決方案,比如:分布式文件系統(tǒng)(TFS)、緩存系統(tǒng)(Tair)、分布式服務(wù)框架(HSF)等等。還有一些技術(shù)探索則是為了節(jié)省成本,比如,去 IOE 和研發(fā)低功耗服務(wù)器等等。我這里以淘寶 的發(fā)展為例,做了一個快速的梳理,只是為了讓你了解一個系統(tǒng)的發(fā)展,如果你有 了解 細(xì)節(jié),不妨 找出這本書讀讀。當(dāng)然,現(xiàn)在的淘寶肯定比這更加完整復(fù)雜。

8、同樣的業(yè)務(wù),不同的系統(tǒng)為什么我們要了解一個系統(tǒng)的演化過程呢?因為作為程序員,我們需要知道 面對的到底是一個什么樣的系統(tǒng)?;氐轿覀兘裉斓闹黝}上,5 萬塊錢可以不可以做一個淘寶? 是,取決于你要的是一個什么樣的系統(tǒng)。最開始買來的“淘寶”甚至連 5 萬塊錢都不用,而今天的淘寶和那時的淘寶顯然不是一個系統(tǒng)。從業(yè)務(wù)上說,今天的淘寶固然已經(jīng)很豐富了,但最 的業(yè)務(wù)相差并不大,無非是賣家提供商品,買家買商品。那他們的本質(zhì)差別在哪呢?回顧上面的過程,你就可以看到,每次隨著業(yè)務(wù)量的增長,原有技術(shù) 需要,于是,就需要用新的技術(shù)去解決這個問題。這里的關(guān)鍵點在于:不同的業(yè)務(wù)量。一個只服務(wù)于幾個人的系統(tǒng),單機就夠了,一個

9、剛剛?cè)胄械某绦騿T也能很好地實現(xiàn)這個系統(tǒng)。而當(dāng)業(yè)務(wù)量到達(dá)一臺 抗不住的時候,就需要用多臺 去處理,這個時候就必須考慮分布式系統(tǒng)的問題,可能就要適當(dāng)?shù)匾胫虚g件。而當(dāng)系統(tǒng)變成為海量業(yè)務(wù)提供服務(wù),就沒有哪個已經(jīng)打造好的中間件可以提供幫助了,需要從更底層解決問題。雖然在業(yè)務(wù)上看來,這些系統(tǒng)是一樣的,但在技術(shù)上看來,在不同的階段,一個系統(tǒng)面對的問題是不同的,因為它面對業(yè)務(wù)的量級是不同的。更準(zhǔn)確地說,不同量級的系統(tǒng)根本就不是一個系 統(tǒng)。最新更新通知 加 ixuexi66資料整理不易 個人學(xué)習(xí) 倒賣只要業(yè)務(wù)在不斷地發(fā)展,問題就會不斷出現(xiàn),系統(tǒng)就需要不斷地翻新。我曾聽到一個很形象的比喻:把奧拓開成奧迪。你用對

10、技術(shù)了嗎?作為一個程序員,我們都知道技術(shù)的重要性,所以,我們都會努力地去學(xué)習(xí)各種各樣的新技術(shù)。尤其是當(dāng)一個技術(shù)帶有大廠光環(huán)的時候,很多人都會迫不及待地去學(xué)習(xí)。我參加過很多次技術(shù)大會,當(dāng)大廠有人 的時候,通常都是人山人海,大家都想學(xué)習(xí)大廠有什么“先進”技術(shù)。知道了,然后呢?很多人就想迫不及待地想把這些技術(shù)應(yīng)用在 的項目中。我曾經(jīng)面試過很多程序員,給我講起技術(shù)來滔滔不絕,說什么 在設(shè)計時考慮各種分布式的場景,如果系統(tǒng)的 上來時,他會如何處理。我就好奇地問了一個問題,“你這個系統(tǒng)有多少人用?”結(jié)果,他做的只是一個內(nèi)部系統(tǒng),使用頻率也不高。為了技術(shù)而技術(shù)的程序員不在少數(shù),過度使用技術(shù)造成的結(jié)果就是引入

11、不必要的復(fù)雜度。即便用了牛刀殺雞,因為缺乏真實場景檢驗,也不可能得到真實反饋,對技術(shù)理解的深度也只能停留在很表面的程度上。在前面的例子中,淘寶的工程師之所以要改進系統(tǒng),真實的驅(qū)動力不是技術(shù),而是不斷攀升的業(yè)務(wù)量帶來的問題復(fù)雜度。所以,評估系統(tǒng)當(dāng)前所處的階段,采用恰當(dāng)?shù)募夹g(shù)解決,是我們最應(yīng)該考慮的問題。也許你會說,我做的系統(tǒng)沒有那么大的業(yè)務(wù)量,我還想提高技術(shù)怎么辦? 是到有好問題的地方去。現(xiàn)在的 IT 行業(yè)提供給程序員的機會很多,找到一個有好問題的地方并不是一件 的事, 當(dāng)然,前提條件是,你 得有解決問題的基礎(chǔ)能力??偨Y(jié)時刻今天,我以淘寶的系統(tǒng)為例,給你介紹了一個系統(tǒng)逐漸由簡單變復(fù)雜的發(fā)展歷程,

12、希望你能認(rèn)清不同業(yè)務(wù)量級的系統(tǒng)本質(zhì)上就不是一個系統(tǒng)。一方面,有人會因為對業(yè)務(wù)量級理解不足,盲目低估其他人系統(tǒng)的復(fù)雜度;另一方面,也有人會盲目應(yīng)用技術(shù),給系統(tǒng)引入不必要的復(fù)雜度,讓 陷入泥潭。作為擁有技術(shù)能力的程序員,我們都非常在意個人技術(shù)能力的提升,但卻對在什么樣情形下,什么樣的技術(shù)更加適用考慮得不夠。采用恰當(dāng)?shù)募夹g(shù),解決當(dāng)前的問題,是每個程序員都應(yīng)該仔細(xì)考慮的問題。如果今天的內(nèi)容你只能記住一件事,那請記?。河煤唵渭夹g(shù)解決問題,直到問題變復(fù)雜。最后, 請你回想一下,你身邊有把技術(shù)做復(fù)雜而引起的問題嗎?歡迎在留言區(qū)寫下你的想 法。感謝閱讀,如果你覺得這篇文章對你有幫助的話,也歡迎把它 給你的朋友

13、。©由作者篩選后的優(yōu)質(zhì)留言將會公開顯示,歡迎踴躍留言。Ctrl + Enter0/2000字提交留言精選留言(4)hua168前公司開發(fā) ,不知道是不是為了顯示開發(fā)能力牛,做了一個資訊系統(tǒng),一個人用了Go、PHP、java 3種語言+rabbitMQ+ES+mongoDB等,安裝所需要軟件花了2小時,我心里那個郁悶而且經(jīng)常掛因為Go是 其他項目模版,寫shell ,發(fā)現(xiàn)相關(guān)進程掛了用start居然報錯,起不來!非要手工打start😂😂我心里想,你寫出來爽了,想過我們運維的感受嗎?!😂😂2 2019-04-03風(fēng)羽星泉能否詳細(xì)說明一下什么叫到有好的問題的地方去,很想知道這個問題的 。2019-04-03Monday用簡單技術(shù)解決問題,直到問題變復(fù)雜。最愛每節(jié)課最后精簡的總結(jié)。2019-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論