国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

緩存架構:如何減少不必要的計算?

存儲 存儲軟件
互聯網應用的主要挑戰就是在高并發情況下,大量的用戶請求到達應用系統服務器,造成了巨大的計算壓力。

 互聯網應用的主要挑戰就是在高并發情況下,大量的用戶請求到達應用系統服務器,造成了巨大的計算壓力。互聯網應用的核心解決思路就是采用分布式架構,提供更多的服務器,從而提供更多的計算資源,以應對高并發帶來的計算壓力及資源消耗。

[[333222]]

那么有沒有辦法減少到達服務器的并發請求壓力呢?或者請求到達服務器后,有沒有辦法減少不必要的計算,降低服務器的計算資源消耗,盡快返回計算結果給用戶呢?

有,解決的核心就是緩存。

所謂緩存,就是將需要多次讀取的數據暫存起來,這樣在后面,應用程序需要多次讀取的時候,就不必從數據源重復加載數據了,這樣就可以降低數據源的計算負載壓力,提高數據響應速度。

一般說來,緩存可以分成兩種,通讀緩存和旁路緩存。

通讀(read-through)緩存,應用程序訪問通讀緩存獲取數據的時候,如果通讀緩存有應用程序需要的數據,那么就返回這個數據;如果沒有,那么通讀緩存就自己負責訪問數據源,從數據源獲取數據返回給應用程序,并將這個數據緩存在自己的緩存中。這樣,下次應用程序需要數據的時候,就可以通過通讀緩存直接獲得數據了。

通讀緩存在架構中的位置與作用如下圖:

 

緩存架構:如何減少不必要的計算?

 

旁路(cache-aside)緩存,應用程序訪問旁路緩存獲取數據的時候,如果旁路緩存中有應用程序需要的數據,那么就返回這個數據;如果沒有,就返回空(null)。應用程序需要自己從數據源讀取數據,然后將這個數據寫入到旁路緩存中。這樣,下次應用程序需要數據的時候,就可以通過旁路緩存直接獲得數據了。

旁路緩存在架構中位置與作用如下圖:

 

緩存架構:如何減少不必要的計算?

 

通讀緩存

互聯網應用中主要使用的通讀緩存是 CDN 和反向代理緩存。

CDN(Content Delivery Network)即內容分發網絡。我們上網的時候,App 或者瀏覽器想要連接到互聯網應用的服務器,需要網絡服務商,比如移動、電信這樣的服務商為我們提供網絡服務,建立網絡連接才可以上網。

而這些服務商需要在全國范圍內部署骨干網絡、交換機機房才能完成網絡連接服務,這些交換機機房可能會離用戶非常近,那么互聯網應用能不能在這些交換機機房中部署緩存緩存服務器呢?這樣,用戶就可以近距離獲得自己需要的數據,既提高了響應速度,又節約了網絡帶寬和服務器資源。

當然可以。這個部署在網絡服務商機房中的緩存就是 CDN,因為距離用戶非常近,又被稱作網絡連接的第一跳。目前很多互聯網應用大約 80% 以上的網絡流量都是通過 CDN 返回的。

 

緩存架構:如何減少不必要的計算?

 

CDN 只能緩存靜態數據內容,比如圖片、CSS、JS、HTML 等內容。而動態的內容,比如訂單查詢、商品搜索結果等必須要應用服務器進行計算處理后才能獲得。因此,互聯網應用的靜態內容和動態內容需要進行分離,靜態內容和動態內容部署在不同的服務器集群上,使用不同的二級域名,即所謂的動靜分離,一方面便于運維管理,另一方面也便于 CDN 進行緩存,使 CDN 只緩存靜態內容。

反向代理緩存也是一種通讀緩存。我們上網的時候,有時候需要通過代理上網,這個代理是代理我們的客戶端上網設備。而反向代理則代理服務器,是應用程序服務器的門戶,所有的網絡請求都需要通過反向代理才能到達應用程序服務器。既然所有的請求都需要通過反向代理才能到達應用服務器,那么在這里加一個緩存,盡快將數據返回給用戶,而不是發送給應用服務器,這就是反向代理緩存。

 

緩存架構:如何減少不必要的計算?

 

