仲介交易 SEO診斷 淘寶客 雲主機 技術大廳
動態應用,是相對於網站靜態內容而言,是指以c/c++、php、JAVA、perl、.net等伺服器端語言開發的網路應用軟體,比如論壇、網路相冊、交友、BLOG等常見應用。 動態應用系統通常與資料庫系統、緩存系統、分散式存儲系統等密不可分。
大型動態應用系統平臺主要是針對于大流量、高併發網站建立的底層系統架構。 大型網站的運行需要一個可靠、安全、可擴展、易維護的應用系統平臺做為支撐,以保證網站應用的平穩運行。
大型動態應用系統又可分為幾個子系統:
1)Web前端系統
2)負載均衡系統
3)資料庫集群系統
4)緩存系統
5)分散式存儲系統
6)分散式伺服器管理系統
7)代碼分發系統
Web前端系統
結構圖:
為了達到不同應用的伺服器共用、避免單點故障、集中管理、統一配置等目的,不以應用劃分伺服器,而是將所有伺服器做統一使用,每台伺服器都可以對多個 應用提供服務,當某些應用訪問量升高時, 通過增加伺服器節點達到整個伺服器集群的性能提高,同時使他應用也會受益。 該Web前端系統基於 Apache/LigHTTPd/Eginx等的虛擬主機平臺,提供PHP程式運行環境。 伺服器對開發人員是透明的,不需要開發人員介入伺服器管理
負載均衡系統
負載均衡系統分為硬體和軟體兩種。 硬體負載均衡效率高,但是價格貴,比如F5等。 軟體負載均衡系統價格較低或者免費,效率較硬體負載均衡系統低,不過對於流量一般或稍大些網站來講也足夠使用,比如lvs, nginx。 大多數網站都是硬體、軟體負載均衡系統並用。
資料庫集群系統
結構圖:
由於Web前端採用了負載均衡集群結構提高了服務的有效性和擴充性,因此資料庫必須也是高可靠的,才能保證整個服務體系的高可靠性,如何構建一個高可靠的、可以提供大規模併發處理的資料庫體系?
我們可以採用如上圖所示的方案:
1) 使用 MySQL 資料庫,考慮到Web應用的資料庫讀多寫少的特點,我們主要對讀資料庫做了優化,提供專用的讀資料庫和寫資料庫,在應用程式中實現讀操作和寫操作分別訪問不同的資料庫。
2) 使用 MySQL Replication 機制實現快速將主庫(寫庫)的資料庫複製到從庫(讀庫)。 一個主庫對應多個從庫,主庫資料即時同步到從庫。
3) 寫資料庫有多台,每台都可以提供多個應用共同使用,這樣可以解決寫庫的性能瓶頸問題和單點故障問題。
4) 讀資料庫有多台,通過負載均衡設備實現負載均衡,從而達到讀資料庫的高性能、高可靠和高可擴充性。
5) 資料庫伺服器和應用伺服器分離。
6) 從資料庫使用BigIP做負載均衡。
緩存系統
緩存分為檔案快取、記憶體緩存、資料庫緩存。 在大型Web應用中使用最多且效率最高的是記憶體緩存。 最常用的記憶體緩存工具是Memcached。 使用正確的緩存系統可以達到實現以下目標:
1、使用緩存系統可以提高訪問效率,提高伺服器吞吐能力,改善使用者體驗。
2、減輕對資料庫及存儲集伺服器的訪問壓力。
3、Memcached伺服器有多台,避免單點故障,提供高可靠性和可擴充性,提高性能。
分散式存儲系統
結構圖:
Web系統平臺中的存儲需求有下面兩個特點:
1) 存儲量很大,經常會達到單台伺服器無法提供的規模,比如相冊、視頻等應用。 因此需要專業的大規模存儲系統。
2) 負載均衡cluster中的每個節點都有可能訪問任何一個資料物件,每個節點對資料的處理也能被其他節點共用,因此這些節點要操作的資料從邏輯上看只能是一個整體,不是各自獨立的資料資源。
因此高性能的分散式存儲系統對於大型網站應用來說是非常重要的一環。 (這個地方需要加入對某個分散式存儲系統的簡單介紹。 )
分散式伺服器管理系統
結構圖:
隨著網站訪問流量的不斷增加,大多的網路服務都是以負載均衡集群的方式對外提供服務,隨之集群規模的擴大,原來基於單機的伺服器管理模式已經不能夠滿足我們的需求,新的需求必須能夠集中式的、分組的、批量的、自動化的對伺服器進行管理 ,能夠批量化的執行計畫任務。
在分散式伺服器管理系統軟體中有一些比較優秀的軟體,其中比較理想的一個是Cfengine。 它可以對伺服器進行分組,不同的分組可以分別定制 系統設定檔、計畫任務等配置。 它是基於C/S 結構的,所有的伺服器配置和管理腳本程式都保存在Cfengine Server上,而被管理的伺服器運行著 Cfengine Client 程式,Cfengine Client通過SSL加密的連接週期性向伺服器端發送請求以獲取最新的設定檔和管理命令、腳本程式、補丁安裝等任務。
有了Cfengine這種集中式的伺服器管理工具,我們就可以高效的實現大規模的伺服器集群管理,被管理伺服器和 Cfengine Server 可以分佈在任何位置,只要網路可以連通就能實現快速自動化的管理。
代碼發佈系統
結構圖:
隨著網站訪問流量的不斷增加,大多的網路服務都是以負載均衡集群的方式對外提供服務,隨之集群規模的擴大,為了滿足集群環境下程式碼的批量分發和更新,我們還需要一個程式碼發佈系統。
這個發佈系統可以幫我們實現下面的目標:
1) 生產環境的伺服器以虛擬主機方式提供服務,不需要開發人員介入維護和直接操作,提供發佈系統可以實現不需要登陸伺服器就能把程式分發到目標伺服器。
2) 我們要實現內部開發、內部測試、生產環境測試、生產環境發佈的4個開發階段的管理,發佈系統可以介入各個階段的代碼發佈。
3) 我們需要實現原始程式碼管理和版本控制,SVN可以實現該需求。
這裡面可以使用常用的工具Rsync,通過開發相應的腳本工具實現伺服器集群間代碼同步分發。