天天看點

網絡層

單個系統的高可用和高性能并不等于整體業務的高可用和高性能,網際網路業務的高性能和高可用需要從更高的角度去設計,這個高點就是“網絡”。這裡的網絡強調的是站在網絡層的角度整體設計架構,而不是某個具體網絡的搭建。

負載均衡就是将請求均衡地配置設定到多個系統上。使用負載均衡的原因也很簡單:每個系統的處理能力是有限的,為了應對大容量的通路,必須使用多個系統。

DNS是最簡單也是最常見的負載均衡方式,一般用來實作地理級别的均衡。

比如,北方的使用者通路北京的機房,南方的使用者通路深圳的機房。

DNS負載均衡也可以叫做鍊路負載均衡,示意圖如下:

網絡層

DNS負載均衡實作簡單、成本低,但也存在粒度太粗、負載均衡算法少等缺點。

優點:

簡單、成本低:負載均衡工作交給DNS伺服器處理,無須自己開發或者維護負載均衡裝置。

就近通路,提升通路速度:DNS解析時可以根據請求來源IP,解析成距離使用者最近的伺服器位址,可以加快通路速度,改善性能。

缺點:

DNS緩存的時間比較長,即使将某台業務機器從DNS伺服器上删除,由于緩存的原因,還是有很多使用者會繼續通路已經被删除的機器。

DNS不夠靈活。DNS不能感覺後端伺服器的狀态,隻能根據配置政策進行負載均衡,無法做到更加靈活的負載均衡政策。比如說某台機器的配置比其他機器要好很多,理論上來說應該多配置設定一些請求給它,但DNS無法做到這一點。

用于同一地點内機器級别的負載均衡

Nginx簡單介紹

CDN是為了解決使用者網絡通路時的“最後一公裡”效應,本質上是一種“以空間換時間”的加速政策,即:将内容緩存在離使用者最近的地方,使用者通路的是緩存的内容,而不是站點實時的内容。

通過在現有的Internet中增加一層新的網絡架構,使使用者可以就近取得所需内容,提高使用者通路網站的響應速度。

最初CDN都以緩存網站中的靜态資料為主,如 CSS、JS、圖檔和靜态頁面等資料;如今在通路量驕傲的網站、直播、視訊平台均用CDN網絡加速技術。

CDN如何實作加速?

  通常情況下,我們所要的資料都是從主伺服器中擷取,但假如我們的主伺服器在南方,而通路使用者在北方,那麼通路速度就會相對變慢,變慢的原因有很多,例如傳輸距離,營運商,帶寬等等因素,而使用CDN技術的話,我們會将CDN節點分布在各地,當使用者發送請求到達伺服器時,伺服器會根據使用者的區域資訊,為使用者配置設定最近的CDN伺服器。

CDN資料從哪裡來?

  複制,緩存,CDN伺服器可以在使用者請求後緩存檔案,也可以主動抓取主伺服器内容。

CDN解決的問題

  CDN是一個經政策性部署的整體系統,從技術上全面解決由于網絡帶寬小、使用者通路量大、網點分布不均而産生的使用者通路網站響應速度慢的根本原因。

網絡層

1.使用者向浏覽器輸入www.web.com這個域名,浏覽器第一次發現本地沒有dns緩存,則向網站的DNS伺服器請求;

2.網站的DNS域名解析器設定了CNAME,指向了www.web.51cdn.com,請求指向了CDN網絡中的智能DNS負載均衡系統;

3.智能DNS負載均衡系統解析域名,把對使用者響應速度最快的IP節點傳回給使用者;

4.使用者向該IP節點(CDN伺服器)送出請求;

5.由于是第一次通路,CDN伺服器會向原web站點請求,并緩存内容;

6.請求結果發給使用者。

同城多機房

同城的兩個機房通過一根專線連接配接,應對機房級别的最優架構

這種對業務影響小,但投入大

跨城多機房

機房間通過網絡進行資料備份(MySQL主備複制)

異地距離遠帶來的網絡延遲問題,容易導緻資料不一緻。

需要考慮的是資料是否要求強一緻性!!不适用于強一緻性的需求。

例如:微網誌類産品,B關注了A使用者,A使用者在北京機房發出,B在廣州機房不必立刻看到A使用者發的微網誌,等10分鐘也行。

跨國多機房

和跨城多機房類似,隻是地理上分布更遠,時延更大。由于時延太大和使用者跨國通路實在太慢,跨國多機房一般僅用于備份和服務本國使用者。

多中心必須以多機房為前提,但難度大

具體來說,組合的基本原則為:

DNS負載均衡用于實作地理級别的負載均衡;

硬體負載均衡用于實作叢集級别的負載均衡;

軟體負載均衡用于實作機器級别的負載均衡。

網絡層

整個系統的負載均衡分為三層:

地理級别負載均衡:www.xxx.com部署在北京、廣州、上海三個機房,當使用者通路時,DNS會根據使用者的地理位置來決定傳回哪個機房的IP,圖中傳回了廣州機房的IP位址,這樣使用者就通路到廣州機房了。

叢集級别負載均衡:廣州機房的負載均衡用的是F5裝置,F5收到使用者請求後,進行叢集級别的負載均衡,将使用者請求發給3個本地叢集中的一個,我們假設F5将使用者請求發給 了“廣州叢集2”。

機器級别的負載均衡:廣州叢集2的負載均衡用的是Nginx,Nginx收到使用者請求後,将使用者請求發送給叢集裡面的某台伺服器,伺服器處理使用者的業務請求并傳回業務響應。

繼續閱讀