用戶請求到達反向代理緩存服務器,反向代理檢查本地是否有需要的數據,如果有就直接返回,如果沒有,就請求應用服務器,得到需要的數據后緩存在本地,然后返回給用戶。

旁路緩存

CDN 和反向代理緩存通常會作為系統架構的一部分,很多時候對應用程序是透明的。而應用程序在代碼中主要使用的是對象緩存,對象緩存是一種旁路緩存。

不管是通讀緩存還是旁路緩存,緩存通常都是以

對于

程序中使用的對象緩存,可以分成兩種。一種是本地緩存,緩存和應用程序在同一個進程中啟動,使用程序的堆空間存放緩存數據。本地緩存的響應速度快,但是緩存可以使用的內存空間相對比較小,但是對于大型互聯網應用所需要緩存的數據通以 T 計,這時候就要使用遠程的分布式緩存了。

分布式緩存是指將一組服務器構成一個緩存集群,共同對外提供緩存服務,那么應用程序在每次讀寫緩存的時候,如何知道要訪問緩存集群中的哪臺服務器呢?我們以 Memcached為例,看看分布式緩存的架構:

 

緩存架構:如何減少不必要的計算?

 

Memcached 將多臺服務器構成一個緩存集群,緩存數據存儲在每臺服務器的內存中。事實上,使用緩存的應用程序服務器通常也是以集群方式部署的,每個程序需要依賴一個Memcached 的客戶端 SDK,通過 SDK 的 API 訪問 Memcached 的服務器。

應用程序調用 API,API 調用 SDK 的路由算法,路由算法根據緩存的 key 值,計算這個key 應該訪問哪臺 Memcached 服務器,計算得到服務器的 IP 地址和端口號后,API 再調用 SDK 的通信模塊,將

那么,路由算法又是如何計算得到 Memcached 的服務器 IP 端口呢?比較簡單的一種方法,和 Hash 算法一樣,利用 key 的 Hash 值對服務器列表長度取模,根據余數就可以確定服務器列表的下標,進而得到服務器的 IP 和端口。

緩存注意事項

使用緩存可以減少不必要的計算,能夠帶來三個方面的好處:

  1. 緩存的數據通常存儲在內存中,距離使用數據的應用也更近一點,因此相比從硬盤上獲取,或者從遠程網絡上獲取,它獲取數據的速度更快一點,響應時間更快,性能表現更好。
  2. 緩存的數據通常是計算結果數據,比如對象緩存中,通常存放經過計算加工的結果對象,如果緩存不命中,那么就需要從數據庫中獲取原始數據,然后進行計算加工才能得到結果對象,因此使用緩存可以減少 CPU 的計算消耗,節省計算資源,同樣也加快了處理的速度。
  3. 通過對象緩存獲取數據,可以降低數據庫的負載壓力;通過 CDN、反向代理等通讀緩存獲取數據,可以降低服務器的負載壓力。這些被釋放出來的計算資源,可以提供給其他更有需要的計算場景,比如寫數據的場景,間接提高整個系統的處理能力。

但是緩存也不是萬能的,如果不恰當地使用緩存,也可能會帶來問題。

首先就是數據臟讀的問題,緩存的數據來自數據源,如果數據源中的數據被修改了,那么緩存中的數據就變成臟數據了。

主要解決辦法有兩個,一個是過期失效,每次寫入緩存中的數據都標記其失效時間,在讀取緩存的時候,檢查數據是否已經過期失效,如果失效,就重新從數據源獲取數據。緩存失效依然可能會在未失效時間內讀到臟數據,但是一般的應用都可以容忍較短時間的數據不一致,比如淘寶賣家更新了商品信息,那么幾分鐘數據沒有更新到緩存,買家看到的還是舊數據,這種情況通常是可以接受的,這時候,就可以設置緩存失效時間為幾分鐘。

另一個辦法就是失效通知,應用程序更新數據源的數據,同時發送通知,將該數據從緩存中清除。失效通知看起來數據更新更加及時,但是實踐中,更多使用的還是過期失效。

