在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

緩存系統的三座大山

Linux愛好者 ? 來源:程序員大白啊 ? 2020-08-14 17:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.無處不在的緩存

緩存在計算機系統是無處不在,在CPU層面有L1-L3的Cache,在Linux中有TLB加速虛擬地址和物理地址的轉換,在瀏覽器有本地緩存、手機有本地緩存等。

可見,緩存在計算機系統中有非常重要的地位,其主要作用是提高響應速度、減少磁盤訪問等,本文主要討論在高并發系統中的緩存系統。

一句話概括緩存系統在高并發系統中的地位的話:如果高并發系統是烤羊肉串,那么緩存系統就是那一撮孜然。

2.高并發系統中的緩存

2.1 緩存系統的作用

緩存系統在高并發系統的作用很大,在某種程度上可以說沒有緩存系統很難支撐高并發場景。

基于機械磁盤或SSD的數據庫系統,一般來說讀寫的速度遠慢于內存,因此單純磁盤介質的數據庫無法支撐很高的并發,可以簡單認為緩存是保護磁盤數據庫的重要屏障。

對于一些基于LSM的存儲引擎數據庫來說,隨機寫改為順序寫速度提升很大,但是隨機讀仍然是個問題,所以緩存系統是很有必要的。

2.2 緩存系統訪問流程

實際場景也是讀多寫少,看看請求是如何得到響應的,簡單看下交互流程:

請求到達之后,業務線程首先訪問緩存,如果緩存命中則返回

如果未命中則繼續請求磁盤數據庫系統,獲取數據返回

從磁盤獲取數據后將結果回寫到緩存系統且增加老化時間,為下次請求做準備

以上是高并發系統中緩存和磁盤數據庫系統、客戶端請求之間的交互過程,后續的問題分析,也是基于此過程展開的。

3.緩存系統的三大問題

網絡上對于緩存三大問題的文章很多,提到的三個問題主要是:

緩存雪崩 Cache Avalanche

緩存穿透 Cache Penetration

緩存擊穿 Hotspot Invalid

對于上面的三個名詞我一直分不清楚,腦海中并沒有清晰的區別。

于是想到去谷歌看看歪果仁是怎么說的,然而英文表述就是上面的英文,基本上和漢語翻譯是一樣的,所以只能強記,太難了。

3.1 緩存雪崩問題

所謂雪崩就是原來有所支撐的冰雪,某一瞬間失去依托,瞬間涌下來。

這個場景讓我想起了2011年上映的柯南劇場版《沉默的十五分鐘》,柯南在北澤村水庫為了拯救村莊制造的雪崩:

可見雪崩確實很可怕,回到高并發系統,如果緩存系統故障,大量的請求無法從緩存完成數據請求,就全量洶涌沖向磁盤數據庫系統,導致數據庫被打死,整個系統徹底崩潰。

3.2 緩存雪崩解決方案

造成緩存雪崩的主要原因是緩存系統不夠高可用,因此提高緩存系統的穩定性和可用性十分必要,比如對于使用Redis作為緩存的系統而言可以使用哨兵機制、集群化、持久化等來提高緩存系統的HA。

除了保證緩存系統的HA之外,服務本身也需要支持降級,可以借助比如Hystrix來實現服務的熔斷、降級、限流來降低出現雪崩時的故障程度。

說白了就是別讓服務徹底死掉就行,就像大雪封高速肯定不能通行了,堵車慢一些至少可以走。

3.3 緩存穿透問題

穿透形象一點就是:請求過來了 轉了一圈 一無所獲 就像穿過透明地帶一樣。

在高并發系統中緩存穿透,如果一個req需要請求的數據在緩存中沒有,這時業務線程就會訪問磁盤數據庫系統,然而磁盤數據庫也沒有這個數據,無奈業務線程只能白白處理一圈。

如果某時段有大量惡意的不存在的key的集中請求,那么服務將一直處理這些根本不存在的請求,導致正常請求無法被處理,從而出現問題。

