【系統架構】大型網站架構演化歷程(上)

大型網站的技術挑戰主要來自於龐大的用戶,高併發的訪問和海量的數據,任何簡單的業務一旦須要處理數以 P 計的數據和麪對數以億計的用戶,問題就會變得很棘手。大型網站架構主要解決這類問題。本文內容大部分來自《大型網站技術架構》,這本書仍是很值得一看。算法

初級階段的網站架構

再大型的網站都是從小型網站發展而來,小型網站最開始沒有太多人訪問,只須要一臺服務器就綽綽有餘,這時的網站架構以下圖所示:
【系統架構】大型網站架構演化歷程(上)
特色:應用程序、數據庫、文件等全部資源都在一臺服務器上。數據庫

應用服務和數據服務分離

隨着業務的快速發展,一臺服務器已經不能知足需求:愈來愈多的用戶訪問致使性能愈來愈差,愈來愈多的數據致使存儲空間不足。這時就須要將應用和數據分離。應用和數據分離後整個網站將使用3臺服務器:應用服務器、文件服務器和數據庫服務器。這 3 臺服務器根據其服務的需求對硬件資源的要求各不相同:
(1) 應用服務器須要處理大量的業務邏輯,所以須要CPU強大的計算機作服務器;
(2) 數據庫服務器須要快速磁盤檢索和數據緩存,所以須要有高性能磁盤和大內存的計算機作服務器;
(3) 文件服務器須要存儲大量用戶上傳的文件,所以須要有大硬盤的計算機作服務器
此時,網站系統的架構以下圖所示:
【系統架構】大型網站架構演化歷程(上)
應用和數據分離後,不一樣特性的服務器承擔不一樣的服務角色,網站的併發處理能力和數據存儲空間獲得了很大改善,支持網站業務進一步發展。可是隨着用戶逐漸增多,網站又一次面臨挑戰:數據庫壓力太大致使訪問延遲,進而影響整個網站的性能,用戶體驗受到影響。這時須要對網站架構進一步優化。瀏覽器

使用緩存改善網站性能

網站訪問的特色和現實世界的財富分配同樣遵循二八定律:80% 的業務訪問集中在20% 的數據上。既然大部分業務訪問集中在一小部分數據上,那麼若是把這一小部分數據緩存在內存中,就能夠減小數據庫的訪問壓力,提升整個網站的數據訪問速度,改善數據庫的寫入性能了。 網站使用的緩存能夠分爲兩種:緩存在應用服務器上的本地緩存和緩存在專門的分佈式緩存服務器上的遠程緩存。此時網站架構以下所示:
【系統架構】大型網站架構演化歷程(上)緩存

(1) 本地緩存的訪問速度更快一些,可是受應用服務器內存限制,其緩存數據量有限,並且會出現和應用程序爭用內存的狀況。
(2) 遠程分佈式緩存可使用集羣的方式,部署大內存的服務器做爲專門的緩存服務器,能夠在理論上作到不受內存容量限制的緩存服務。
使用緩存後,數據訪問壓力獲得有效緩解,可是單一應用服務器可以處理的請求鏈接有限,在網站訪問高峯期,應用服務器成爲整個網站的瓶頸。服務器

使用應用服務器集羣

使用集羣是網站解決高併發、海量數據問題的經常使用手段。當一臺服務器的處理能力、存儲空間不足時,不要企圖去更換更強大的服務器,對大型網站而言,無論多麼強大的服務器,都知足不了網站持續增加的業務需求。這種狀況下,更恰當的作法是增長一臺服務器分擔原有服務器的訪問及存儲壓力。 對網站架構而言,只要能經過增長一臺服務器的方式改善負載壓力,就能夠以一樣的方式持續增長服務器不斷改善系統性能,從而實現系統的可伸縮性。應用服務器實現集羣是網站可伸縮架構設計中較爲簡單成熟的一種,以下圖所示:
【系統架構】大型網站架構演化歷程(上)
經過負載均衡調度服務器,能夠未來自用戶瀏覽器的訪問請求分發到應用服務器集羣中的任何一臺服務器上,若是有更多用戶,就在集羣中加入更多的應用服務器,使應用服務器的壓力再也不成爲整個網站的瓶頸。數據結構

關於網站架構的優化,還有多種技術,如數據庫讀寫分離、使用分佈式架構等等,這些將在下篇再介紹。架構

參考資料:<<大型網站技術架構>>併發

推薦閱讀:

精心整理 | 歷史乾貨文章目錄
【福利】本身蒐集的網上精品課程視頻分享(上)
【數據結構與算法】 通俗易懂講解 二叉樹遍歷
【數據結構與算法】 通俗易懂講解 二叉搜索樹負載均衡

專一服務器後臺技術棧知識總結分享

歡迎關注交流共同進步

【系統架構】大型網站架構演化歷程(上)

碼農有道 coding

碼農有道,爲您提供通俗易懂的技術文章,讓技術變的更簡單!分佈式

相關文章
相關標籤/搜索