<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks

    轉(zhuǎn)載請(qǐng)注明出處哈:http://carlosfu.iteye.com/blog/2269678


     

    一、緩存的成本和收益是什么:

     

      既然要討論是否真的需要緩存這個(gè)問(wèn)題,就要知道緩存帶來(lái)的成本與收益(好處、壞處)是什么?

     收益成本
    緩存 + 后端存儲(chǔ)(資源)

    1. 加速讀寫(xiě)

    2. 降低后端負(fù)載

    1. 數(shù)據(jù)不一致性

    2. 代碼維護(hù)成本

    3. 架構(gòu)復(fù)雜度

     

      上面的表格應(yīng)該清楚的表達(dá)了使用緩存后的收益和成本分別是什么。下面將進(jìn)行詳細(xì)的解析

     

    二、緩存成本與收益詳解:

     

      1. 收益是很明顯的,通常來(lái)說(shuō)一個(gè)設(shè)計(jì)還不錯(cuò)的緩存系統(tǒng),能夠幫助你的業(yè)務(wù)實(shí)現(xiàn)加速讀寫(xiě),同時(shí)幫助降低了后端負(fù)載。

       (1) 加速讀寫(xiě):通常來(lái)說(shuō)加速是明顯的,因?yàn)榫彺嫱ǔ6际侨珒?nèi)存的系統(tǒng),而后端(可能是mysql、甚至是別人的HTTP, RPC接口)都有速度慢和抗壓能力差的特性,通過(guò)緩存的使用可以有效的提高用戶的訪問(wèn)速度同時(shí)優(yōu)化了用戶的體驗(yàn)。

       (2) 降低后端負(fù)載:通過(guò)緩存的添加,如果程序沒(méi)有什么問(wèn)題,在命中率還可以的情況下,可以幫助后端減少訪問(wèn)量和復(fù)雜計(jì)算(join、或者無(wú)法在優(yōu)化的sql等),在很大程度降低了后端的負(fù)載。

      2. 成本:

       (1) 數(shù)據(jù)不一致性:無(wú)論你的設(shè)計(jì)做的多么好,緩存數(shù)據(jù)與權(quán)威數(shù)據(jù)源(可以理解成真實(shí)或者后端數(shù)據(jù)源)一定存在著一定時(shí)間窗口的數(shù)據(jù)不一致性,這個(gè)時(shí)間窗口的大小可大可小,具體多大還要看一下你的業(yè)務(wù)允許多大時(shí)間窗口的不一致性。

       (2) 代碼維護(hù)成本:加入緩存后,代碼就會(huì)在原數(shù)據(jù)源基礎(chǔ)上加入緩存的相關(guān)代碼,例如原來(lái)只是一些sql, 現(xiàn)在要加入k-v緩存,必然增加了代碼的維護(hù)成本。

       (3) 架構(gòu)復(fù)雜度:加入緩存后,例如加入了redis-cluster,一般來(lái)說(shuō)緩存不會(huì)像Mysql有專門(mén)的DBA,很有可能沒(méi)有專職的管理人員,所以也增加了架構(gòu)的復(fù)雜度和維護(hù)成本。

     

    三、如何選擇?

     

      如果當(dāng)前系統(tǒng)的訪問(wèn)速度和訪問(wèn)量能夠滿足現(xiàn)有的要求,就不必增加緩存,其實(shí)像mysql并沒(méi)有那么差,一臺(tái)運(yùn)行良好的Mysql,扛?jìng)€(gè)QPS=1000沒(méi)什么問(wèn)題。

      如果要加入選擇了緩存,一定要能給出足夠的理由,不是為了簡(jiǎn)單的show技術(shù)和想當(dāng)然,最好的方法就是用數(shù)據(jù)說(shuō)話:加速比有多少、后端負(fù)載降低了多少。

     

    四、什么樣的場(chǎng)景需要緩存?

     

        在公司里,據(jù)我觀察,無(wú)論怎么更新架構(gòu),使用各種新技術(shù),但是80%的項(xiàng)目還是離不開(kāi)SQL的,下面我們以SQL作為后端數(shù)據(jù)源、以Redis作為緩存層,說(shuō)一下哪些場(chǎng)景是需要緩存的。

    1、復(fù)雜開(kāi)銷(xiāo)大的計(jì)算、降低后端負(fù)載

        以Mysql為例子,一些復(fù)雜的操作或者計(jì)算(例如大量聯(lián)表操作、一些分組計(jì)算),如果不加

    緩存,大量流量將在這些復(fù)雜計(jì)算的執(zhí)行。

     

    2. 加速請(qǐng)求響應(yīng)

        即使單條后端數(shù)據(jù)足夠快(例如select * from table where id=?),那么依然可以利用redis/memcache將這些操作進(jìn)行merge做優(yōu)化(例如:cache(select * from table where id in(id1,id10....idK))),從而優(yōu)化整個(gè)IO鏈的相應(yīng)時(shí)間。

     

     

     

    附圖一張:

     

    posted on 2016-12-20 17:12 jinfeng_wang 閱讀(152) 評(píng)論(0)  編輯  收藏 所屬分類: 2016-REDIS
    主站蜘蛛池模板: 久久久久久免费一区二区三区| 亚洲aⅴ天堂av天堂无码麻豆| 中文字幕无码毛片免费看| 亚洲国产精品自在拍在线播放| 国产亚洲综合一区二区三区| 免费看国产一级特黄aa大片| 精品在线观看免费| 亚洲无码高清在线观看| 中文字幕免费观看全部电影| 亚洲av无码片在线播放| 在线人成精品免费视频| 久久久久精品国产亚洲AV无码| 午夜神器成在线人成在线人免费| 美女被吸屁股免费网站| 亚洲精品久久久www | 91亚洲va在线天线va天堂va国产 | 亚洲精品**中文毛片| 成人AV免费网址在线观看| 日本亚洲色大成网站www久久| 永久免费AV无码网站在线观看| 黄色大片免费网站| 亚洲国产精品无码一线岛国| 四虎免费影院ww4164h| 亚洲爆乳无码专区www| 4338×亚洲全国最大色成网站| 久久香蕉国产线看免费| 亚洲免费福利在线视频| 亚洲精品人成无码中文毛片| 免费无遮挡无码永久视频| 亚洲日韩国产二区无码| 国产成人亚洲综合无码| 免费成人福利视频| 又硬又粗又长又爽免费看 | 日本特黄特黄刺激大片免费| 国产精品成人免费观看| 亚洲午夜精品一区二区公牛电影院| 成人免费淫片在线费观看| 你懂的免费在线观看| 亚洲色一区二区三区四区| 亚洲综合av永久无码精品一区二区| 国产高清不卡免费在线|