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