仲介交易 HTTP://www.aliyun.com/zixun/aggregation/6858.html">SEO診斷 淘寶客 雲主機 技術大廳
兩年內飛速發展卻沒有動搖Pinterest最初的構架設計。
圖片分享社區Pinterest自上線以來,在網站外觀上做了不少變動,但卻一直沿用著最初的網路代碼,在代碼層面並沒有太多變動。 Pinterest的工程師Jon Jenkins最近披露說,Pinterest仍然在最初的代碼基礎上運轉。
「許多網路公司在擴大規模的過程中,都會對網站構架做一次或多次調整。 雖然我們對堆疊構架進行了更新,使之與公司規模相適應,但卻沒有做大規模的根本性調整,還是沿用了最初的網站程式。 」
Jenkins所指的「程式基礎」指的是Pinterest運行的程式。 隨著網站發展,工程師不僅要對網站外觀進行更新,還要用新的技術完善和修補程式基礎,確保其能高效運行。 Tumblr就是這樣的典例,雖然有幾次過於徹底的更新甚至影響到使用者正常使用而讓大家頗有微詞。 LinkedIn的工程師也曾花費兩個月將網站的原始程式碼全部重寫——在LinkedIn的工程師看來,這種徹底的結構整改對維持網站規模擴大是十分必須的。 LinkedIn的發言人就曾表示說,「網站平臺發展迅速,我們也希望發佈更多創新產品,這就要求我們從功能分支繁雜開發和部署軟體的網站結構進化到連續部署結構」。
但Pinterest執意沒有進行這樣的網站架構改進,甚至在快速增長的使用者群曲線面前也「無動於衷」。 Jenkins表示Pinterest的基本網站結構包括Python web伺服器,mySQL資料庫,開源資料結構服務Redis和Memcache緩存系統。 Pinterest的團隊所採用的是保守的對資料庫某個部分進行有針對性的重寫,「換言之,我們所採用的是‘翻新’而不是‘替換’」。
從Pinterest上線之初就負責網站構架的三位工程師——Yash Nelapati,Marty Weiner和Ryan Probasco仍然在原崗位工作,對Pinterest的原始程式碼也了然于胸。
據Weiner表示,Pinterest的團隊採用這樣保守的網站構架方式並不是有意設計如此,而是出於實用性的選擇。 Pinterest從2011年一推出就進入高速發展,實在沒有時間進行大規模的代碼重寫。 一旦發現問題,必須在12到24小時內進行修補,對某些事先發現的代碼問題也要儘快做出修改,這種縫縫補補的方式並沒有對基本的代碼框架帶來太大的變動。
因為一直在修修補補,各種技術應用到極限時難免發生故障,Pinterest的系統構架在應對網站的瘋狂式增長時越來越難以擴展。 當我們意識到各種技術拼湊在一起使得我們的基礎代碼變得不可靠的時候,有兩種選擇擺在面前:用其他的技術解決方案來替換現有的基礎代碼或者再重寫和鞏固現有的技術框架。
Weiner說:「綜合各方面考慮,我們選擇了MySQL,Solr,Memcache,Redis,放棄了Cassandra,Mongo等,上述選擇的理由是基於軟體的特性:成熟簡單,有良好支援,性能優越,開源且失敗的頻率較低。 在這一選擇上建立了我們新的出發點,之後的發展都將以這些為基礎。 」
Pinterest呈現給每個使用者的都是流暢美觀的網頁設計,而對網路構架程式師來說,Pinterest的代碼編輯也是一個值得學習的寶庫。
Weiner自稱「最中意的還是最原始的note.txt檔,稱得上是Pinterest的阿波羅13號登月表(最原始的計畫書),這些檔記錄了如何搭建伺服器及解決問題的方法。 」
(via readwhite 譯/快鯉魚)