本文摘自<<大型網站技術架構 - 核心原理與案例分析>>
1. 初始階段
1臺服務器就綽綽有余,利用程序、數據庫、文件等所有資源都在1臺服務器上,使用開源的lamp.
2. 利用服務和數據服務分離:
隨著網站業務快速發展,1臺服務器已沒法滿足需求,愈來愈多的數據致使存儲空間不足。這時候就需要將利用和數據分類。利用和數據分離后全部網站使用3臺服務器:利用服務器、文件服務器、數據庫服務器。
這3臺服務器對硬件資源的要求各不相同,利用服務器需要處理大量的業務邏輯,因此需要更快更強大的cpu;數據庫服務器需要快速硬盤檢索和數據緩存,因此需要更快的硬盤和更大的內存;文件服務器需要存儲大量用戶上傳的文件,因此需要更大的硬盤。
3. 使用緩存改良網站性能
大部份的業務訪問集中在1小部份數據上,所以如果把這1小部份數據緩存在內存中,就能夠減少數據庫的訪問壓力,提高全部網站的數據訪問速度。
4. 使用利用服務器集群改良網站并發處理能力
使用集群是網站解決高并發、海量數據問題的經常使用手段。增加服務器可以分擔原有服務器的訪問及存儲壓力。
利用服務器實現集群是網站可伸縮集群架構設計中較為簡單成熟的1種。
5. 數據庫讀寫分離
利用服務器在寫數據的時候,訪問主數據庫,主數據庫通過主從復制機制將數據更新同步到從數據庫,這樣當利用服務器讀數據的時候,就能夠通過從數據庫取得數據。
6. 使用反向代理和cdn加速網站響應
cdn和反向代理的基本原理都是緩存,區分在于cdn部署在網絡供應商的機房,使用戶在要求網站服務時,可以從距離自己最近的網絡供應商機房獲得數據;而反向代理則部署在網站的中心機房,當用戶要求到達中心機房后,首先訪問的服務器是反向代理服務器,如果反向代理服務器中緩存這用戶要求的資源,就將其直接返回給用戶。
使用cdn和反向代理的目的都是盡快返回數據給用戶,1方面加快用戶訪問速度,另外一方面也減輕后端服務器的負載壓力。
7. 使用散布式文件系統和散布式數據庫系統
散布式數據庫是網站數據庫拆分的最后手段,只有在單表數據范圍非常龐大的時候才使用。不到不得已時,網站更經常使用的數據庫拆分手段是業務分庫,將不同業務的數據庫部署在不同的物理服務器上。
8. 使用Nosql和搜索引擎
隨著網站業務愈來愈復雜,對數據存儲和檢索的需求也愈來愈復雜,網站需要采取1些非干洗數據庫技術如Nosql和非數據庫查詢技術如搜索引擎。
9. 業務拆分
大型網站為了應對日趨復雜的業務場景,通過使用分而治之的手段將全部網站業務分成不同的產品線。
具體到技術上,將1個網站拆分成許多不同的利用,每一個利用獨立部署保護。利用之間通過1個超鏈接建立關系,也能夠通過消息隊列進行數據分發
10.散布式服務
下一篇 Unity之2D游戲界面相機適配