成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解決系統(tǒng)性能問題的銀彈---緩存技術(shù)

運(yùn)維 系統(tǒng)運(yùn)維
任何性能問題都可以通過一種方式有效的解決,這種方式就是緩存。不錯(cuò),緩存幾乎可以成為解決性能問題的銀彈,百發(fā)百中。緩存的主要目的是降低數(shù)據(jù)訪問延時(shí),實(shí)現(xiàn)手段多種多樣,下面對(duì)不同種類的緩存進(jìn)行介紹。

仔細(xì)觀察一下我們現(xiàn)有的系統(tǒng),小到一顆CPU,大到一個(gè)在線交易系統(tǒng)。任何性能問題都可以通過一種方式有效的解決,這種方式就是緩存。不錯(cuò),緩存幾乎可以成為解決性能問題的銀彈,百發(fā)百中。緩存的主要目的是降低數(shù)據(jù)訪問延時(shí),實(shí)現(xiàn)手段多種多樣,下面對(duì)不同種類的緩存進(jìn)行介紹。

CPU的緩存

能想到的最小粒度的緩存恐怕就是CPU的緩存了。CPU不但有緩存,而且將緩存分成了多種級(jí)別,如圖1所示,分別是L1、L2和L3 3級(jí)緩存。其中L1和L2是一個(gè)核心獨(dú)享的緩存,而L3是同一顆CPU內(nèi)的多個(gè)核心共享的。圖1架構(gòu)是目前CPU中最常見的架構(gòu),而CPU關(guān)于緩存的架構(gòu)細(xì)節(jié)比這個(gè)還要復(fù)雜。多數(shù)CPU是將緩存分為指令緩存和數(shù)據(jù)緩存2中類型的緩存,有些還有一種稱為TLB(translation lookaside buffer)的緩存,用于實(shí)現(xiàn)虛擬內(nèi)存到物理內(nèi)存的快速轉(zhuǎn)換。

解決系統(tǒng)性能問題的銀彈---緩存技術(shù)

圖1 CPU緩存架構(gòu)

CPU并非生而就有緩存,以Intel的CPU為例,其在1992年才在386 CPU中引入L1 Cache。而L3Cache的引入則到2008年才在Core i3中引入。如圖2是不同存儲(chǔ)類型訪問時(shí)延的差異,以寄存器訪問為1個(gè)時(shí)間單位,那么內(nèi)存的訪問在100單位左右。也就是說,內(nèi)存的訪問延時(shí)是寄存器的100倍。

解決系統(tǒng)性能問題的銀彈---緩存技術(shù)

圖2 不同存儲(chǔ)訪問性能對(duì)比

基于上述原因,在新一代的CPU設(shè)計(jì)當(dāng)中增加了緩存模塊,其目的就是降低訪問內(nèi)存數(shù)據(jù)的時(shí)延。使用Cache提升性能的原理在于數(shù)據(jù)訪問的局部性特點(diǎn),分別是區(qū)域局部性和時(shí)間局部性。

  • Spatial Locality:對(duì)于剛被訪問的數(shù)據(jù),其相鄰的數(shù)據(jù)在將來被訪問的概率高。
  • Temporal Locality:對(duì)于剛被訪問的數(shù)據(jù),其本身在將來被訪問的概率高。

操作系統(tǒng)緩存

在操作系統(tǒng)層面很多地方都用到了緩存。而操作系統(tǒng)緩存的原理與CPU緩存基本一致,也就2個(gè)局部特性。在操作系統(tǒng)中***的緩存恐怕就是文件系統(tǒng)的頁緩存了吧。同樣參考一下圖2,可以看到訪問磁盤的時(shí)延是內(nèi)存時(shí)延的10萬倍,因此Linux操作系統(tǒng)中所有文件系統(tǒng)都采用緩存來提升其讀寫性能。