此外,并不是所有數據使用緩存都有意義。在互聯網應用中,大多數數據訪問都是有熱點的,比如熱門微博會被更多閱讀,熱門商品會被更多瀏覽。那么將這些熱門的數據保存在緩存中是有意義的,因為緩存通常使用內存,存儲空間比較有限,只能存儲有限的數據,熱門數據存儲在緩存中,可以被更多次地讀取,緩存效率也比較高。

相反,如果緩存的數據沒有熱點,寫入緩存的數據很難被重復讀取,那么使用緩存就不是很有必要了。

總結

緩存是優化軟件性能的殺手锏,任何需要查詢數據、請求數據的場合都可以考慮使用緩存。緩存幾乎是無處不在的,程序代碼中可以使用緩存,網絡架構中可以使用緩存,CPU、操作系統、虛擬機也大量使用緩存,事實上,緩存最早就是在 CPU 中使用的。對于一個典型的互聯網應用而言,使用緩存可以解決絕大部分的性能問題,如果需要優化軟件性能,那么可以優先考慮哪里可以使用緩存改善性能。

除了本文提到的系統架構緩存外,客戶端也可以使用緩存,在 App 或者瀏覽器中緩存數據,甚至都不需要消耗網絡帶寬資源,也不會消耗 CDN、反向代理的內存資源,更不會消耗服務器的計算資源。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2018-08-24 11:52:15

成本公共云云服務

2023-05-04 07:06:25

微軟Windows

2011-02-18 11:02:28

2011-04-18 14:27:50

2017-06-26 09:55:31

前端后端開發

2011-04-18 14:35:53

2015-11-25 13:37:52

磁盤空間LinuxUbuntu

2024-01-05 07:41:08

Go語言語句

2011-08-18 09:51:21

2020-12-18 10:01:11

GitHub開源Cookies

2011-08-18 09:46:01

2010-05-21 14:09:41

2011-08-10 11:12:03

2016-08-05 16:13:50

Android性能優化對象

2016-08-18 15:54:08

云存儲云計算

2010-05-20 17:36:09

IIS安全

2021-02-10 15:54:48

Windows 10Windows微軟

2009-11-26 09:52:05

jQuery選擇器

2024-10-28 08:00:00

微服務架構開發

2009-10-22 09:25:54

Linux系統服務操作系統
點贊
收藏

51CTO技術棧公眾號

