<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          緩存雪崩&緩存擊穿&緩存穿透的本質(zhì)

          共 927字,需瀏覽 2分鐘

           ·

          2021-04-13 02:12

          緩存雪崩


          什么是緩存雪崩?

          大量請(qǐng)求無法在緩存中命中,請(qǐng)求達(dá)到數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫壓力增加,進(jìn)而引起存儲(chǔ)服務(wù)故障,引起雪崩。


          為什么會(huì)出現(xiàn)緩存雪崩?

          請(qǐng)求中大量數(shù)據(jù)同時(shí)過期,導(dǎo)致大量請(qǐng)求無法命中。


          怎么解決?

          1. 微調(diào)過期時(shí)間,避免給大量緩存項(xiàng)設(shè)置相同過期時(shí)間,可以采用增加隨機(jī)過期時(shí)間,將大量數(shù)據(jù)過期時(shí)間分開。

          2. 設(shè)置多級(jí)緩存,針對(duì)于可能發(fā)生緩存雪崩的數(shù)據(jù)采用不同的多級(jí)緩存處理,如是核心數(shù)據(jù),允許查詢緩存,未命中則查詢數(shù)據(jù)庫;如查詢的不是核心數(shù)據(jù),暫停從緩存中查詢,直接返回預(yù)定義的默認(rèn)值。


          另一種導(dǎo)致緩存雪崩的情況是,緩存實(shí)例故障宕機(jī),導(dǎo)致無法處理請(qǐng)求,從而把大量請(qǐng)求打到數(shù)據(jù)庫,增加數(shù)據(jù)庫壓力。


          怎么解決?

          1.  業(yè)務(wù)服務(wù)中針對(duì)于讀服務(wù)設(shè)置服務(wù)降級(jí)/熔斷/限流機(jī)制,監(jiān)控redis緩存所在機(jī)器的負(fù)載指標(biāo),如發(fā)現(xiàn)redis緩存實(shí)例宕機(jī),數(shù)據(jù)庫負(fù)載壓力突然增加發(fā)生雪崩風(fēng)險(xiǎn),則立即啟動(dòng)服務(wù)熔斷機(jī)制,暫停業(yè)務(wù)系統(tǒng)對(duì)緩存對(duì)訪問,但是有損的。

          2. 或者業(yè)務(wù)系統(tǒng)在服務(wù)入口進(jìn)行請(qǐng)求限流。

          3. 事前進(jìn)行容量規(guī)劃,搭建redis集群,實(shí)現(xiàn)集群高可用。


          緩存擊穿


          什么是緩存擊穿?

          指的是緩存中無法處理頻繁的熱點(diǎn)數(shù)據(jù),導(dǎo)致大量請(qǐng)求打到數(shù)據(jù)庫,造成數(shù)據(jù)庫壓力,和緩存穿透的區(qū)別在于這個(gè)是熱點(diǎn)key。


          為什么會(huì)出現(xiàn)緩存擊穿?

          熱點(diǎn)數(shù)據(jù)且數(shù)據(jù)過期失效。


          怎么解決?

          因?yàn)榫彺娲┩甘且驗(yàn)槟硞€(gè)熱點(diǎn)key既不在緩存中,也不再數(shù)據(jù)庫中,這樣的請(qǐng)求勢(shì)必不能通過緩存分擔(dān)qps壓力,如果持續(xù)有這樣的請(qǐng)求勢(shì)必會(huì)給緩存實(shí)例和數(shù)據(jù)庫帶來壓力。


          出現(xiàn)此類問題的原因可能是業(yè)務(wù)層導(dǎo)致,比如一個(gè)正常的緩存key被在緩存和數(shù)據(jù)庫誤刪除了,導(dǎo)致緩存和數(shù)據(jù)庫都沒有這個(gè)緩存key了。

          或是由于惡意攻擊,某個(gè)不存在的key。


          解決方式可以設(shè)置一個(gè)默認(rèn)的返回值。

          或是采用布隆過濾器,判斷查詢數(shù)據(jù)是否存在,避免去數(shù)據(jù)庫查詢數(shù)據(jù),從而減輕數(shù)據(jù)庫壓力。

          最好的一種方式就是在業(yè)務(wù)層對(duì)請(qǐng)求參數(shù)的合法性進(jìn)行校驗(yàn)。


          一張圖總結(jié)

          瀏覽 42
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美成人免费专区精品高清 | 国产农村乱╳╳╳乱免费下载 | 五月色丁香亚洲色综合 | 一级国产黄色视频 | 日韩1区 日韩草比 |