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






