舉個栗子:


拉面館的服務員和廚師不允許拒絕已經進來的消費者,但是拉面館的經營范圍有限。此時惡意消費者點了一只5斤的澳洲龍蝦,經過服務員和廚師都無法響應這個需求,此時輪流來了1000個這樣的惡意消費者,拉面館基本要歇菜了。

3.4 緩存穿透解決方案

有效甄別是否存在這個key再決定是否讀取很重要,常見的做法有:

把不存在的key寫一下null,這樣再來就相當于命中了,其實這種方法局限性很大,今天是5斤龍蝦,明天改成6斤的螃蟹,緩存系統和數據庫中存儲大量無用key本身是無意義的,所以一般不建議

另外一種思路,轉換為查找問題,類似于在海量數據中查找某個key是否存在,考慮空間復雜度和時間復雜度,一般選用布隆過濾器來實現。

布隆過濾器是個好東西,有非常多的用途,包括:垃圾郵件識別、搜索蜘蛛爬蟲url去重等,主要借助K個哈希函數和一個超大的bit數組來降低哈希沖突本身帶來的誤判,從而提高識別準確性。

布隆過濾器也存在一定的誤判,假如判斷存在可能不一定存在,但是假如判斷不存在就一定不存在,因此剛好用在解決緩存穿透的key查找場景,事實上很多系統都是基于布隆過濾器來解決緩存穿透問題的。

3.5 緩存擊穿問題

緩存擊穿是這樣一種情況:

由于緩存系統中的熱點數據都有過期時間,如果沒有過期時間就造成了主存和緩存的數據不一致,因此過期時間一般都不會太長。

設想某時刻一批熱點數據同時在緩存系統中過期失效,那么這部分數據就都將請求磁盤數據庫系統。

從描述上來看有點像微小規模的雪崩,但是對數據庫的壓力就很小了,只不過會影響并發性能,然而在多線程場景中緩存擊穿卻是經常發生的,相反緩存穿透和雪崩頻率不如緩存擊穿,因此研究擊穿的現實意義更大一些。

3.6 緩存擊穿解決方案

可以采用的方案大概有幾種:

在設置熱點數據過期時間時盡量分散,比如設置100ms的基礎值,在此基礎上正負浮動10ms,從而降低相同時刻出現CacheMiss的key的數量。

另外一種做法是多線程加鎖,其中第一個線程發現CacheMiss之后進行加鎖,再從數據庫獲取內容之后寫到緩存中,其他線程獲取鎖失敗則阻塞數ms之后再進行緩存讀取,這樣可以降低訪問數據數據庫的線程數,需要注意在單機和集群需要使用不同的鎖,集群環境使用分布式鎖來實現,但是由于鎖的存在也會影響并發效率。

一種方法是在業務層對使用的熱點數據查看是否即將過期,如果即將過期則去數據庫獲取最新數據進行更新并延長該熱點key在緩存系統中的時間,從而避免后面的過期CacheMiss,相當于把事情提前解決了。

緩存擊穿的解決方法都有一定的權衡,實際中根據自己的需求來解決。

緩存擊穿的影響一般來說并不會太大,或許在你的服務跑了很久之后你才意識到會有緩存擊穿問題。

4.小結

緩存系統無論在實際工作中還是在面試中都是熱點內容,緩存系統目的是為了讓訪問又準又快,不要一味追求緩存命中率,緩存和主數據庫的數據一致性是需要重點考慮的。

總起來說,如何在保證數據正確性的前提下提高緩存命中率就是核心問題。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11067

    瀏覽量

    216635
  • Linux
    +關注

    關注

    87

    文章

    11500

    瀏覽量

    213358
  • 緩存
    +關注

    關注

    1

    文章

    246

    瀏覽量

    27119

