Twitter也在玩BT 最大微博站點程序部署技術探秘
對于網(wǎng)站經(jīng)營者、創(chuàng)業(yè)者來說,“擴展性問題”是在網(wǎng)站流量成長過程中勢必會面對的問題,如何建立一個具有可擴展性的架構(scalable architecture),是在規(guī)劃網(wǎng)站過程中不可或缺的專業(yè)知識。
51CTO推薦閱讀:大型B2C網(wǎng)站高性能可伸縮架構技術探秘
如果服務本身的功能性合乎使用者需求,卻因為架構、程序效率、數(shù)據(jù)庫效率的問題導致服務器增多出現(xiàn)瓶頸,如何評估、分析網(wǎng)站效能瓶頸?理清問題后如何找出對應的解決方案,可以思考的相關議題包括:
◆如何有效率地理清問題?從客戶端端的數(shù)據(jù)(讀取時間)或是從服務器端的log日志、硬件的負載率?
◆網(wǎng)站效能瓶頸是出現(xiàn)在Client或Server端?是數(shù)據(jù)庫撐不住還是程序的執(zhí)行效率不好?是Request太多還是日志太大?
◆Web Server、DB server如何擠出更多的資源?擠不出資源后如何擴展?擴展后會遇到什么問題?
參考國外知名網(wǎng)站在架構上的作法是一種很好方式,盡管同那些網(wǎng)站的服務的規(guī)模可能無法相比,但根據(jù)正確的作法與經(jīng)驗踏出對的***步,肯定是有助于突破網(wǎng)站運營效率的瓶頸。
Twitter身為全球***的微博服務站點,運用數(shù)千臺的服務器提供服務給來自全球各地的使用者,然而每當網(wǎng)站內(nèi)容、應用程序有更新時,如何盡可能地在越短的時間內(nèi)將應用程序部署(deploy)到所有的服務器當中是相當重要的課題。
Twitter在早期便依賴Capistrano來進行應用程序的部署,每當有新版本的程序需要釋出時,Capistrano會根據(jù)預設好的各種設定、流程到Twitter所有的服務器上進行更新,在過去服務器還不多的情況下,一切都很美好。但隨著Twitter服務器數(shù)量的成長,到了幾百臺服務器時,事情已經(jīng)不再像過去一樣美好,甚至到后來擁有數(shù)千臺服務器時,更新的時間會耗費40分鐘。
Twitter針對這個問題,認為問題的關鍵在于:使用集中式的系統(tǒng),也就是所有的服務器要輪流排隊到同一臺版本控制系統(tǒng)上進行程序更新。Twitter最初的想法是將版本控制系統(tǒng)也做出分散式的架構,服務器的程序代碼更新就可以分散到不同的機器來壓縮部署時間,但事實上版本控制系統(tǒng)即使分散在多臺服務器上,也同樣會有這些服務器要更新日志的時間。因此Twitter發(fā)現(xiàn),需要一個完全去中心化、***像是BitTorrent,利用P2P的特色讓所有的節(jié)點都可以協(xié)助進行程序的更新。
以結果來看,在采用了BitTorrent的方式來更新服務器后,部署的時間從40分鐘大幅減少到只要12秒鐘!實在是非常驚人的改善,數(shù)千臺服務器的程序代碼居然只要短短12秒鐘就能運行完成。
Twitter也將此次部署流程改善的成果分享出來,叫做Murder,如果對于技術細節(jié)有興趣的讀者,可以再進行深入的研究,筆者簡單摘錄幾個重點如下:
◆Murder是以BitTornado為基礎開發(fā)出來的(BitTornado是某一種BitTorrent client);
◆Murder的定位是協(xié)助我們快速的將日志部署到大批服務器上;
◆利用BitTorrent的部署方式可避免防火墻的問題、擁有非常快的傳輸速度;
◆實際的部署程序代碼是搭配Capistrano進行的,網(wǎng)頁上有很清楚的說明。
【編輯推薦】