牛昆亮 張順利 王麗
摘 要:應(yīng)用服務(wù)器的過載和拒絕服務(wù)越來越頻繁,是網(wǎng)站需要擴(kuò)容的信號。此時(shí)網(wǎng)站必須進(jìn)行擴(kuò)容,以留住用戶、提高用戶體驗(yàn)。本文討論通過升級硬件擴(kuò)容和升級為分布式部署架構(gòu)進(jìn)行擴(kuò)容的優(yōu)缺點(diǎn)和選擇條件。
關(guān)鍵詞:服務(wù)器;數(shù)據(jù)庫;分布式部署;擴(kuò)容
當(dāng)網(wǎng)站訪問變得越來越慢時(shí),就是告訴我們網(wǎng)站需要擴(kuò)容了。為了留住用戶,提高用戶體驗(yàn),我們可以從以下幾個方面,對網(wǎng)站進(jìn)行擴(kuò)容。
1 通過升級硬件設(shè)備來擴(kuò)容
升級硬件無疑是最直接的方案。對高訪問量的網(wǎng)站而言,CPU、內(nèi)存、網(wǎng)絡(luò)帶寬以及數(shù)據(jù)庫的TPS性能,直接制約著網(wǎng)站的并發(fā)訪問量,決定了客戶的體驗(yàn)。
升級硬件,也是最簡單的方案。只需要把軟件在新的硬件上重新部署,然后啟用。便完成了整個升級過程。
1.1 升級為更高性能主機(jī)
主機(jī)性能,主要由主機(jī)的CPU頻率、內(nèi)存大小和速度,磁盤IO的性能等決定。客戶體驗(yàn)的提高,應(yīng)著重解決網(wǎng)站的瓶頸。
常見的網(wǎng)站,一般由數(shù)據(jù)庫和網(wǎng)站組成。對于以數(shù)據(jù)庫為核心的數(shù)據(jù)流網(wǎng)站,一般來講應(yīng)該重點(diǎn)考察升級數(shù)據(jù)庫服務(wù)器的性能。對于以業(yè)務(wù)計(jì)算、尤其是科學(xué)計(jì)算較多的情景,應(yīng)該重點(diǎn)考察網(wǎng)站的CPU等。
找到瓶頸,對瓶頸擴(kuò)容升級后,網(wǎng)絡(luò)性能會顯著的提高,改善用戶體驗(yàn)。
1.2 增加網(wǎng)站出口的帶寬
網(wǎng)絡(luò)帶寬的不足也會造成網(wǎng)絡(luò)訪問緩慢。表現(xiàn)為網(wǎng)站和數(shù)據(jù)庫服務(wù)器的壓力較小,而網(wǎng)站網(wǎng)絡(luò)負(fù)載已經(jīng)達(dá)到外網(wǎng)出口的理論速度。此時(shí)應(yīng)該向SP申請更高的帶寬來解決問題。
2 網(wǎng)站升級為分布式部署架構(gòu)
分布式部署是目前的主流技術(shù),其特點(diǎn)是以量取勝,從而突破單一硬件的性能限制。分布式系統(tǒng)的特性,可以簡單的實(shí)現(xiàn)業(yè)務(wù)的不間斷運(yùn)行。可以提供7*24小時(shí)的服務(wù)。
2.1 網(wǎng)絡(luò)流量分流
目前常用的分流技術(shù)有以下幾種。
⑴網(wǎng)絡(luò)負(fù)載均衡。此處的負(fù)載均衡,是一種分工合作的的形式。用戶訪問主服務(wù)器時(shí),由主服務(wù)器依算法把用戶跳轉(zhuǎn)到各臺成員主機(jī),而實(shí)現(xiàn)流量分?jǐn)偂?/p>
⑵使用DNS輪詢技術(shù)。大多域名注冊商都支持多條A記錄的解析,其實(shí)這就是DNS輪詢,DNS服務(wù)器將解析請求按照A記錄的順序,逐一分配到不同的IP上,這樣就完成了簡單的負(fù)載均衡。
2.2 業(yè)務(wù)計(jì)算量分流
⑴使用F5 BIG-IP LTM(本地流量管理器)進(jìn)行分流。該產(chǎn)品是流量和內(nèi)容進(jìn)行管理分配的設(shè)備。它提供12種靈活的算法將數(shù)據(jù)流有效地轉(zhuǎn)發(fā)到它所連接的服務(wù)器群。而面對用戶,只是一臺虛擬服務(wù)器。用戶此時(shí)只需訪問定義于BIG-IP LTM上的一臺服務(wù)器,即虛擬服務(wù)器(Virtual Server)。但他們的數(shù)據(jù)流卻被BIG-IP靈活地均衡到所有的物理服務(wù)器。
⑵使用反向代理進(jìn)行業(yè)務(wù)分流。反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受Internet上的網(wǎng)絡(luò)連接請求,然后將這些請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給Internet上請求連接的客戶端。
2.3 網(wǎng)站進(jìn)行分地域部署和業(yè)務(wù)切分
⑴內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)。CDN的通俗理解就是網(wǎng)站加速,CPU均衡負(fù)載,可以解決跨運(yùn)營商,跨地區(qū),服務(wù)器負(fù)載能力過低,帶寬過少等帶來的網(wǎng)站打開速度慢等問題。
⑵地域分站點(diǎn)。在不同的城市托管不同的主機(jī),依IP所屬城市自行跳轉(zhuǎn)到各自的站點(diǎn)。每個站點(diǎn)還可以提供地域相關(guān)的內(nèi)容和服務(wù)。
3 擴(kuò)容常見問題
3.1 應(yīng)該處理好失效轉(zhuǎn)移(failover),提高用戶體驗(yàn)
當(dāng)某個成員服務(wù)器宕機(jī)時(shí),無法為終端用戶提供服務(wù),系統(tǒng)應(yīng)該自動地切換,把終端用戶分派到其它正常的服務(wù)器上,為其感覺不到服務(wù)器已經(jīng)更新,從而實(shí)現(xiàn)不間斷的服務(wù)、提高用戶體驗(yàn)。常用的失效轉(zhuǎn)移監(jiān)控技術(shù),有心跳線等。
3.2 保持好用戶會話的信息,無間斷為用戶服務(wù)
分布式部署環(huán)境下,常用的保持用戶會話狀態(tài)的方法有:
⑴使用共享式Session保存會話信息。共享式Session,是指多個成員服務(wù)器,把會話信息(Session)從本機(jī)的內(nèi)存中取出來,進(jìn)行集中存放。這樣當(dāng)服務(wù)器A宕機(jī)時(shí),服務(wù)器B可以從集中存放處,取出會話信息,得到用戶身份等信息,繼續(xù)為用戶服務(wù)。共享式Session可以存儲在指定的服務(wù)器進(jìn)程中、可以存儲到數(shù)據(jù)庫中、也可以存儲到Nosql內(nèi)存數(shù)據(jù)庫中。因?yàn)闀捫畔⒌募写嫒?,該點(diǎn)成為單點(diǎn)時(shí),會使網(wǎng)站的可靠性降低。所以適用于規(guī)模較小的分布式環(huán)境中。
⑵使用客戶端小甜餅(Client Cookie)保存會話信息。通過把用戶的身份信息通過加密算法轉(zhuǎn)換,然后放在終端瀏覽器中。用戶終端每次訪問服務(wù)器時(shí),都通過HTTP協(xié)議攜帶了該Cookie,服務(wù)器端解析、解密后,得到用戶會話信息,繼續(xù)為用戶提供服務(wù)。該方案屬于用戶會話的分布式存儲,不存在單點(diǎn)問題,可以用在大型的分布式環(huán)境中。
最后,網(wǎng)站系統(tǒng)的擴(kuò)容,應(yīng)該是先找到系統(tǒng)的瓶頸,然后有根據(jù)的擴(kuò)容。才能得到最大的收益投資比,最大化用戶的使用體驗(yàn)。
[參考文獻(xiàn)]
[1]王麗.《淺析提高網(wǎng)站性能的幾種技術(shù)》.
[2]鄧小善.《高訪問量網(wǎng)站性能監(jiān)測與優(yōu)化的設(shè)計(jì)與實(shí)現(xiàn)》.