国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

緩存架構(gòu)的理論分析

jeffrey_up / 1736人閱讀

摘要:但實(shí)際情況是緩存是大型網(wǎng)站的標(biāo)配。以上分析告訴我們緩存架構(gòu)要滿足冷熱分離的特征不滿足,因?yàn)槔鋽?shù)據(jù)可能擠走熱數(shù)據(jù)。另外,眾所周知,緩存架構(gòu)還要滿足讀寫(xiě)分離的特征也不滿足,因?yàn)閷?xiě)操作會(huì)爭(zhēng)搶讀操作的資源。這種風(fēng)格需要緩存系統(tǒng)的支持。

問(wèn)題背景

略談服務(wù)端緩存設(shè)計(jì) 一文說(shuō)到緩存不是必須的,因?yàn)閿?shù)據(jù)庫(kù)本身就利用了內(nèi)存。但實(shí)際情況是緩存是大型網(wǎng)站的標(biāo)配。

雖然經(jīng)驗(yàn)顯示RDBMS最快時(shí)只需0~1ms就能響應(yīng),不遜于專門的緩存,但是當(dāng)壓力增大時(shí),性能的下降也是飛快的。隨著業(yè)務(wù)的逐漸復(fù)雜、開(kāi)發(fā)團(tuán)隊(duì)的逐漸擴(kuò)大,難以全面優(yōu)化所有的SQL,數(shù)據(jù)庫(kù)內(nèi)存的命中率難免下降。

數(shù)據(jù)庫(kù)的連接數(shù)是有限的、磁盤(pán)的并發(fā)能力也很差,因此當(dāng)訪問(wèn)量增大或數(shù)據(jù)庫(kù)內(nèi)存命中率下降,平均響應(yīng)速度會(huì)陡然下降;更糟的是,某些查詢導(dǎo)致大量的冷數(shù)據(jù)換入并占用數(shù)據(jù)庫(kù)內(nèi)存(例如全表掃描),真正最需要的熱數(shù)據(jù)暫時(shí)被擋在內(nèi)存外,等到1~100ms(或更久)之后才能重新被讀入數(shù)據(jù)庫(kù)內(nèi)存,到這種時(shí)候,壓力可能爆棚了。

MySQL的buffer pool hit rate指標(biāo)統(tǒng)計(jì)了命中率。

MySQL有類似于分代LRU的機(jī)制,按這個(gè)鏈接調(diào)優(yōu)能有所緩解。

以上分析告訴我們:緩存架構(gòu)要滿足冷熱分離的特征——RDBMS不滿足,因?yàn)槔鋽?shù)據(jù)可能擠走熱數(shù)據(jù)。

另外,眾所周知,緩存架構(gòu)還要滿足讀寫(xiě)分離的特征——RDBMS也不滿足,因?yàn)閷?xiě)操作會(huì)爭(zhēng)搶讀操作的資源。

鑒于這些局限性,RDBMS終歸還是頂不住,緩存成為大型網(wǎng)站的標(biāo)配就是順理成章的了。

方案選擇

略談服務(wù)端緩存設(shè)計(jì) 一文還比較了本地緩存和分布式緩存,首推分布式緩存。那么就要選擇一款緩存系統(tǒng)。而且強(qiáng)烈建議預(yù)先考慮水平擴(kuò)展,如果先用了單機(jī)方案,之后很難不關(guān)機(jī)就在線遷移到基于sharding的集群方案。

緩存系統(tǒng)的選擇,我隨手列一些典型方案(沒(méi)有每個(gè)都用過(guò)),分成三系:
Memcached系:Twemproxy(手動(dòng)rebalance),Couchbase
Redis系:Twemproxy(手動(dòng)rebalance),Codis,官方的Redis Cluster
Java系:Apache Ignite(支持多種語(yǔ)言,兼容Memcached API),基礎(chǔ)性能低于前兩系,但支持SQL查詢、事務(wù)和豐富的數(shù)據(jù)結(jié)構(gòu),還能遠(yuǎn)程執(zhí)行代碼、推送事件通知、對(duì)接本地緩存/數(shù)據(jù)庫(kù)/HDFS等。同類產(chǎn)品有Hazelcast、Gemfire。

應(yīng)用代碼怎么寫(xiě)?通常是:讀操作先get緩存,若沒(méi)有,查數(shù)據(jù)庫(kù),并且set緩存;寫(xiě)操作直達(dá)數(shù)據(jù)庫(kù),并且delete緩存。這種風(fēng)格稱為直寫(xiě)式緩存。

為避免重復(fù)代碼,可以利用AOP:Java可用Spring Cache,另外Hibernate可自動(dòng)管理緩存;支持高階函數(shù)的語(yǔ)言自帶AOP,把數(shù)據(jù)操作變成閉包,外層包一個(gè)處理緩存的函數(shù)。

還有一種風(fēng)格稱為寫(xiě)回式緩存,讀寫(xiě)操作都走緩存,由緩存來(lái)負(fù)責(zé)與數(shù)據(jù)庫(kù)同步。這種風(fēng)格需要緩存系統(tǒng)的支持。