除了上面內(nèi)存訪問性能與磁盤訪問性能的差異因素外,另外一個(gè)因素是機(jī)械磁盤隨機(jī)訪問與順序訪問的性能差異。以企業(yè)級(jí)SATA磁盤為例,隨機(jī)寫的帶寬不到1MB/s,而順序?qū)懣梢暂p松的達(dá)到100MB/s,差異多達(dá)100倍。產(chǎn)生如此大差異的原因主要是機(jī)械磁盤讀寫數(shù)據(jù)需要尋址,尋址所消耗的時(shí)間占整個(gè)請(qǐng)求時(shí)間的比例很大。

鑒于上述2個(gè)因素的考量,大多數(shù)文件系統(tǒng)都實(shí)現(xiàn)了基于內(nèi)存的緩存。這樣,用戶對(duì)于文件系統(tǒng)的訪問性能得到了大幅的提升。緩存的主要從兩方面提升訪問文件系統(tǒng)的性能,一方面是降低對(duì)磁盤的直接訪問,另外一個(gè)方面是將對(duì)磁盤的隨機(jī)訪問盡量轉(zhuǎn)換為順序訪問。

對(duì)于***個(gè)方面,文件系統(tǒng)數(shù)據(jù)寫入緩存后即認(rèn)為數(shù)據(jù)寫入成功,向上層返回結(jié)果。由于訪問內(nèi)存的性能是訪問磁盤性能的10萬倍。因此,性能自然可以得到極大的提升。如圖3所示的上半部分邏輯,寫請(qǐng)求依次將數(shù)據(jù)寫入緩存中。對(duì)于讀請(qǐng)求也有類似的處理,文件系統(tǒng)中稱為預(yù)讀,也就是將數(shù)據(jù)提前讀取到緩存,從而降低訪問磁盤的頻度。

解決系統(tǒng)性能問題的銀彈---緩存技術(shù)

圖3 文件系統(tǒng)頁緩存

對(duì)于第二個(gè)方面,由于緩存的存在,當(dāng)從緩存向磁盤刷寫數(shù)據(jù)的時(shí)候以數(shù)據(jù)的LBA進(jìn)行排序。這樣能夠降低機(jī)械磁盤尋道的時(shí)間消耗比例,進(jìn)而提升系統(tǒng)整體的性能。

Web前端的緩存

在大系統(tǒng)層面我們以Web應(yīng)用為例介紹從前端到后端的緩存技術(shù)。這主要是因?yàn)樵赪eb開發(fā)領(lǐng)域緩存的應(yīng)用最為廣泛,非常方便我們了解問題。緩存的技術(shù)領(lǐng)域很廣泛,技術(shù)的難度也很深,本文無法面面俱到,只是拋磚引玉。

熟悉前端開發(fā)的同學(xué)都清楚,一個(gè)網(wǎng)站除了動(dòng)態(tài)的內(nèi)容外,還有很多圖片、JS腳本和CSS樣表等內(nèi)容。而圖片、JS腳本和CSS等內(nèi)容一方面量比較大,另外一方面很少變化,除非網(wǎng)站升級(jí)。鑒于上述原因,我們是否可以將這些內(nèi)容緩存到用戶的本地磁盤,這樣當(dāng)用戶再次訪問網(wǎng)站是就可以直接從本地磁盤加載這些內(nèi)容,而不需要從經(jīng)過浩瀚的網(wǎng)絡(luò)。

解決系統(tǒng)性能問題的銀彈---緩存技術(shù)

圖4 瀏覽器頁面請(qǐng)求

實(shí)質(zhì)上瀏覽器已經(jīng)具備該功能,準(zhǔn)確的說不是瀏覽器,而是HTTP協(xié)議。如圖我們打開瀏覽器的調(diào)試工具,可以看到請(qǐng)求網(wǎng)頁的很多內(nèi)容并不會(huì)從服務(wù)器請(qǐng)求,而是從本地磁盤或者內(nèi)存獲取。如圖4是請(qǐng)求某個(gè)網(wǎng)站頁面時(shí)部分內(nèi)容的情況。可以看到很大一部分并非從服務(wù)器獲取。

解決系統(tǒng)性能問題的銀彈---緩存技術(shù)

