日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

緩存在架構設計中占有重要地位。緩存在提升性能中也扮演重要的角色。常見的有對資源的緩存,比如數據庫連接池、http連接池,還有對數據的緩存等。緩存的設計可復雜也可簡單,但是需要考慮的點卻很多。

緩存對象

設計緩存的時候一定要考慮的是,緩存的對象是什么,緩存哪些對象。緩存對象一定是熱數據,也就是頻繁被訪問。把對象加載到內存是以犧牲內存為代價的,如果緩存的對象不經常訪問,那么就是在浪費內存,并且不但不會提升性能,還會因為命中率低的原因降低性能。

緩存的大小

因為內存是有限的,所以緩存不能無限大,那么就要決定緩存多少數據以保證內存不被撐爆。

緩存一致性

緩存一致性是必須要考慮的點。很多緩存設計都忘記了這一點,導致在使用緩存的時候經常返回過期數據。數據在更新的時候,緩存可以采用如下幾個策略:1.將緩存中的數據設置為無效或者刪除,再次查詢的時候重新去數據庫查詢并更新緩存;2.更新數據時,先更新緩存,再更新數據庫或者先更新緩存之后異步刷新到數據庫;3.直接更新數據庫,緩存定期去數據庫同步最新數據,這種方式需要容忍一定時間內的不一致。緩存刷新策略一定要明確。作者本人在工作中遇到過這種情況:更新數據的接口有兩個,其中一個更新緩存后更新數據庫,另一個直接去更新的數據庫,由于沒有同步機制,導致總是偶現數據不一致的情況,而且只能重啟來規避。

緩存在哪里

對于緩存數據的存儲位置也是需要考慮的。如果是分布式系統或者近期會重構成分布式的系統,緩存需要集中存儲,比如使用redis做緩存。如果是單機系統,最簡單的方式就是緩存到內存中。緩存的存儲位置的訪問一定要快于數據的存儲位置,不然緩存就沒有意義了。

緩存流程

架構:緩存設計

緩存流程

經典緩存問題

1.緩存穿透

緩存穿透是指客戶端訪問即不在緩存中的數據又不在數據庫中的數據。這種訪問過多會導致數據庫掛掉影響正常訪問。對于這種問題,可以在數據訪問前做校驗,過濾掉不存在的數據訪問,必須不合法的查詢字段或者使用布隆過濾器,篩選掉不存在的數據;也可以將不存在的數據在緩存中建立空值緩存。

2.緩存擊穿

緩存擊穿是指客戶端訪問不在緩存中但數據庫中存在的數據。如果對某個key的訪問量很大,這個時候緩存過期了,那么就會有很多的訪問漏到數據庫層面去訪問數據。這個問題可以采用如下方法解決:熱點數據常駐緩存;訪問在緩存中沒有拿到數據,在需要去數據庫中訪問數據時加鎖處理,只漏過一個訪問去數據庫查詢數據,并將數據更新到緩存,其他訪問加鎖失敗,后續從緩存中取數據。

3.緩存雪崩

緩存雪崩是指大量的key過期,導致訪問落到數據庫上。這個問題的解決方法如下:1.每個緩存數據設置不同的緩存時間,避免大量的緩存同時過期;2.添加的節點預熱。在需要添加緩存節點的時候,先做緩存預熱,避免大量訪問未命中的情況;3.對于熱點數據的判斷采用延遲的策略。在訪問緩存中不存在的數據的時候,不直接將它設置成最熱數據,而是設置到緩存數據按熱度排序中間的位置,避免某一時刻大量訪問冷數據導致熱數據被剔除緩存的情況。

建議

不建議在架構設計的最初階段就采用緩存。首先,采用緩存容易掩蓋一些問題,比如業務邏輯導致的性能低下在由于緩存的存在在初期不容易暴露;再有就是在最初階段有的時候很難去判斷什么是熱數據什么是冷數據,需要緩存什么;如果已經確定要在系統中引入緩存那么一定要考慮好上面的幾點。

分享到:
標簽:架構
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定