精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺談架構(gòu)設(shè)計(jì)中的緩存技術(shù)

西西 ? 來源:今日頭條 ? 作者:java技術(shù)小碼農(nóng) ? 2020-01-01 10:18 ? 次閱讀

緩存在架構(gòu)設(shè)計(jì)中占有重要地位。緩存在提升性能中也扮演重要的角色。常見的有對(duì)資源的緩存,比如數(shù)據(jù)庫(kù)連接池、http連接池,還有對(duì)數(shù)據(jù)的緩存等。緩存的設(shè)計(jì)可復(fù)雜也可簡(jiǎn)單,但是需要考慮的點(diǎn)卻很多。

緩存對(duì)象

設(shè)計(jì)緩存的時(shí)候一定要考慮的是,緩存的對(duì)象是什么,緩存哪些對(duì)象。緩存對(duì)象一定是熱數(shù)據(jù),也就是頻繁被訪問。把對(duì)象加載到內(nèi)存是以犧牲內(nèi)存為代價(jià)的,如果緩存的對(duì)象不經(jīng)常訪問,那么就是在浪費(fèi)內(nèi)存,并且不但不會(huì)提升性能,還會(huì)因?yàn)槊新实偷脑蚪档托阅堋?/p>

緩存的大小

因?yàn)閮?nèi)存是有限的,所以緩存不能無限大,那么就要決定緩存多少數(shù)據(jù)以保證內(nèi)存不被撐爆。

緩存一致性

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

緩存在哪里

對(duì)于緩存數(shù)據(jù)的存儲(chǔ)位置也是需要考慮的。如果是分布式系統(tǒng)或者近期會(huì)重構(gòu)成分布式的系統(tǒng),緩存需要集中存儲(chǔ),比如使用redis做緩存。如果是單機(jī)系統(tǒng),最簡(jiǎn)單的方式就是緩存到內(nèi)存中。緩存的存儲(chǔ)位置的訪問一定要快于數(shù)據(jù)的存儲(chǔ)位置,不然緩存就沒有意義了。

緩存流程

淺談架構(gòu)設(shè)計(jì)中的緩存技術(shù)

緩存流程

經(jīng)典緩存問題

1.緩存穿透

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

2.緩存擊穿

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

3.緩存雪崩

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

建議

