1. 程式人生 > >為什麼很多看起來不是很複雜的網站比如 Facebook、淘寶,需要大量頂尖高手來開發?

為什麼很多看起來不是很複雜的網站比如 Facebook、淘寶,需要大量頂尖高手來開發?

就拿淘寶來說說,當作給新人一些科普。

先說你看到的頁面上,最重要的幾個:
【搜尋商品】——這個功能,如果你有幾千條商品,完全可以用select * from tableXX where title like %XX%這樣的操作來搞定。但是——當你有10000000000(一百億)條商品的時候,任何一個數據庫都無法存放了,請問你怎麼搜尋?這裡需要用到分散式的資料儲存方案,另外這個搜尋也不可能直接從資料庫裡來取資料,必然要用到搜尋引擎(簡單來說搜尋引擎更快)。好,能搜出商品了,是否大功告成可以啵一個了呢?早著呢,誰家的商品出現在第一頁?這裡需要用到巨複雜的排序演算法。要是再根據你的購買行為做一些個性化的推薦——這夠一幫牛叉的演算法工程師奮鬥終生了。


【商品詳情】——就是搜尋完畢,看到你感興趣的,點選檢視商品的頁面,這個頁面有商品的屬性、詳細描述、評價、賣家資訊等等,這個頁面的每天展示次數在30億以上,同樣的道理,如果你做一個網站每天有10個人訪問,你絲毫感覺不到伺服器的壓力,但是30億,要解決的問題就多了去了。首先,這些請求不能直接壓到資料庫上,任何單機或分散式的資料庫,承受30億每天的壓力,都將崩潰到完全沒有幸福感,這種情況下要用到的技術就是大規模的分散式快取,所有的賣家資訊、評價資訊、商品描述都是從快取裡面來取到的,甚至更加極致的一點“商品的瀏覽量”這個資訊,每開啟頁面一次都要重新整理,你猜能夠從快取裡面來取嗎?淘寶做到了,整個商品的詳情都在快取裡面。


【商品圖片】——一個商品有5個圖片,商品描述裡面有更多圖片,你猜淘寶有多少張圖片要儲存?100億以上。這麼多圖片要是在你的硬盤裡面,你怎麼去查詢其中的一張?要是你的同學想拷貝你的圖片,你需要他準備多少塊硬碟?你需要配置多少大的頻寬?你們的網絡卡是否能夠承受?你需要多長時間拷貝給他?這樣的規模,很不幸市面上已經沒有任何商業的解決方案,最終我們必須自己來開發一套儲存系統,如果你聽說過google的GFS,我們跟他類似,叫TFS。順便說一下,騰訊也有這樣的一套,也叫TFS。

【廣告系統】——淘寶上有很多廣告,什麼,你不知道?那說明我們的廣告做的還不錯,居然很多人不認為它是廣告,賣家怎麼出價去買淘寶的廣告位?廣告怎麼展示?怎麼檢視廣告效果?這又是一套演算法精奇的系統。


【BOSS系統】——淘寶的工作人員怎麼去管理這麼龐大的一個系統,例如某時刻突然宣佈某位作家的作品全部從淘寶消失,從資料庫到搜尋引擎到廣告系統,裡面的相關資料在幾分鐘內全部消失,這又需要一個牛叉的後臺支撐系統。

【運維體系】——支援這麼龐大的一個網站,你猜需要多少臺伺服器?幾千臺?那是零頭。這麼多伺服器,上面部署什麼作業系統,作業系統的核心能否優化?Java虛擬機器能否優化?通訊模組有沒有榨取效能的空間?軟體怎麼部署上去?出了問題怎麼回滾?你裝過作業系統吧,優化過吧,被360坑過沒,崩潰過沒?這裡面又有很多門道。