結(jié)語(yǔ)

以上對(duì)問(wèn)題背景和方案選擇都做了分析,尤其觸及一些知識(shí)盲點(diǎn),然而這只是理論。
是的!鑒于實(shí)際環(huán)境的復(fù)雜性(即使是本篇文章也無(wú)法反映真實(shí)情況),最推薦的做法仍然是實(shí)測(cè)!根據(jù)真實(shí)的應(yīng)用場(chǎng)景來(lái)設(shè)計(jì)你的緩存架構(gòu)!(并不是只能線上實(shí)測(cè),可以在測(cè)試環(huán)境盡量模擬。)

最后再推薦一些相關(guān)文章:

Pinterest談實(shí)戰(zhàn)經(jīng)驗(yàn):如何在兩年內(nèi)實(shí)現(xiàn)零到數(shù)百億的月訪問(wèn) http://www.qingjingjie.com/bl...

微博“異地多活”部署經(jīng)驗(yàn)談 http://www.infoq.com/cn/artic...

The Log: What every software engineer should know about real-time data"s unifying abstraction https://engineering.linkedin....

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/61800.html

相關(guān)文章

  • 緩存架構(gòu)理論分析

    摘要:但實(shí)際情況是緩存是大型網(wǎng)站的標(biāo)配。以上分析告訴我們緩存架構(gòu)要滿足冷熱分離的特征不滿足,因?yàn)槔鋽?shù)據(jù)可能擠走熱數(shù)據(jù)。另外,眾所周知,緩存架構(gòu)還要滿足讀寫(xiě)分離的特征也不滿足,因?yàn)閷?xiě)操作會(huì)爭(zhēng)搶讀操作的資源。這種風(fēng)格需要緩存系統(tǒng)的支持。 問(wèn)題背景 略談服務(wù)端緩存設(shè)計(jì) 一文說(shuō)到緩存不是必須的,因?yàn)閿?shù)據(jù)庫(kù)本身就利用了內(nèi)存。但實(shí)際情況是緩存是大型網(wǎng)站的標(biāo)配。 雖然經(jīng)驗(yàn)顯示RDBMS最快時(shí)只需0~1ms...

    APICloud 評(píng)論0 收藏0
  • 緩存架構(gòu)理論分析

    摘要:但實(shí)際情況是緩存是大型網(wǎng)站的標(biāo)配。以上分析告訴我們緩存架構(gòu)要滿足冷熱分離的特征不滿足,因?yàn)槔鋽?shù)據(jù)可能擠走熱數(shù)據(jù)。另外,眾所周知,緩存架構(gòu)還要滿足讀寫(xiě)分離的特征也不滿足,因?yàn)閷?xiě)操作會(huì)爭(zhēng)搶讀操作的資源。這種風(fēng)格需要緩存系統(tǒng)的支持。 問(wèn)題背景 略談服務(wù)端緩存設(shè)計(jì) 一文說(shuō)到緩存不是必須的,因?yàn)閿?shù)據(jù)庫(kù)本身就利用了內(nèi)存。但實(shí)際情況是緩存是大型網(wǎng)站的標(biāo)配。 雖然經(jīng)驗(yàn)顯示RDBMS最快時(shí)只需0~1ms...

    Leck1e 評(píng)論0 收藏0
  • 【面試精選】關(guān)于大型網(wǎng)站系統(tǒng)架構(gòu)你不得不懂10個(gè)問(wèn)題

    摘要:降級(jí)往往會(huì)指定不同的級(jí)別,面臨不同的異常等級(jí)執(zhí)行不同的處理。談?wù)勀銓?duì)和的認(rèn)識(shí)兩者關(guān)系具體可以看公眾號(hào)阿里巴巴中間件的這篇文章獨(dú)家解讀從微服務(wù)框架到微服務(wù)生態(tài)與并不是競(jìng)爭(zhēng)關(guān)系,作為成熟的框架,其易用性擴(kuò)展性和健壯性已得到業(yè)界的認(rèn)可。 該文已加入筆主的開(kāi)源項(xiàng)目——JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識(shí)的文檔類項(xiàng)目),地址:https://github.com/...

    leiyi 評(píng)論0 收藏0
  • 【面試精選】關(guān)于大型網(wǎng)站系統(tǒng)架構(gòu)你不得不懂10個(gè)問(wèn)題

    摘要:降級(jí)往往會(huì)指定不同的級(jí)別,面臨不同的異常等級(jí)執(zhí)行不同的處理。談?wù)勀銓?duì)和的認(rèn)識(shí)兩者關(guān)系具體可以看公眾號(hào)阿里巴巴中間件的這篇文章獨(dú)家解讀從微服務(wù)框架到微服務(wù)生態(tài)與并不是競(jìng)爭(zhēng)關(guān)系,作為成熟的框架,其易用性擴(kuò)展性和健壯性已得到業(yè)界的認(rèn)可。 該文已加入筆主的開(kāi)源項(xiàng)目——JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識(shí)的文檔類項(xiàng)目),地址:https://github.com/...

    luqiuwen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<