日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

缓存在大型网站架构中的应用

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 缓存在大型网站架构中的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

緩存的基本知識

在整個計算機體系構造中(無論是硬件層面還是軟件層面),緩存都是無處不在的。

在計算機硬件構造中,由于兩種介質的速度不匹配,高速介質在和低速介質交互時速度趨向低速方,這就導致了高速介質的資源閑置。而通過引入第三種介質(速度和成本介于兩者中間),將低速方讀寫的部分內容數據保存在該介質中,高速方大多數情況下則無需和低速方直接交互,這樣就能整體提升了交互的性能。這就是計算機體系中緩存的由來。比較典型的就是CPU緩存(CPU寄存器=>L1 cahce =>L2 cache =>內存=>硬盤),如圖:

?

在計算機系統和應用軟件層面,緩存更是無處不在。我們在使用瀏覽器上網時,很多靜態資源會被緩存到本地。我們在手機上采用微信聊天時,很多好友的頭像等數據會被緩存到手機中。在操作系統層面,I/O操作也會被內核緩存(一般將數據緩存在文件系統的緩存頁中),當然,這個可能相比前兩個場景更加抽象,但緩存的目的都是一致的,為了提升讀寫性能。

?

緩存在狹義上解決介質讀寫速度不匹配問題,廣義上包括任何利用中間媒介提高速度的方法,包括:空間換時間,動態操作變為靜態操作。

?

緩存(CACHE)和緩沖(BUFFER)

緩存:可以共享,多種數據,大小不固定,可以重復使用,已知數據,用于提高IO效率。

緩沖:不可以共享,單一數據,大小固定,讀取后失效,命中100%,未知數據,用于減少IO次數。

緩存的屬性

命中率:從緩存中返回正確數據的次數/總請求次數。

容量:超過這個值啟用一定的策略:轉移到磁盤;轉移到遠端;清空部分。

存儲介質:內存、磁盤。

成本:開發成本、部署成本、硬件成本。

效率:SET效率、GET效率、序列化、哈希算法、分布式算法。

緩存的限制

由于價格的因素,緩存實現依賴的存儲往往有大小限制——保存什么,舍棄什么,命中率。

緩存往往是從無到有的——在最初階段不能發揮作用,在不命中的時候性能顛簸。

?

緩存的分類

按照存儲介質來分?:

內存(網站進程內、同服務器獨立進程、獨立服務器、分布式服務器組)。

磁盤(本地文件和數據庫,獨立服務器、分布式服務器組)。

緩存可以使用磁盤而不僅僅是內存。

按照存儲的數據來分?:

直接用于輸出的整頁(HTML、腳本樣式、圖片)。

片段頁(可供多個客戶端使用的HTML、腳本樣式等)。

索引和聚合數據(空間換時間)。

耗時查詢的結果數據。

和業務相關的大塊數據(列表數據,引用數據)。

和業務相關的小級數據(行級數據,資源數據)。

和上下文(用戶)相關的數據(活動數據)。

按照實現方式來分?:

框架或引擎內置的緩存(比如ORM緩存和SQL SERVER緩存)。

安裝特定的組件根據規則自動實現緩存(比如反向代理和輸出緩存)。

需要由開發以編程方式實現的緩存(比如業務數據緩存)。

按照作用來分?:

用于數據的讀取(之后介紹的大部分內容都是基于此類緩存)

用于(允許丟失)數據的寫入——寫到緩存的隊列中,再由工作線程提交處理(寫入存儲)

?

網站架構中的緩存

瀏覽器緩存(HTTP緩存頭)

代理緩存(Squid Vanish CDN)

Web服務器緩存(內核緩存、應用緩存)

頁面輸出緩存(片段緩存、整頁緩存)

業務數據緩存(本地緩存,分布式緩存)

其它緩存(ORM、數據庫、搜索引擎等緩存)

?

緩存的常見模式和策略(過期、更新、清除)

緩存的常見模式:

?

緩存的策略:

緩存的更新策略

A?由獲取數據請求觸發的被動更新

B?由更新數據請求觸發的主動更新(雙寫)

C?使用獨立線程主動定時更新緩存

D?回調方式更新(過期或依賴)

E?永遠不更新?

??

緩存的過期(失效)策略

F?絕對的過期時間

G?平滑過期(有人使用就不會過期)

H?依賴方式(依賴數據庫、依賴文件)

I?永遠不過期?

緩存的清除(替換)策略:

RAND?刪除隨機數據,不能反映局部性。

SIZE?刪除最大的數據。

FIFO,First In First Out?刪除最先進入緩存的數據,不能反映局部性。

LFU,Least Frequently Used?刪除一直以來最少被使用的數據。

LRU,Least Recently Used?刪除最近最少使用的數據。

常見模式

延遲加載方式:A+F

預加載方式:B/C/E+I

原文地址:http://www.cnblogs.com/dinglang/p/6108185.html


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

總結

以上是生活随笔為你收集整理的缓存在大型网站架构中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。