不建議在架構(gòu)設(shè)計(jì)的最初階段就采用緩存。首先,采用緩存容易掩蓋一些問題,比如業(yè)務(wù)邏輯導(dǎo)致的性能低下在由于緩存的存在在初期不容易暴露;再有就是在最初階段有的時(shí)候很難去判斷什么是熱數(shù)據(jù)什么是冷數(shù)據(jù),需要緩存什么;如果已經(jīng)確定要在系統(tǒng)中引入緩存那么一定要考慮好上面的幾點(diǎn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 緩存
    +關(guān)注

    關(guān)注

    1

    文章

    233

    瀏覽量

    26646
  • 架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    509

    瀏覽量

    25447
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    軟件架構(gòu)設(shè)計(jì)教程

    軟件架構(gòu)設(shè)計(jì)教程
    發(fā)表于 09-26 15:27

    汽車電子電氣架構(gòu)設(shè)計(jì)及優(yōu)化措施

    我國(guó)公路建設(shè)事業(yè)的蓬勃發(fā)展導(dǎo)致在汽車行業(yè)的電子電氣架構(gòu)設(shè)計(jì)越來越體現(xiàn)消費(fèi)者對(duì)汽車人性化、舒適化與美觀性的現(xiàn)實(shí)需求。設(shè)計(jì)汽車的電子電氣架構(gòu)是一項(xiàng)工程量較大的工作,它涉及了硬件、軟件、網(wǎng)絡(luò)、線束等方面
    發(fā)表于 10-18 22:10

    手機(jī)機(jī)構(gòu)設(shè)計(jì)淺談

    手機(jī)機(jī)構(gòu)設(shè)計(jì)淺談
    發(fā)表于 11-13 11:21

    淺談分布式緩存技術(shù)

    wiki上定義的緩存:用于存儲(chǔ)數(shù)據(jù)的硬件或軟件組件,以便后續(xù)訪問相應(yīng)的數(shù)據(jù)更快。高速緩存的數(shù)據(jù)可以是預(yù)先計(jì)算的結(jié)果,數(shù)據(jù)的副本等。典型應(yīng)用場(chǎng)景:cpucache,磁盤緩存等。本文中提
    發(fā)表于 11-16 15:45

    架構(gòu)設(shè)計(jì)應(yīng)用級(jí)緩存回收策略

      緩存,筆者的理解是讓數(shù)據(jù)更接近于使用者,目的是讓訪問速度更快。工作機(jī)制是先從緩存讀取數(shù)據(jù),如果沒有,再?gòu)穆僭O(shè)備上讀取實(shí)際數(shù)據(jù)并同步到緩存。那些經(jīng)常讀取的數(shù)據(jù),頻繁訪問的數(shù)據(jù)、熱
    發(fā)表于 01-14 17:08

    STM32軟件架構(gòu)設(shè)計(jì)的意義

    STM32軟件架構(gòu)1、架構(gòu)設(shè)計(jì)的意義(1)應(yīng)用代碼邏輯清晰,且避免代碼冗余;(2)代碼通用性,方便軟件高速、有效的移植;(3)各功能獨(dú)立,低耦合高內(nèi)聚;2、總體架構(gòu)圖3、結(jié)構(gòu)層說明4、遵循規(guī)則5、優(yōu)劣評(píng)估6、STM32實(shí)例說明
    發(fā)表于 08-04 07:23

    對(duì)嵌入式系統(tǒng)架構(gòu)設(shè)計(jì)的理解

    【閱讀這篇文章,你能了解到什么】1. 從事嵌入式開發(fā)12年的我,對(duì)架構(gòu)設(shè)計(jì)的理解;2. 對(duì)嵌入式系統(tǒng)架構(gòu)設(shè)計(jì)要刻意訓(xùn)練;3. 嵌入式系統(tǒng)開發(fā)過程的一些小技巧;4. 一個(gè)用于智能家
    發(fā)表于 11-08 08:23

    嵌入式軟件架構(gòu)設(shè)計(jì)資料分享

    作為程序員,我覺得如果要走的更遠(yuǎn)必須要成為工程師,畢竟年齡和資歷都擺在那里了。所以就讓我這個(gè)老程序員淺談一下嵌入式軟件架構(gòu)設(shè)計(jì)。我參考的也是一篇博文。原圖如下![在這里插入圖片描述](?x-oss-process=image/watermark,type_ZmFuZ3po
    發(fā)表于 12-24 07:09

    淺談三層架構(gòu)原理

    淺談三層架構(gòu)原理
    發(fā)表于 01-16 09:14

    淺談PLC控制系統(tǒng)設(shè)計(jì)要點(diǎn)及其在使用的問題

    淺談PLC控制系統(tǒng)設(shè)計(jì)要點(diǎn)及其在使用的問題 PLC是工業(yè)自動(dòng)化的基礎(chǔ)平臺(tái)。PLC應(yīng)用系統(tǒng)設(shè)計(jì)的首要問題是工程選型與編程平臺(tái)的架構(gòu)設(shè)
    發(fā)表于 06-16 13:47 ?667次閱讀

    系統(tǒng)架構(gòu)設(shè)計(jì)的詳細(xì)講解

    上一篇,我們討論了故障度量和安全機(jī)制的ASIL等級(jí)。本篇我們來聊一聊系統(tǒng)架構(gòu)設(shè)計(jì)相關(guān)內(nèi)容。01系統(tǒng)架構(gòu)設(shè)計(jì)和TSC當(dāng)我們開始寫TSC時(shí),會(huì)涉及到下圖中一系列的內(nèi)容:當(dāng)我們完成前三期(鏈接見文末)提到的安全機(jī)制規(guī)范后,我們就要開始整理好所有的安全需求并在系統(tǒng)
    的頭像 發(fā)表于 12-24 14:33 ?1687次閱讀

    SWE.2的軟件架構(gòu)設(shè)計(jì)

    過程ID:SWE.2 過程名稱:軟件架構(gòu)設(shè)計(jì) 過程目的:軟件架構(gòu)設(shè)計(jì)過程目的是建立一個(gè)架構(gòu)設(shè)計(jì),識(shí)別哪些軟件需求應(yīng)該分配給軟件的哪些要素,并根據(jù)已定義的標(biāo)準(zhǔn)評(píng)估軟件架構(gòu)設(shè)計(jì)。 ? 過程
    的頭像 發(fā)表于 01-11 10:36 ?2734次閱讀

    SYS.3的系統(tǒng)架構(gòu)設(shè)計(jì)

    計(jì)。 過程結(jié)果:為了成功地執(zhí)行了這一過程: 1)系統(tǒng)架構(gòu)設(shè)計(jì)的定義是識(shí)別系統(tǒng)的組成部分; 2)系統(tǒng)需求被分配到系統(tǒng)的要素; 3)定義了各系統(tǒng)要素的接口; 4)定義了系統(tǒng)要素的動(dòng)態(tài)行為; 5)在系統(tǒng)需求和系統(tǒng)架構(gòu)設(shè)計(jì)之間建立一致
    的頭像 發(fā)表于 02-13 16:02 ?2640次閱讀

    架構(gòu)與微架構(gòu)設(shè)計(jì)

    下面將從芯片的架構(gòu)設(shè)計(jì)、微架構(gòu)設(shè)計(jì)、使用設(shè)計(jì)文檔、設(shè)計(jì)分區(qū)、時(shí)鐘域和時(shí)鐘組、架構(gòu)調(diào)整與性能改進(jìn)、處理器微架構(gòu)設(shè)計(jì)策略等角度進(jìn)行說明,并以視頻H.264編碼器設(shè)計(jì)為例。
    的頭像 發(fā)表于 05-08 10:42 ?1160次閱讀
    <b class='flag-5'>架構(gòu)</b>與微<b class='flag-5'>架構(gòu)設(shè)</b>計(jì)

    SWE.2軟件架構(gòu)設(shè)計(jì)

    過程ID : SWE.2 過程名稱 : 軟件架構(gòu)設(shè)計(jì) 過程目的 : 軟件架構(gòu)設(shè)計(jì)過程目的是建立一個(gè)架構(gòu)設(shè)計(jì),識(shí)別哪些軟件需求應(yīng)該分配給軟件的哪些要素,并根據(jù)已定義的標(biāo)準(zhǔn)評(píng)估軟件架構(gòu)設(shè)計(jì)
    的頭像 發(fā)表于 08-24 09:43 ?909次閱讀