負載均衡與集羣之apache+tomcat

看完了有一本書,就應該有所收穫,有所總結,最近把《大型網站技術架構》一書給看完了,給人的印象實在深刻,再加上之前也搞過書本上講的反向代理和負載均衡以及session獨立存儲和緩存,因此書本看起來還是挺通俗易懂的,而且作者李智慧給人的印象(書本)也挺深刻的,我從這本書中也學到了許多,瞭解的許多,但是理解還是比較抽象的,寫出來纔是真正的理解,因此準備寫一系列的博客來介紹和加深理解大型網站技術架構。

        說道大型網站,就的先說大型網站的特點:高併發,大流量,高可用,海量數據等。下面就說說大型網站的架構演化過程吧。

1、初始階段的網站架構

            初始階段都比較簡單,通常一臺服務器就可以搞定一個網站了,看圖。

2、應用服務和數據服務分離

        隨着網站業務的發展,一臺服務器逐漸不能滿足需求;這時候就需要將應用和數據分離,如圖。

3、使用緩存改善網站性能

        毫無疑問,現在的網站基本上都會使用緩存,即:80%的業務訪問都會集中在20%的數據上。

4、使用應用服務器集羣改善網站的併發處理能力

         因爲單一應用服務器能夠處理的請求連接有限,在網站訪問高峯時期,應用服務器會成爲整個網站的瓶頸。因此使用負載均衡處理器勢在必然。通過負載均衡調度服務器,可將來自瀏覽器的訪問請求分發到應用的集羣中的任何一臺服務器上。

 

5、數據庫讀寫分離

         當用戶達到一定規模後,數據庫因爲負載壓力過高而成爲網站的瓶頸。而目前主流的數據庫都提供主從熱備功能,通過配置兩臺數據庫主從關係,可以將一臺數據庫的數據更新同步到另一臺服務器上。網站利用數據庫這一功能實現數據庫讀寫分離,從而改善數據庫負載壓力。

 

 

6、使用反向代理和CDN加上網站相應

       提高網站的訪問速度,主要手段有使用CDN和反向代理。

      CDN和反向代理的基本原理都是緩存,區別在於CDN部署在網絡提供商的機房,而反向代理是部署在網站的中心機房,當用戶請求到達中心機房後,首先訪問的反向代理,如果反向代理緩存着用戶請求的資源,則直接返回給用戶。

7、使用分佈式文件系統和分佈式數據庫系統

    任何強大的單一服務器都滿足不了大型網站持續增長的業務需求。

     分佈式數據庫時網站數據庫拆分的最後手段,只用在單表數據規模非常大的時候才使用。不到不得已時,網站更常用的數據庫拆分手段是業務拆分,將不同業務的數據部署在不同的物理服務器上

 

8、使用NoSQL和搜索引擎

       搜素引擎也基本已經形成現在大型網站必須提供的功能了,網站需要採用一些非關係數據庫技術如NoSQL和非數據庫查詢技術如搜索引擎。

 

9、業務拆分

        大型網站爲了應對日益複雜的業務場景,通過使用分而治之的手段將真個網站業務拆分成不同的產品線。

         具體到技術上,也會根據產品線話費,將一個網站拆分成許多不同的應用,每個應用獨立部署維護。應用之間可以通過超鏈接建立管理,也可以通過消息隊列進行數據分發,當然最多的還是通過訪問同一個數據存儲系統來構成一個關聯的完整系統。

 

 

10、分佈式服務

       由於每一個應用系統都需要執行許多相同的業務操作,比如用戶管理,session管理,那麼可以將這些公用的業務提取出來,獨立部署。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章