原文標題:什么是緩存系統三座大山

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    高性能緩存設計:如何解決緩存偽共享問題

    在多核高并發場景下, 緩存偽共享(False Sharing) 是導致性能驟降的“隱形殺手”。當不同線程頻繁修改同一緩存行(Cache Line)中的獨立變量時,CPU緩存一致性協議會強制同步整個
    的頭像 發表于 07-01 15:01 ?70次閱讀
    高性能<b class='flag-5'>緩存</b>設計:如何解決<b class='flag-5'>緩存</b>偽共享問題

    SiC/磁材破局關鍵戰!百余位技術精英聚首東莞

    在“雙碳”目標的驅動下,光儲充產業迎來爆發式增長,但效率瓶頸、安全焦慮與成本高壓仍是橫亙在行業面前的三座大山。 6月26日,第十六屆光儲充關鍵元器件技術創新研討會邀請來自德州儀器(TI)、瑞薩電子
    的頭像 發表于 06-23 16:28 ?155次閱讀
    SiC/磁材破局關鍵戰!百余位技術精英聚首東莞

    聚徽視角|粉塵、油污、震動:工業觸摸屏一體機如何攻克重工業環境“三座大山”?

    在鋼鐵冶煉、礦山開采、船舶制造等重工業場景中,工業觸摸屏一體機需直面粉塵、油污、震動的重考驗。某鋼鐵廠高爐控制屏因粉塵侵入導致觸控失靈,引發高爐停產事故,單日損失超500萬元;某船舶發動機調試臺因
    的頭像 發表于 06-11 14:21 ?232次閱讀

    RAKsmart服務器如何助力企業破解AI轉型的難題

    當今,企業AI轉型已成為提升競爭力的核心戰略。然而,算力不足、成本失控、部署復雜等問題卻成為橫亙在轉型路上的“三座大山”。面對這一挑戰,RAKsmart服務器憑借其技術創新與全球化資源整合能力,為企業提供了一套從底層硬件到上層應用的全棧解決方案,助力企業突破AI轉型瓶頸。
    的頭像 發表于 05-27 10:00 ?121次閱讀

    MCU緩存設計

    MCU 設計通過優化指令與數據的訪問效率,顯著提升系統性能并降低功耗,其核心架構與實現策略如下: 一、緩存類型與結構 指令緩存(I-Cache)與數據緩存(D-Cache)? I-Ca
    的頭像 發表于 05-07 15:29 ?320次閱讀

    Nginx緩存配置詳解

    Nginx 是一個功能強大的 Web 服務器和反向代理服務器,它可以用于實現靜態內容的緩存緩存可以分為客戶端緩存和服務端緩存
    的頭像 發表于 05-07 14:03 ?517次閱讀
    Nginx<b class='flag-5'>緩存</b>配置詳解

    nginx中強緩存和協商緩存介紹

    緩存直接告訴瀏覽器:在緩存過期前,無需與服務器通信,直接使用本地緩存
    的頭像 發表于 04-01 16:01 ?336次閱讀

    揭秘:安科瑞實現地鐵等公共交通車站內燈箱智能照明控制的重要性

    痛點直擊:地鐵燈箱照明的“三座大山” 1. 能耗黑洞:傳統燈箱24小時全亮,電費成本居高不下。 2. 維護難題:人工巡檢效率低,突發故障難追溯。 3. 體驗割裂:固定亮度模式無法匹配客流峰谷,乘客
    的頭像 發表于 02-27 14:22 ?402次閱讀
    揭秘:安科瑞實現地鐵等公共交通車站內燈箱智能照明控制的重要性

    臺積電亞利桑那州第三座工廠或于6月動工

    近日,市場傳言臺積電可能加速推進美國亞利桑那州第三座工廠的建設計劃,并計劃在6月份舉行動工典禮。這一消息引起了業界的廣泛關注。 針對此傳言,臺積電方面進行了回應。他們表示,對于市場傳聞,公司通常不予
    的頭像 發表于 02-18 10:49 ?470次閱讀

    寧德時代計劃在歐洲建立第四電池工廠,深化合資合作戰略

    在近日達沃斯論壇的活動中,寧德時代聯席董事長潘健透露了一個重要消息:公司有望在今年確定其在歐洲的第四電池工廠選址,并繼續沿用與車企合資的合作模式。這一動態標志著寧德時代在歐洲市場的布局正在進一步加深。   寧德時代目前在歐洲已經建立了三座電池工廠,各具戰略意義。
    的頭像 發表于 01-23 14:51 ?830次閱讀

    HTTP緩存頭的使用 本地緩存與遠程緩存的區別

    HTTP緩存頭是一組HTTP響應頭,它們控制瀏覽器和中間代理服務器如何緩存網頁內容。合理使用HTTP緩存頭可以顯著提高網站的加載速度和性能,減少服務器的負載。 1. HTTP緩存頭概述
    的頭像 發表于 12-18 09:41 ?442次閱讀

    緩存之美——如何選擇合適的本地緩存

    Guava cache是Google開發的Guava工具包中一套完善的JVM本地緩存框架,底層實現的數據結構類似于ConcurrentHashMap,但是進行了更多的能力拓展,包括緩存過期時間設置、緩存容量設置、多種淘汰策略、
    的頭像 發表于 11-17 14:24 ?796次閱讀
    <b class='flag-5'>緩存</b>之美——如何選擇合適的本地<b class='flag-5'>緩存</b>?

    甲骨文規劃三座小型核電站賦能AI數據中心

    甲骨文公司近日宣布了一項重大能源戰略,已獲得授權建設三座小型模塊化核反應堆,旨在為旗下龐大的AI數據中心提供清潔、穩定的電力支持。這一創新舉措由公司董事長拉里·埃里森親自披露,彰顯了甲骨文在可持續發展與AI技術融合方面的前瞻視野。
    的頭像 發表于 09-19 18:18 ?1081次閱讀

    什么是CPU緩存?它有哪些作用?

    CPU緩存(Cache Memory)是計算機系統中一個至關重要的組成部分,它位于CPU與內存之間,作為兩者之間的臨時存儲器。CPU緩存的主要作用是減少CPU訪問內存所需的時間,從而提高系統
    的頭像 發表于 08-22 14:54 ?5956次閱讀

    基于望獲實時Linux和飛騰E2000Q CPU的全國產工控解決方案

    隨著智能制造和工業4.0浪潮的席卷,工業生產對控制系統提出了前所未有的挑戰——高精度、高實時性和高可靠性的需求如同三座大山,橫亙在行業發展之路上。然而,環顧當前市場,高性能的國產化工業控制解決方案仍
    的頭像 發表于 08-08 13:48 ?1119次閱讀
    主站蜘蛛池模板: 国语对白一区二区三区 | 人人上人人干 | 亚洲免费色图 | 免费视频h| 色视频在线网站 | 午夜亚洲国产 | 国产片一级aaa毛片视频 | 成人精品一级毛片 | 女人午夜啪啪性刺激免费看 | 8050午夜一级二级全黄 | 成人国产三级在线播放 | 男女在线免费视频 | 拍拍拍美女黄色1000视频 | 久久国内 | 午夜a视频| 久久精品国产亚洲婷婷 | 欧美精品一二区 | 久久婷婷综合五月一区二区 | 成年女人免费看一级人体片 | 操美女免费视频 | 中国美女乱淫免费看视频 | 大美女久久久久久j久久 | 在线小视频你懂的 | 亚洲欧美在线播放 | 操农村妇女 | 色老久久精品偷偷鲁一区 | 日韩a一级欧美一级 | 国产精品视频第一区二区三区 | 国产色视频网站免费观看 | 艹久久 | h视频在线观看视频观看 | 午夜毛片视频高清不卡免费 | 国产福利2021最新在线观看 | 国产美女久久久 | 啪啪网站免费 | 色www免费视频 | 日本一二线不卡在线观看 | 亚洲香蕉国产高清在线播放 | 色婷婷欧美 | 色www视频永久免费 色www视频永久免费软件 | 欧美在线视频二区 |