基于大并發(fā)量訪問的網(wǎng)站負(fù)載均衡設(shè)計(jì)
互聯(lián)網(wǎng)的迅猛發(fā)展,改變著我們的工作和生活方式。隨著人們對網(wǎng)絡(luò)的依賴越發(fā)強(qiáng)烈,不同行業(yè),不同類別的網(wǎng)站也競相上線。對于通過互聯(lián)網(wǎng)發(fā)布業(yè)務(wù)的組織機(jī)構(gòu)來說,用戶的粘性在一定程度上受到訪問體驗(yàn)的影響。尤其是對于地方行業(yè)和門戶網(wǎng)站、電子商務(wù)網(wǎng)站、論壇等不僅僅是靠流量賺錢的網(wǎng)站,用戶的粘性甚至關(guān)系到網(wǎng)站的生存大計(jì)。網(wǎng)站擁有的忠誠用戶越多,所銷售的產(chǎn)品、提供的服務(wù)就越容易推送出去,網(wǎng)站的回頭率提高了,用戶轉(zhuǎn)化率才會(huì)跟著提升。由此可見,以Web為核心的業(yè)務(wù)平臺(tái),對于網(wǎng)站的穩(wěn)定性、持久性等方面,通常都有著比較高的要求。
隨著線上業(yè)務(wù)的發(fā)展,網(wǎng)站面臨高并發(fā)訪問和海量數(shù)據(jù)流的情況屢見不鮮,系統(tǒng)中的各個(gè)核心設(shè)備所負(fù)擔(dān)的處理能力和計(jì)算強(qiáng)度也會(huì)相應(yīng)增大,使得單一設(shè)備根本無法承擔(dān)。如果淘汰現(xiàn)有設(shè)備去做硬件升級(jí),將造成資源的浪費(fèi),而且如果以后面臨業(yè)務(wù)量的激增,又不得不再次投入高額的硬件升級(jí)成本,甚至性能再卓越的設(shè)備也不能滿足將來業(yè)務(wù)量的需求。在此種情況下,單純的網(wǎng)絡(luò)架構(gòu)就顯得捉襟見肘了,而負(fù)載均衡機(jī)制則應(yīng)運(yùn)而生。服務(wù)器負(fù)載均衡(Server Load Balancing),其原理是將工作任務(wù)相對均衡地分?jǐn)偟蕉鄠€(gè)節(jié)點(diǎn)(服務(wù)器集群)上執(zhí)行,從而提升整個(gè)業(yè)務(wù)系統(tǒng)的性能。諸如LVS、HA Proxy等開源軟件,可以在現(xiàn)有的網(wǎng)絡(luò)基礎(chǔ)架構(gòu)之上建立負(fù)載均衡機(jī)制,以滿足業(yè)務(wù)增長的需要,對于網(wǎng)站的來說不啻為一種廉價(jià)且有效的擴(kuò)展性選擇。
此外,針對互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸?shù)母鞣N環(huán)節(jié),CDN(Content Delivery Network)內(nèi)容交付網(wǎng)絡(luò)的應(yīng)對方案也適時(shí)出現(xiàn)。CDN對網(wǎng)站內(nèi)容的處理,主要在于利用緩存技術(shù)將靜態(tài)內(nèi)容快速分發(fā)至邊緣節(jié)點(diǎn),通過讓用戶就近取得所需內(nèi)容,解決 Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問網(wǎng)站的響應(yīng)速度,同時(shí)也減輕了網(wǎng)站自身系統(tǒng)的性能壓力。
現(xiàn)在看來,貌似我們已經(jīng)解決了網(wǎng)站發(fā)布所面臨的所有瓶頸了,但是實(shí)際上問題遠(yuǎn)沒有那么簡單。一方面,對于數(shù)據(jù)交互比較頻繁的動(dòng)態(tài)內(nèi)容而言,CDN只能在其中心節(jié)點(diǎn)與源數(shù)據(jù)節(jié)點(diǎn)(網(wǎng)站自身系統(tǒng))之間做有限的傳輸優(yōu)化,加速效果遠(yuǎn)不如靜態(tài)內(nèi)容做緩存分發(fā)那般明顯。另一方面,隨著線上業(yè)務(wù)、電子商務(wù)等領(lǐng)域的Web內(nèi)容呈現(xiàn)日漸豐富,涌現(xiàn)出了愈發(fā)復(fù)雜的業(yè)務(wù)交付需求,這對網(wǎng)站的發(fā)布方而言也意味著將面臨更多的挑戰(zhàn)。因此,當(dāng)我們拋開網(wǎng)絡(luò)的傳輸質(zhì)量、帶寬擁塞程度等外界因素來看的話,又不得不正視一個(gè)問題--影響網(wǎng)站訪問效果的最大瓶頸還是在于源數(shù)據(jù)節(jié)點(diǎn)自身的處理性能。
以電子商務(wù)網(wǎng)站這種典型的大型高并發(fā)訪問量的線上業(yè)務(wù)為例,其性能瓶頸最容易出現(xiàn)在聯(lián)機(jī)事務(wù)處理(OLTP)的環(huán)節(jié),例如訪問用戶進(jìn)行條目查閱、訂單確認(rèn)等場景。產(chǎn)生這種情況的原因在于,網(wǎng)站的運(yùn)營方出于數(shù)據(jù)安全等因素的考慮,是不可能將后臺(tái)數(shù)據(jù)庫等資源完全向CDN服務(wù)商開放的。由此造成,所有涉及到此類動(dòng)態(tài)資源的訪問就會(huì)頻繁地經(jīng)由CDN網(wǎng)絡(luò)的邊緣節(jié)點(diǎn)上溯到源數(shù)據(jù)節(jié)點(diǎn)(即網(wǎng)站自身系統(tǒng))來請求實(shí)時(shí)地響應(yīng)處理。在保障數(shù)據(jù)安全性的前提下,要解決網(wǎng)站的性能瓶頸問題,必須提高源數(shù)據(jù)節(jié)點(diǎn)的業(yè)務(wù)處理效率,因此我們還得從網(wǎng)絡(luò)架構(gòu)的設(shè)計(jì)著手。前文提到過,單臺(tái)服務(wù)器的處理能力有限,當(dāng)突發(fā)訪問量驟然增加的時(shí)候,其性能就會(huì)成為整個(gè)系統(tǒng)的瓶頸,導(dǎo)致用戶訪問的響應(yīng)緩慢甚至網(wǎng)站服務(wù)器癱瘓。為了滿足高并發(fā)量訪問的需求,可以通過軟件手段實(shí)現(xiàn)服務(wù)器集群的多機(jī)負(fù)載均衡效果。然而,這種軟件式的負(fù)載均衡有一個(gè)不可避免的缺點(diǎn),那便是系統(tǒng)的穩(wěn)定性和性能方面受限于軟件所安裝運(yùn)行的服務(wù)器,一旦訪問量過大時(shí),該臺(tái)服務(wù)器就恰恰成了整個(gè)系統(tǒng)的瓶頸所在。
就一個(gè)發(fā)布線上業(yè)務(wù)的網(wǎng)站系統(tǒng)而言,前臺(tái)的Web服務(wù)器由于有外部的CDN服務(wù)作為靜態(tài)內(nèi)容的分流渠道,尚不至于產(chǎn)生明顯的系統(tǒng)瓶頸,而后臺(tái)處理動(dòng)態(tài)內(nèi)容的核心業(yè)務(wù)系統(tǒng)就難免會(huì)感到壓力巨大了。具體分析的話,當(dāng)前的業(yè)務(wù)系統(tǒng)多采用客戶端--中間件--數(shù)據(jù)庫的三層結(jié)構(gòu)設(shè)計(jì),通常多是利用WebLogic中間件軟件自帶的服務(wù)器集群功能來滿足高性能需求,其中一臺(tái)WebLogic Server作為管理服務(wù)器負(fù)責(zé)任務(wù)調(diào)度,實(shí)現(xiàn)負(fù)載均衡效果。但是,當(dāng)訪問用戶到達(dá)一定數(shù)目的時(shí)候,由于該服務(wù)器自身的硬件性能瓶頸,會(huì)造成整個(gè)系統(tǒng)的聯(lián)機(jī)事務(wù)處理效率低下;而且由于WebLogic自身設(shè)計(jì)的原因,當(dāng)任務(wù)量達(dá)到一定閥值的時(shí)候,即便是升級(jí)服務(wù)器硬件性能也無法提升其進(jìn)行負(fù)載均衡調(diào)度的能力。
針對上述情況,最好的辦法莫過于采用硬件負(fù)載均衡設(shè)備,以解決數(shù)據(jù)流量過大、任務(wù)負(fù)荷過重所產(chǎn)生的系統(tǒng)瓶頸問題。在這一方面,業(yè)內(nèi)知名的硬件廠商有F5、深信服等等。值得一提的是,深信服的應(yīng)用交付產(chǎn)品除具有傳統(tǒng)負(fù)載均衡功能外,其獨(dú)有的單邊加速技術(shù),能夠在跨運(yùn)營商網(wǎng)絡(luò)環(huán)境中,通過廣域網(wǎng)傳輸文件及應(yīng)用的訪問時(shí)間減少30%以上,極大提高了用戶體驗(yàn)。雖然部署硬件設(shè)備意味著一筆額外的開支,但是它給網(wǎng)站的整體業(yè)務(wù)系統(tǒng)所帶來的性能提升,卻是傳統(tǒng)的軟件方案所望其項(xiàng)背的。除此之外,專業(yè)的硬件設(shè)備所能提供的負(fù)載調(diào)度算法和健康檢查機(jī)制也更加豐富、全面,有助于進(jìn)一步提升關(guān)鍵業(yè)務(wù)發(fā)布的穩(wěn)定性和持久性,這對于高并發(fā)量的大型網(wǎng)站而言是極具價(jià)值的。當(dāng)然,對于不同規(guī)模、不同業(yè)務(wù)的網(wǎng)站而言,沒有一概而論的設(shè)計(jì)標(biāo)準(zhǔn),文中提到的技術(shù)手段都有著相應(yīng)的適用場景,這就需要網(wǎng)站的架構(gòu)師們做具體的規(guī)劃了。