本文主要介紹redis在千萬級系統中設計架構方案,包括主架構設計、緩存一緻性方案、大value處理方案和redis限流和故障恢複降級方案
緩存架構主架構圖:
主架構中包括緩存叢集、緩存限流、緩存大value處理、HotKey探測系統、redis故障恢複降級和redis-mysql資料同步
緩存一緻性解決方案:
一、對于所有的DB操作都不去添加具體的删除緩存的操作,而是通過canal監聽binlog的方式
二、待資料确認已送出到資料庫後,通過監聽的變化,解析出對應的資料後,過濾掉非增删改的
binlog
三、然後通過常量類配置的需要處理資料一緻性的相關表以及關鍵字段和緩存字首key,進行組裝出需要進行删除的緩存key。并且通過mq的ack機制來保證緩存一定會被删除掉。
緩存限流解決方案:
防止redis崩潰之後,系統無法正常運轉,是以我們需要做一個降級處理。
系統操作redis的所有方法一般都是通過RedisCache和Redislock兩個類來處理的,是以我們通過AOP切面的方式,對這兩個類中的所有方法做一個切面,如果在這裡執行redis操作的時候,redis挂掉了,連接配接失敗了,那麼方法會抛異常,我們在切面處理方法上,捕捉異常,然後記錄一下是redis挂掉還是網絡暫時的波動
大Value處理方案: