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