分布式二級(jí)緩存組件

簡介

分布式二級(jí)緩存組件冠蒋,本地緩存支持二級(jí)羽圃,遠(yuǎn)端控制協(xié)調(diào)版本,可避免集中式緩存的IO開銷抖剿,尤其是在異地部署同一個(gè)應(yīng)用時(shí)候朽寞,能避免跨區(qū)域通信,提高緩存時(shí)效和可用性斩郎;

適用場景

1脑融、當(dāng)參數(shù)(業(yè)務(wù)參數(shù)、系統(tǒng)參數(shù))需要被多個(gè)應(yīng)用實(shí)例進(jìn)行緩存到本地時(shí)候缩宜,可以使用本組件肘迎;
2、單個(gè)應(yīng)用云上分布式部署時(shí)候锻煌,需要保證各個(gè)實(shí)例緩存的參數(shù)都要最新妓布,可以使用本組件;

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

關(guān)鍵設(shè)計(jì)

數(shù)據(jù)結(jié)構(gòu):Map<String, List<Map<String, Object>>>宋梧,兩個(gè)String分別存儲(chǔ)表名和字段名匣沼。
版本號(hào):用于解決多個(gè)工程之間,數(shù)據(jù)一致性問題捂龄。
Cache:控制手動(dòng)或定時(shí)刷新緩存释涛;提供接口,通過表名獲取數(shù)據(jù)跺讯;提供接口枢贿,通過字段過濾數(shù)據(jù);提供二級(jí)緩存刀脏,數(shù)據(jù)查詢后存入二級(jí)緩存局荚,下次查詢更加快捷。
Redis:用于和Redis數(shù)據(jù)庫交互,獲取或更新版本信息耀态;提供鎖機(jī)制轮傍,保證多個(gè)工程之間更新版本信息時(shí)互不影響。
acc-params-query:提供數(shù)據(jù)查詢接口首装,數(shù)據(jù)結(jié)構(gòu)Map<String, List<Map<String, Object>>>


xxx.png

交互方式

第一步:當(dāng)數(shù)據(jù)庫數(shù)據(jù)更新時(shí)创夜,需通知Redis數(shù)據(jù)庫,更新遠(yuǎn)程版本號(hào)(使用唯一的key值仙逻,一般使用工程名驰吓、系統(tǒng)名、類型等拼接組成)系奉。
第二步:緩存組件定時(shí)(或手動(dòng))向Redis數(shù)據(jù)庫獲取遠(yuǎn)程版本號(hào)檬贰,和本地版本號(hào)進(jìn)行對比,若版本相同缺亮,則說明本地?cái)?shù)據(jù)為最新數(shù)據(jù)翁涤,無需更新;若本地版本與遠(yuǎn)程版本不同萌踱,則需更新本地?cái)?shù)據(jù)葵礼,緩存會(huì)向數(shù)據(jù)請求接口發(fā)送獲取數(shù)據(jù)請求,返回最新數(shù)據(jù)存入本地緩存并鸵,同時(shí)清空二級(jí)緩存鸳粉。
第三步:主工程(父容器)向緩存組件發(fā)起查詢請求后,緩存組件根據(jù)查詢條件(表名园担、字段名等)首先到二級(jí)緩存查詢對應(yīng)數(shù)據(jù)赁严,如果有相應(yīng)的數(shù)據(jù),則直接返回粉铐;若無相應(yīng)數(shù)據(jù),則到本地緩存中獲取相應(yīng)數(shù)據(jù)后返回卤档,并將該數(shù)據(jù)寫入二級(jí)緩存蝙泼。

Maven依賴

 <!--依賴緩存組件,加載緩存數(shù)據(jù)-->
 <dependency>
    <groupId>com.xxx.cache</groupId>
    <artifactId>tw-cache</artifactId>
    <version>1.0.0-SNAPSHOT</version>
 </dependency>

配置信息

# 產(chǎn)品名稱  
zcRedis.key.productCode=xxx
# 系統(tǒng)名稱  
zcRedis.key.systemName=cache
# 系統(tǒng)名(用于區(qū)分使用緩存組件的各個(gè)系統(tǒng)) 
cache.system.name=xxx
# accParams
# 查詢服務(wù)地址,通過系統(tǒng)名獲取對應(yīng)若干張表數(shù)據(jù)
cache.paramServer.url=http://xxx/xxx/queryCashData
# 定時(shí)任務(wù)
cache.refresh.job.schedule=0 0/5 * * * ?

接口

常用接口有:
1劝枣、獲取當(dāng)前類型的所有參數(shù)
List<T> getParamList(Class<T> paramClass)
2汤踏、根據(jù)條件返回單個(gè)對象
T getParamObject(Class<T> paramClass, Map<String, Object> filters)
3、獲取當(dāng)前類型的所有參數(shù)舔腾,優(yōu)先走本地二級(jí)緩存
List<T> getParamList(Class<T> paramClass, Map<String, Object> filters)

使用示例

List<Map<String,Object>> tableData = ParamsCache.getParamList(GlobalKeyEnum.T_OUTMAP_INF.getTableName(),hashMap);
....
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溪胶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子稳诚,更是在濱河造成了極大的恐慌哗脖,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異才避,居然都是意外死亡橱夭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門桑逝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棘劣,“玉大人,你說我怎么就攤上這事楞遏〔缦荆” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵寡喝,是天一觀的道長糙俗。 經(jīng)常有香客問我,道長拘荡,這世上最難降的妖魔是什么臼节? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮珊皿,結(jié)果婚禮上网缝,老公的妹妹穿的比我還像新娘。我一直安慰自己蟋定,他們只是感情好粉臊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驶兜,像睡著了一般扼仲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抄淑,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天屠凶,我揣著相機(jī)與錄音,去河邊找鬼肆资。 笑死矗愧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的郑原。 我是一名探鬼主播唉韭,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼犯犁!你這毒婦竟也來了属愤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對情侶失蹤酸役,失蹤者是張志新(化名)和其女友劉穎住诸,沒想到半個(gè)月后驾胆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡只壳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年俏拱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吼句。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锅必,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惕艳,到底是詐尸還是另有隱情搞隐,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布远搪,位于F島的核電站劣纲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谁鳍。R本人自食惡果不足惜癞季,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望倘潜。 院中可真熱鬧绷柒,春花似錦、人聲如沸涮因。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽养泡。三九已至嗜湃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間澜掩,已是汗流浹背购披。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肩榕,地道東北人今瀑。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像点把,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子屿附,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353