天天看點

大型網站技術架構 讀書筆記2.3 核心架構要素之可伸縮 三 網站的伸縮性架構

三 網站的伸縮性架構

  伸縮性:不改變網站的軟硬體設計,僅通過改變部署的伺服器數量就可以擴大或縮小網站的服務處理能力。主要方式就是分布式部署和叢集。

  叢集作用與使用條件:使用伺服器叢集,通過增加伺服器數量來增強整個叢集的處理能力。前提是在技術上實作叢集中伺服器數量與處理能力的線性關系。

  網站架構的伸縮性設計:網站架構的伸縮性設計分為兩種:根據功能進行實體分離實作伸縮;單一功能通過叢集實作伸縮。在網站發展初期,使用前者;對于大型網站,主要使用後者。

3.1 應用伺服器叢集的伸縮性設計

  應用伺服器是無狀态的,其通過負載均衡實作其伸縮性設計,将使用者請求進行分發,下面介紹幾種負載均衡技術:

  1.HTTP重定向負載均衡:使用HTTP重定位伺服器接收使用者HTTP請求,計算得到真實Web伺服器位址,并發送HTTP重定向響應傳回給客戶浏覽器。缺點:1.需要兩次請求才能完成一次通路;2. HTTP重定向伺服器可能成為瓶頸。

  2. DNS域名解析負載均衡:利用DNS處理域名解析請求的同時進行負載均衡處理。缺點:解決1中問題的同時引入新缺點——控制權位于域名服務商,DNS解析記錄更改緩慢。該方式一般用于大型網站的第一級負載均衡手段。

  3.反向代理負載均衡:利用反向代理伺服器提供緩存的同時提供負載均衡功能。這裡Web伺服器僅在内部被反向代理通路,無需外部IP位址;而反向代理伺服器則具有雙網卡和内外兩套IP位址;該方法作用于HTTP協定層面,也稱為應用層負載均衡。

  4.IP負載均衡:在網絡層通過修改請求目标位址失效負載均衡,與3中一樣,負載均衡伺服器為中介。

  5.資料鍊路層負載均衡:在4的情形下,由Web伺服器直接傳回響應給用戶端,通過在資料鍊路層修改mac位址實作此時機房中所有伺服器IP位址一緻,僅mac位址不同。該方式也稱三角傳輸方式,大型網站中最為常用。

  6. 負載均衡算法

  負載均衡伺服器的實作分為兩步:首先根據負載均衡算法和Web伺服器清單計算得到叢集中一台Web伺服器的位址;然後将請求資料發送到該位址對應的Web伺服器上。對于後者,前面已經講了5種方法。下面介紹下前者。負載均衡算法分類:1.輪詢;2.權重輪詢;3.随機;4.最少連接配接;5.原位址散列。

3.2 分布式緩存叢集的伸縮性設計

  設計目标:在加入新的緩存伺服器後,整個叢集中原有的緩存資料盡可能還能被通路到。

  算法實作:使用分布式緩存的一緻性Hash算法——使用一緻性Hash環實作KEY到緩存伺服器的Hash映射。這塊可以直接點選超連結,不再累述。

3.3 資料存儲伺服器叢集的伸縮性設計

  同樣是資料存儲,資料存儲伺服器叢集相比緩存伺服器對資料的持久性和可用性有更高的要求。下面分别從關系資料庫和NoSQL資料庫說明資料存儲伺服器叢集的伸縮性設計。

3.3.1 關系資料庫叢集的伸縮性設計

  主要采用讀寫分離——主從模式,分庫——業務分割,還有分片。這裡以Cobar為例,這個給個超連結:阿裡開源Mysql分布式中間件:Cobar

3.3.2 NoSQL資料庫的伸縮性設計

  NoSQL:主要指非關系的、分布式的資料庫設計模式;是關系資料庫的補充而不是替代。NoSQL資料庫産品一般都放棄了關系型資料庫的兩大重要基礎——以關系代數為基礎的結構化查詢語句和事務一緻性保證(ACID)。這裡,使用最廣泛的是HBase:Hbase原理、基本概念、基本架構

繼續閱讀