對于企業來說網站是企業重要的門戶,然而不同企業對于網站服務器托管的方式會隨著企業的需求而變化。
一般來說,大型網站都是從小型網站發展而來,初始階段的網站架構都比較簡單,隨著業務復雜和用戶量的激增,才開始做很多架構上的改進。當它還是小型網站的時候,沒有太多訪客,一般來講只需要一臺服務器就夠了,這時應用程序、數據庫、文件等所有資源都在一臺服務器上。
但隨著網站業務的發展和用戶量的增加,一臺服務器就無法再滿足需求了。大量用戶訪問導致訪問速度越來越慢,而逐漸增加的數據也會導致存儲空間不足。這時就需要將應用和數據分離,應用和數據分離后整個網站使用 3 臺服務器,分別是應用服務器、文件服務器和數據庫服務器。這 3 臺服務器對硬件資源的要求越來越高,它們需要更強大的CPU、更快的磁盤和更大的內存去支撐這些服務器運行。
隨著用戶的持續增加,網站又會一次面臨挑戰:數據庫壓力太大導致整站訪問效率再此下降,用戶體驗受到影響。一個網站,往往大部分的業務訪問集中在 20% 的數據上。就拿微博來說,微博請求量最多的肯定是那些千萬級粉絲的大 V 的微博,而幾乎沒有人去關注那些小號的首頁。我們可以利用這個特點,把這一小部分數據先提前緩存在內存中,而不是每次都去數據庫讀取,這樣就可以減少數據庫的訪問壓力,從而提高整個網站的訪問速度。網站使用的緩存一般分為緩存到應用服務器或者緩存在專門的分布式緩存服務器。緩存到應用服務器的訪問速度快很多,但是受自身內存限制,往往不太適用。遠程分布式緩存使用一個集群專門負責緩存服務,當內存不夠還可以輕松得動態擴容。
使用應用服務器集群改善網站的并發處理能力使用緩存后,數據訪問壓力得到了緩解,但是單一應用服務器能夠處理的請求連接有限,在網站訪問高峰期,應用服務器就成了整個網站的效率瓶頸。當一臺服務器的處理能力和存儲空間不足時,不要嘗試去更換更強大的服務器,對大型網站而言,多么強大的服務器,都滿足不了網站持續增長的業務需求。這種情況下,更恰當的做法是增加一臺服務器分擔原有服務器的訪問及存儲壓力。對網站架構而言,只要能通過增加一臺服務器的方式改善負載壓力,就可以以同樣的方式持續增加服務器不斷改善系統性能,從而實現系統的可伸縮性。應用服務器實現集群是網站可伸縮架構設計中較為簡單成熟的一種。