大型高效能ASP.NET系統架構設計

來源:互聯網
上載者:User

 

大型高效能ASP.NET系統架構設計

  大型Live App系統平台主要是針對於大流量、高並髮網站建立的底層系統架構。大型網站的運行需要一個可靠、安全、可擴充、易維護的應用系統平台做為支撐,以保證網站應用程式的平穩運行。  

  系列文章連結:

  構建高效能ASP.NET網站 開篇

  構建高效能ASP.NET網站之一 剖析頁面的處理過程(前端)

  構建高效能ASP.NET網站之二 最佳化HTTP請求(前端)

  構建高效能ASP.NET網站之三 細節決定成敗

  構建高效能ASP.NET網站 第五章—效能調優綜述(前篇)

  大型高效能ASP.NET系統架構設計  

  構建高效能ASP.NET網站 第五章—效能調優綜述(中篇)

  構建高效能ASP.NET網站 第五章—效能調優綜述(後篇)    

  構建高效能ASP.NET網站 第六章—效能瓶頸診斷與初步調優(上篇)—識別效能瓶頸

  構建高效能ASP.NET網站 第六章—效能瓶頸診斷與初步調優(下前篇)—簡單的最佳化措施

  構建高效能ASP.NET網站 第六章—效能瓶頸診斷與初步調優(下後篇)—減少不必要的請求  

  構建高效能ASP.NET網站 第七章 如何解決記憶體的問題(前篇)—託管資源最佳化—記憶體回收機制深度剖析

  構建高效能ASP.NET網站 第七章 如何解決記憶體的問題(前中篇)—託管資源最佳化—監測CLR效能

 

  大型Live App系統又可分為幾個子系統:

Web前端系統

負載平衡系統

資料庫叢集系統

緩衝系統

分布式儲存系統

分布式伺服器管理系統

代碼分發系統

  Web前端系統

 

 

  為了達到不同應用的伺服器共用、避免單點故障、集中管理、統一配置等目的,不以應用劃分服 務器,而是將所有伺服器做統一使用,每台伺服器都可以對多個應用提供服務,當某些應用訪問量升高時,通過增加伺服器節點達到整個伺服器叢集的效能提高,同時使他應用也會受益。

  該Web前端系統基於IIS/ASP.NET等的虛擬機器主機平台,提供PHP程式運行環境。伺服器對開發人員是透明的,不需要開發人員介入伺服器管理。

  負載平衡系統

 

  負載平衡系統分為硬體和軟體兩種。硬體負載平衡效率高,但是價格貴,比如F5等。軟體負載平衡系統價格較低或者免費,效率較硬體負載平衡系統低,不過對於流量一般或稍大些網站來講也足夠使用,比如lvs,nginx。大多數網站都是硬體、軟體負載平衡系統並用。

  資料庫叢集系統

 

  由於Web前端採用了負載平衡叢集結構提高了服務的有效性和擴充性,因此資料庫必須也是高可靠的才能保證整個服務體系的高可靠性,如何構建一個高可靠的、可以提供大規模並發處理的資料庫體系?

  我們可以採用如所示的方案:

  1)使用SQL資料庫,考慮到Web應用的資料庫讀多寫少的特點,我們主要對讀資料庫做了最佳化,提供專用的讀資料庫和寫資料庫,在應用程式中實現讀操作和寫操作分別訪問不同的資料庫。

  2)使用同步機制實現快速將主庫(寫庫)的資料庫複寫到從庫(讀庫)。一個主庫對應多個從庫,主庫資料即時同步到從庫。

  3)寫資料庫有多台,每台都可以提供多個應用共同使用,這樣可以解決寫庫的效能瓶頸問題和單點故障問題。

  4)讀資料庫有多台,通過負載平衡裝置實現負載平衡,從而達到讀資料庫的高效能、高可靠和高可擴充性。

  5)資料庫伺服器和應用伺服器分離。

  6)從資料庫使用BigIP做負載平衡。

  緩衝系統

 

  緩衝分為檔案快取、記憶體緩衝、資料庫緩衝。在大型Web應用中使用最多且效率最高的是記憶體緩衝。最常用的記憶體緩衝工具是Memcachd。使用正確的緩衝系統可以達到實現以下目標:

  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,通過開發相應的指令碼工具實現伺服器叢集間代碼同步分發。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.