官术网_书友最值得收藏!

1.3 從網(wǎng)站的架構(gòu)發(fā)展看緩存

最初的網(wǎng)站可能就是一臺(tái)物理主機(jī),放在IDC或者租用的是云服務(wù)器,上面只運(yùn)行著應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù),LAMP(Linux Apache MySQL PHP)就是這樣流行起來(lái)的。由于網(wǎng)站具備了一定的特色,吸引了部分用戶的訪問(wèn),逐漸會(huì)發(fā)現(xiàn)系統(tǒng)的壓力越來(lái)越大,響應(yīng)速度越來(lái)越慢,而這個(gè)時(shí)候比較明顯的往往是數(shù)據(jù)庫(kù)與應(yīng)用的互相影響,于是將應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器從物理上分離開(kāi)來(lái),變成了兩臺(tái)機(jī)器,這個(gè)時(shí)候技術(shù)上沒(méi)有什么新的要求,系統(tǒng)又恢復(fù)到以前的響應(yīng)速度了,支撐住了更高的流量,并且不會(huì)讓數(shù)據(jù)庫(kù)和應(yīng)用服務(wù)器互相影響。這時(shí)網(wǎng)站后臺(tái)的簡(jiǎn)單架構(gòu)一般如圖1-2所示。

圖1-2 簡(jiǎn)單的網(wǎng)站架構(gòu)示意圖

隨著訪問(wèn)網(wǎng)站的人數(shù)越來(lái)越多,響應(yīng)速度又開(kāi)始變慢了,可能是訪問(wèn)數(shù)據(jù)庫(kù)的操作太多,導(dǎo)致數(shù)據(jù)連接競(jìng)爭(zhēng)激烈,因此緩存開(kāi)始登場(chǎng)。若想通過(guò)緩存機(jī)制來(lái)減少數(shù)據(jù)庫(kù)連接資源的競(jìng)爭(zhēng)和對(duì)數(shù)據(jù)庫(kù)讀的壓力,那么可以選擇采用靜態(tài)頁(yè)面緩存,這樣程序上可以不做修改,就能夠很好地減少對(duì)Web服務(wù)器的壓力以及減少對(duì)數(shù)據(jù)庫(kù)連接資源的競(jìng)爭(zhēng)。隨后,動(dòng)態(tài)緩存登場(chǎng),將動(dòng)態(tài)頁(yè)面里相對(duì)靜態(tài)的部分也緩存起來(lái),因此考慮采用類似的頁(yè)面片段緩存策略。

隨著訪問(wèn)量的持續(xù)增加,系統(tǒng)又開(kāi)始變慢,怎么辦?數(shù)據(jù)緩存來(lái)了,將系統(tǒng)中重復(fù)獲取的數(shù)據(jù)信息從數(shù)據(jù)庫(kù)加載到本地,同時(shí)降低了數(shù)據(jù)庫(kù)的負(fù)載。

隨著系統(tǒng)訪問(wèn)量的再度增加,應(yīng)用服務(wù)器又扛不住了,開(kāi)始增加Web服務(wù)器。那如何保持應(yīng)用服務(wù)器中數(shù)據(jù)緩存信息的同步呢?例如之前緩存的用戶數(shù)據(jù)等,這個(gè)時(shí)候通常會(huì)開(kāi)始使用緩存同步機(jī)制以及共享文件系統(tǒng)或共享存儲(chǔ)等。

在享受了一段時(shí)間的訪問(wèn)量高速增長(zhǎng)后,系統(tǒng)再次變慢。開(kāi)始數(shù)據(jù)庫(kù)調(diào)優(yōu),優(yōu)化數(shù)據(jù)庫(kù)自身的緩存,接下來(lái)是采用數(shù)據(jù)庫(kù)集群以及分庫(kù)分表的策略。分庫(kù)分表的規(guī)則是有些復(fù)雜的,考慮增加一個(gè)通用的框架來(lái)實(shí)現(xiàn)分庫(kù)分表的數(shù)據(jù)訪問(wèn),這個(gè)就是數(shù)據(jù)訪問(wèn)層(Data Access Layer, DAL)。同時(shí),在這個(gè)階段可能會(huì)發(fā)現(xiàn)的之前的緩存同步方案會(huì)出現(xiàn)問(wèn)題,因?yàn)閿?shù)據(jù)量太大,導(dǎo)致現(xiàn)在不太可能將緩存存儲(chǔ)在本地后再同步,于是分布式緩存終于來(lái)了,將大量的數(shù)據(jù)緩存轉(zhuǎn)移到分布式緩存上。

至此,系統(tǒng)進(jìn)入了無(wú)級(jí)縮放的大型網(wǎng)站階段,當(dāng)網(wǎng)站流量增加時(shí),應(yīng)對(duì)的解決方案就是不斷添加Web服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、以及緩存服務(wù)器了。此時(shí),大型網(wǎng)站的系統(tǒng)架構(gòu)演變?yōu)閳D1-3所示。

圖1-3 大型網(wǎng)站的架構(gòu)示意圖

縱觀網(wǎng)站架構(gòu)的發(fā)展歷程,業(yè)務(wù)量的增長(zhǎng)是幸福的,但也有成長(zhǎng)的煩惱,而緩存技術(shù)就是解除煩惱的靈丹妙藥,這再次證明了什么是緩存為王。

現(xiàn)在,可以從緩存在系統(tǒng)中的位置來(lái)看這一王者在系統(tǒng)中各個(gè)層面的應(yīng)用了。

主站蜘蛛池模板: 政和县| 清水县| 余干县| 昆山市| 延川县| 勐海县| 梧州市| 滁州市| 奇台县| 禹城市| 临漳县| 上思县| 随州市| 毕节市| 铜川市| 东乡县| 阳山县| 双柏县| 兴海县| 庆云县| 陈巴尔虎旗| 永胜县| 水城县| 衡阳市| 山阴县| 广灵县| 临高县| 拜泉县| 吴旗县| 邵阳市| 正定县| 霞浦县| 同仁县| 芦溪县| 乌鲁木齐市| 三台县| 修武县| 恩平市| 驻马店市| 和田市| 无极县|