圖5 Web瀏覽器緩存處理流程

從本地獲取有2個(gè)非常明顯的好處,一個(gè)是頁面的響應(yīng)時(shí)間很快,另外一個(gè)是Web服務(wù)器的壓力得到有很大的降低。

在HTTP中是通過其響應(yīng)消息頭來確定是否使用緩存中的內(nèi)容的,這個(gè)消息頭就是Cache-control,當(dāng)然還要其它一些字段的配合。整個(gè)緩存處理的流程還是比較復(fù)雜的,需要根據(jù)不同的字段作出判斷,以便確定從哪里獲取內(nèi)容。如圖是整個(gè)瀏覽器的處理流程。

圖6是通過瀏覽器的調(diào)試工具截獲的某東主頁的一個(gè)圖片的響應(yīng)頭內(nèi)容,從圖中可以看出里面包含了緩存控制相關(guān)的內(nèi)容。

解決系統(tǒng)性能問題的銀彈---緩存技術(shù)

圖6 Web緩存的HTTP協(xié)議

瀏覽器緩存的內(nèi)容博大精深,很難在本篇文章中解釋完全。如果大家想深入的了解這方面的內(nèi)容,本號(hào)推薦大家看看《HTTP權(quán)威指南》,理解解釋的非常詳細(xì)。

訪問鏈路層面

在Web領(lǐng)域一個(gè)請(qǐng)求的鏈路可能會(huì)非常長,比如我們?cè)L問一個(gè)美國的網(wǎng)站,整個(gè)通信鏈路會(huì)跨越整個(gè)太平洋,距離近2萬公里。即使是陽光也要跑幾十毫秒才能完成這段里程,而網(wǎng)絡(luò)需要經(jīng)過各種中繼設(shè)備,耗時(shí)將近200ms。試想,一個(gè)網(wǎng)頁通常有上百個(gè)元素組成(例如圖片,js腳本等),這樣在中國打開一個(gè)美國的網(wǎng)站將消耗多少時(shí)間?

解決上述問題最為有效的技術(shù)就是CDN(Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡(luò))技術(shù),該技術(shù)通過分部在離最終用戶比較近的邊緣服務(wù)器提供更快的服務(wù)。以上文網(wǎng)站為例,當(dāng)用戶從中國訪問美國的網(wǎng)站時(shí),會(huì)先從國內(nèi)的CDN節(jié)點(diǎn)獲取內(nèi)容,如果沒有才會(huì)從美國的源服務(wù)器獲取內(nèi)容。因?yàn)榇蟛糠謨?nèi)容都可以從國內(nèi)獲取,免去了跨越大洋造成的網(wǎng)絡(luò)延時(shí)。

解決系統(tǒng)性能問題的銀彈---緩存技術(shù)

圖7 CDN示意圖

圖7是一個(gè)CDN的示意圖,其中ORIGINAL SERVER就是源服務(wù)器,而EDGE SERVER就是邊緣服務(wù)器。從圖中可以看出,終端用戶的訪問路徑。

Web后端的緩存

對(duì)于Web服務(wù)來說,通常通過關(guān)系型數(shù)據(jù)來存儲(chǔ)數(shù)據(jù),而數(shù)據(jù)庫的數(shù)據(jù)通常存儲(chǔ)在磁盤中。在高負(fù)載場景下數(shù)據(jù)庫往往會(huì)成為性能瓶頸。因此,為了提高整個(gè)服務(wù)的承載能力,往往在業(yè)務(wù)服務(wù)器和數(shù)據(jù)庫之間添加一個(gè)緩存服務(wù)。這個(gè)緩存服務(wù)的原理其實(shí)與上述的CPU緩存或者文件系統(tǒng)緩存有異曲同工之妙。

