中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

?緩存技術在提升web前后端系統性能方面的應用是怎樣的

發布時間:2021-12-07 16:02:22 來源:億速云 閱讀:145 作者:柒染 欄目:系統運維

這篇文章將為大家詳細講解有關緩存技術在提升web前后端系統性能方面的應用是怎樣的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

仔細觀察一下我們現有的系統,小到一顆CPU,大到一個在線交易系統。任何性能問題都可以通過一種方式有效的解決,這種方式就是緩存。不錯,緩存幾乎可以成為解決性能問題的銀彈,百發百中。緩存的主要目的是降低數據訪問延時,實現手段多種多樣,下面對不同種類的緩存進行介紹。

CPU的緩存

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

?緩存技術在提升web前后端系統性能方面的應用是怎樣的

圖1 CPU緩存架構

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

?緩存技術在提升web前后端系統性能方面的應用是怎樣的

圖2 不同存儲訪問性能對比

基于上述原因,在新一代的CPU設計當中增加了緩存模塊,其目的就是降低訪問內存數據的時延。使用Cache提升性能的原理在于數據訪問的局部性特點,分別是區域局部性和時間局部性。

  • Spatial Locality:對于剛被訪問的數據,其相鄰的數據在將來被訪問的概率高。

  • Temporal Locality:對于剛被訪問的數據,其本身在將來被訪問的概率高。

操作系統緩存

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

除了上面內存訪問性能與磁盤訪問性能的差異因素外,另外一個因素是機械磁盤隨機訪問與順序訪問的性能差異。以企業級SATA磁盤為例,隨機寫的帶寬不到1MB/s,而順序寫可以輕松的達到100MB/s,差異多達100倍。產生如此大差異的原因主要是機械磁盤讀寫數據需要尋址,尋址所消耗的時間占整個請求時間的比例很大。

鑒于上述2個因素的考量,大多數文件系統都實現了基于內存的緩存。這樣,用戶對于文件系統的訪問性能得到了大幅的提升。緩存的主要從兩方面提升訪問文件系統的性能,一方面是降低對磁盤的直接訪問,另外一個方面是將對磁盤的隨機訪問盡量轉換為順序訪問。

對于第一個方面,文件系統數據寫入緩存后即認為數據寫入成功,向上層返回結果。由于訪問內存的性能是訪問磁盤性能的10萬倍。因此,性能自然可以得到極大的提升。如圖3所示的上半部分邏輯,寫請求依次將數據寫入緩存中。對于讀請求也有類似的處理,文件系統中稱為預讀,也就是將數據提前讀取到緩存,從而降低訪問磁盤的頻度。

?緩存技術在提升web前后端系統性能方面的應用是怎樣的

圖3 文件系統頁緩存

對于第二個方面,由于緩存的存在,當從緩存向磁盤刷寫數據的時候以數據的LBA進行排序。這樣能夠降低機械磁盤尋道的時間消耗比例,進而提升系統整體的性能。

Web前端的緩存

在大系統層面我們以Web應用為例介紹從前端到后端的緩存技術。這主要是因為在Web開發領域緩存的應用最為廣泛,非常方便我們了解問題。緩存的技術領域很廣泛,技術的難度也很深,本文無法面面俱到,只是拋磚引玉。

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

?緩存技術在提升web前后端系統性能方面的應用是怎樣的

圖4 瀏覽器頁面請求

實質上瀏覽器已經具備該功能,準確的說不是瀏覽器,而是HTTP協議。如圖我們打開瀏覽器的調試工具,可以看到請求網頁的很多內容并不會從服務器請求,而是從本地磁盤或者內存獲取。如圖4是請求某個網站頁面時部分內容的情況。可以看到很大一部分并非從服務器獲取。

?緩存技術在提升web前后端系統性能方面的應用是怎樣的

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

從本地獲取有2個非常明顯的好處,一個是頁面的響應時間很快,另外一個是Web服務器的壓力得到有很大的降低。

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

圖6是通過瀏覽器的調試工具截獲的某東主頁的一個圖片的響應頭內容,從圖中可以看出里面包含了緩存控制相關的內容。

?緩存技術在提升web前后端系統性能方面的應用是怎樣的

圖6 Web緩存的HTTP協議

訪問鏈路層面

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

解決上述問題最為有效的技術就是CDN(Content Delivery  Network,內容分發網絡)技術,該技術通過分部在離最終用戶比較近的邊緣服務器提供更快的服務。以上文網站為例,當用戶從中國訪問美國的網站時,會先從國內的CDN節點獲取內容,如果沒有才會從美國的源服務器獲取內容。因為大部分內容都可以從國內獲取,免去了跨越大洋造成的網絡延時。

?緩存技術在提升web前后端系統性能方面的應用是怎樣的

圖7 CDN示意圖

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

Web后端的緩存

對于Web服務來說,通常通過關系型數據來存儲數據,而數據庫的數據通常存儲在磁盤中。在高負載場景下數據庫往往會成為性能瓶頸。因此,為了提高整個服務的承載能力,往往在業務服務器和數據庫之間添加一個緩存服務。這個緩存服務的原理其實與上述的CPU緩存或者文件系統緩存有異曲同工之妙。

由于對于一個Web服務來說,80%以上的請求都是讀請求,Web緩存的設計也正是基于這樣一個事實。這些數據完全可以緩存到內存中,從而減少數據庫訪問的負載。由于緩存承載了絕大多數的讀請求,因此整個數據庫的負載也得到很大的降低。

?緩存技術在提升web前后端系統性能方面的應用是怎樣的

圖8 Web服務緩存

如圖8是使用Redis緩存的Web服務架構,本文只是一個簡化的架構,實際架構要復雜的多(需要考慮可靠性和承載能力等)。在本架構中業務服務器會根據請求類型優先訪問緩存,并根據策略更新緩存內容。目前使用最多的緩存應該是Redis緩存,大家可以深入了解一下。

緩存在提升系統性能方面的應用。當然,緩存的應用領域比本文涉及的還要多得多。這里只是一個引子,希望大家能夠得到一些啟發,為自己系統的性能優化提供一些思路。

關于緩存技術在提升web前后端系統性能方面的應用是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌拉特后旗| 临邑县| 衡阳市| 洪泽县| 台前县| 长顺县| 孙吴县| 双柏县| 海阳市| 新龙县| 应用必备| 分宜县| 安平县| 铜川市| 榆中县| 博罗县| 柳河县| 天水市| 菏泽市| 尉氏县| 河南省| 泗洪县| 乐都县| 收藏| 黎城县| 翁牛特旗| 什邡市| 芦山县| 苍溪县| 肥城市| 建宁县| 香河县| 永福县| 海伦市| 巴南区| 汝阳县| 新营市| 北海市| 保德县| 兴海县| 盘山县|