工作中有部分業(yè)務(wù)并發(fā)一直都很高旋廷,為了維持高QPS柳洋,所以強(qiáng)依賴了redis集群,但是這么做一直是有風(fēng)險(xiǎn)的熊镣,如果redis集群掛了或者短時(shí)間服務(wù)異常的話,是會(huì)影響到所有業(yè)務(wù)的测蹲,之前就出現(xiàn)過別的業(yè)務(wù)由于bigkey把redis cpu打滿1分鐘鬼吵,導(dǎo)致我們服務(wù)也異常的情況齿椅。
為了避免再次出現(xiàn)這種情況,對(duì)我們強(qiáng)依賴redis的服務(wù)進(jìn)行了優(yōu)化示辈,引入了內(nèi)存作為備用緩存遣蚀。
架構(gòu)圖如下:
關(guān)鍵點(diǎn):
1、更新redis緩存時(shí)险耀,也同步更新本地內(nèi)存玖喘;
2、在redis失效后贬派,查詢本地緩存作為兜底數(shù)據(jù)费尽;
3旱幼、管理后臺(tái)修改數(shù)據(jù)的時(shí)候突委,廣播消息冬三,刷新本地緩存;
4缘缚、通過分布式定時(shí)任務(wù)來定時(shí)更新本地緩存數(shù)據(jù)和redis緩存,達(dá)到最終一致性窝爪;
4齐媒、在應(yīng)用啟動(dòng)的時(shí)候,將特定的數(shù)據(jù)預(yù)熱到本地緩存
優(yōu)點(diǎn):在redis短暫異常時(shí)邀杏,可以通過本地內(nèi)存過度一段時(shí)間唬血,而不至于由于redis異常導(dǎo)致連鎖的服務(wù)不可用;
缺點(diǎn):本地內(nèi)存只能保存很有限的一部分核心或者兜底數(shù)據(jù)脖律,所以在redis異常時(shí)挑随,只是起到一個(gè)降級(jí)作用;