由于對(duì)于一個(gè)Web服務(wù)來說,80%以上的請(qǐng)求都是讀請(qǐng)求,Web緩存的設(shè)計(jì)也正是基于這樣一個(gè)事實(shí)。這些數(shù)據(jù)完全可以緩存到內(nèi)存中,從而減少數(shù)據(jù)庫訪問的負(fù)載。由于緩存承載了絕大多數(shù)的讀請(qǐng)求,因此整個(gè)數(shù)據(jù)庫的負(fù)載也得到很大的降低。

解決系統(tǒng)性能問題的銀彈---緩存技術(shù)

圖8 Web服務(wù)緩存

如圖8是使用Redis緩存的Web服務(wù)架構(gòu),本文只是一個(gè)簡化的架構(gòu),實(shí)際架構(gòu)要復(fù)雜的多(需要考慮可靠性和承載能力等)。在本架構(gòu)中業(yè)務(wù)服務(wù)器會(huì)根據(jù)請(qǐng)求類型優(yōu)先訪問緩存,并根據(jù)策略更新緩存內(nèi)容。目前使用最多的緩存應(yīng)該是Redis緩存,大家可以深入了解一下。

本文從微觀到宏觀,從不同的層面介紹了緩存在提升系統(tǒng)性能方面的應(yīng)用。當(dāng)然,緩存的應(yīng)用領(lǐng)域比本文涉及的還要多得多。這里只是一個(gè)引子,希望大家能夠得到一些啟發(fā),為自己系統(tǒng)的性能優(yōu)化提供一些思路。

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2011-09-19 14:30:47

Vista緩存

2013-02-28 13:37:59

系統(tǒng)性能調(diào)優(yōu)技術(shù)實(shí)戰(zhàn)

2010-12-17 10:07:12

Linux命令系統(tǒng)性能

2018-12-10 15:13:06

緩存系統(tǒng)性能數(shù)據(jù)

2020-09-29 07:59:22

CPU系統(tǒng)性能

2009-09-29 10:39:04

Linuxlinux系統(tǒng)性能檢測

2010-04-23 11:44:34

Aix系統(tǒng)

2023-10-26 08:33:16

Redis管道技術(shù)

2024-01-02 08:55:27

Linux緩存系統(tǒng)性能

2011-03-10 14:40:52

2017-08-11 19:13:01

LinuxNmon系統(tǒng)監(jiān)控工具

2010-04-30 15:53:45

Oracle系統(tǒng)性能

2024-11-08 14:27:52

系統(tǒng)設(shè)計(jì)數(shù)據(jù)庫

2013-03-20 17:18:07

Linux系統(tǒng)性能調(diào)優(yōu)

2011-03-18 11:13:07

LAMP度量性能

2010-05-24 13:29:30

Swap空間

2011-01-05 13:48:55

Linux提高性能

2018-01-22 09:08:14

存儲(chǔ)系統(tǒng)性能帶寬

2013-03-06 10:24:12

ksar工具系統(tǒng)性能

2010-04-09 13:26:44

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩电影一区二区三区 | jizz亚洲人| 精品久久久999 | 国产精品亚洲精品日韩已方 | 丁香婷婷成人 | 一级做a爰片久久毛片 | 天堂久久天堂综合色 | 亚洲高清在线观看 | 国产成人在线一区 | www.亚洲| 男人的天堂久久 | 91成人精品视频 | 日本三级在线视频 | 久久精品色欧美aⅴ一区二区 | 亚洲福利av| 久久精品小视频 | 久久伊人免费视频 | 亚洲成人国产精品 | 欧美一区二区另类 | 久草电影网| 日本在线免费视频 | 精品福利在线 | 久久成人免费观看 | 成人国产精品久久久 | 国产精品日韩欧美一区二区 | 亚洲国产精品一区二区第一页 | 久久久久久久久久久久91 | 天堂中文av| 成人在线欧美 | 在线免费亚洲视频 | 91电影在线 | 中文字幕在线第一页 | 户外露出一区二区三区 | 一级黄色大片 | 超碰97人人人人人蜜桃 | 精品久久久久久久 | 中文字幕二区 | 国产精品jizz在线观看老狼 | 久久午夜电影 | 一级黄色毛片 | 99在线观看视频 |