蝌蚪视频在线播放| 国产一区二区三区朝在线观看| 亚洲欧美乱综合| 黄色永久免费网站| 久久精子c满五个校花| 亚洲免费av一区二区三区| 国产精品初高中害羞小美女文| 裸体免费网站| 亚洲免费一在线| 国产精品蜜月aⅴ在线| 91精品国产色综合| 最新日韩av| 成人综合视频在线| 色综合视频一区二区三区高清| 福利小视频在线| 亚洲91精品在线| 蜜臀久久99精品久久久久宅男| 国产对白国语对白| 欧美一级久久久久久久大片| 欧美特黄不卡| 国产精品精品软件视频| 国产精品你懂的在线欣赏| 五丁香在线视频| 97人人做人人爱| 日韩二区在线观看| 日本h片在线看| 欧美成人免费小视频| 奇米888四色在线精品| av在线影视| 久久影视电视剧免费网站| 麻豆成人免费电影| av大片在线观看| 欧美精品一区二| 好吊妞国产欧美日韩免费观看网站 | 亚洲国产成人精品女人| 国产偷人视频免费| 日韩欧美在线视频日韩欧美在线视频| 欧美午夜免费影院| 日本在线观看一区| 日韩不卡一区二区三区 | 怡红院成人在线| 在线欧美一区二区| 午夜伦理福利在线| 国产乱码精品1区2区3区| 一本大道香蕉8中文在线视频 | 成人免费图片免费观看| 国产精品美女xx| 久久综合五月天婷婷伊人| 毛片在线播放网站| 欧美专区第一页| 猛男gaygay欧美视频| 国产精品igao| 国产精品久久久久久影视| 狠狠色丁香九九婷婷综合五月| 日本成人网址| 四虎影视永久免费在线观看一区二区三区| 欧美日韩免费视频| 日本欧美高清| av手机免费观看| 成人av免费电影| 日韩成人中文字幕在线观看| www国产成人免费观看视频 深夜成人网| 91成人精品观看| 一色桃子在线| 国产日韩欧美在线看| 欧美日韩国产一二三| 一本色道久久| 日韩精品综合在线| 亚洲欧美综合另类中字| 天天影视欧美综合在线观看| 亚洲字幕成人中文在线观看| 国产精品第七十二页| 91精品国产综合久久久蜜臀图片| 国产精品66部| 盗摄牛牛av影视一区二区| 婷婷视频在线| 亚洲AV无码成人精品一区| 一本久久a久久精品亚洲| 91成人观看| 国产视频一区二区在线播放| 正在播放一区| 久久久久久久久久国产| 日韩高清av一区二区三区| 大尺度一区二区| 日产精品一区二区| 午夜影院在线播放| 特黄特色大片免费视频大全| 欧美黄网在线观看| 91九色极品视频| 欧美成人高清视频| 日韩精品中文字幕一区| 亚洲成a人片在线不卡一二三区| 久久99久久99| 亚洲午夜极品| 日韩中字在线| 欧洲精品久久久久毛片完整版| 在线观看av片| 97操碰视频| 高清一级毛片视频| 蜜桃av一区二区在线观看| 欧美日中文字幕| aaa国产精品视频| 欧美精品日日操| 国产精品一区二区三区视频网站| 日本fc2在线观看| 国产特级毛片| 成人亚洲一区二区三区| 邪恶网站在线观看| 水蜜桃在线免费观看| 亚洲欧洲免费无码| 色吧亚洲视频| 日韩精品在线观看av| 97视频久久久| 精品国产乱码久久久久久郑州公司 | 欧美美女视频在线观看| 欧美一区二区在线视频| 亚洲成人av一区二区三区| 成人免费在线视频| 精品久久久久久久久久久| 欧美无人高清视频在线观看| 亚洲电影免费观看| 制服丝袜在线91| 伊人一区二区三区久久精品| 亚洲色图17p| 全球成人中文在线| 成人免费看片网站| 色视频一区二区三区| 国产免费一区二区三区视频| 一区二区在线播放视频| 国产三级在线免费观看| 婷婷五月在线视频| 国内激情视频在线观看| 香蕉久久一区| 中文在线播放一区二区 | 国产精品自拍视频在线| 黄色一级影院| 午夜伦理在线视频| 欧洲vs亚洲vs国产| 亚洲伦伦在线| 亚洲品质自拍视频| 日韩精品久久久久久福利| 91精品国产高清自在线| 91精品国产91久久久久青草| 午夜免费福利小电影| 色资源网在线观看| 国产原创精品视频| 日本综合久久| 日本少妇一区二区| 91在线小视频| 欧美精品一区二区三区四区 | 久久精品人人做人人爽电影蜜月| 国产欧美日韩三区| 中文字幕亚洲国产| 亚洲国产另类久久久精品极度| 一级毛片电影| 波多野结衣欧美| 精品亚洲国内自在自线福利| 精品久久久久久久久久国产| 亚洲91av视频| 北条麻妃在线一区| av超碰免费在线| av成人天堂| 亚洲精品国产品国语在线app| 色悠悠久久88| 中文字幕人妻熟女人妻洋洋| 大片免费在线观看| 精品91在线| 欧美伊人久久久久久午夜久久久久| 国语自产精品视频在免费| 国产一区二区四区| gay欧美网站| 国产成人aaa| 亚洲人成自拍网站| 2019日韩中文字幕mv| 高清不卡亚洲| av中文一区二区三区| 久久精品中文字幕一区| 国产免费毛卡片| 91精品尤物| 亚洲一区二区视频在线观看| 欧美一区二区三区……| 992tv在线影院| 永久91嫩草亚洲精品人人| 欧美日韩一区二区在线观看| 国产精品久久久久久久免费大片 | 在线视频一区二区三| 91手机视频在线观看| 超碰人人在线| 国产精品v日韩精品v欧美精品网站 | 精品日韩久久久| 国产欧美一区| 欧美一区二区久久| 男人靠女人免费视频网站| 伊人春色精品| 欧美日产国产精品| 国产 欧美 日韩 一区| 国产精品视频一区视频二区| 亚洲一区二区三区四区五区黄| 韩国一区二区三区美女美女秀| 免费在线小视频|