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