倉儲系統(tǒng)下的數(shù)據(jù)服務(wù)架構(gòu)

數(shù)據(jù)服務(wù)架構(gòu)

方案致力于實(shí)現(xiàn)的是相對靜態(tài)數(shù)據(jù)的緩存一致性問題蜜自,借鑒思想是用于CPU高速緩存和內(nèi)存之間同步的MESI協(xié)議以及內(nèi)存屏障的設(shè)計(jì)思想。在這里我們并不會Push服務(wù)去完成每塊數(shù)據(jù)的更新或者刪除泄私,數(shù)據(jù)中間件的職責(zé)是發(fā)出緩存失效標(biāo)記且確認(rèn)緩存失效標(biāo)記被準(zhǔn)確接收,緩存的更新工作應(yīng)由服務(wù)方實(shí)現(xiàn)备闲。
數(shù)據(jù)更新流程如下:
1晌端、各服務(wù)啟動,并發(fā)送監(jiān)控標(biāo)記和監(jiān)聽標(biāo)記至資源注冊中心
2恬砂、服務(wù)節(jié)點(diǎn)發(fā)送SQL執(zhí)行請求至MySQL中間件
3咧纠、中間件記錄日志,并下發(fā)請求至MySQL服務(wù)器
(注:此處有多種實(shí)現(xiàn)泻骤,a漆羔、請求發(fā)送至MySQL中間件,中間件進(jìn)行請求透傳狱掂;b演痒、請求發(fā)送至MySQL服務(wù)器,但是我們可以偽裝一個Slave節(jié)點(diǎn)符欠,進(jìn)行主從Dump復(fù)制嫡霞,像阿里的canal即此種思路;c希柿、第三種思路诊沪,在框架層接入MyBatis或者JPA攔截器养筒,進(jìn)行日志記錄發(fā)送至指定地址進(jìn)行日志分析即可,可選用logstash)
4端姚、中間件發(fā)送記錄日志至資源注冊中心
5晕粪、資源注冊中心分析日志,讀取固化的資源注冊節(jié)點(diǎn)并發(fā)送緩存失效標(biāo)記至各注冊節(jié)點(diǎn)渐裸,此處選用RocketMQ作為消息組件發(fā)送巫湘,保證每個Consumer都可以接收到失效事件
6、注冊節(jié)點(diǎn)進(jìn)入預(yù)更新姿態(tài)昏鹃,使自身緩存標(biāo)記失效
7尚氛、通知失敗節(jié)點(diǎn)重復(fù)嘗試至最大預(yù)設(shè)置次數(shù),若依然失敗標(biāo)記服務(wù)不可用洞渤,發(fā)出異常告警阅嘶,通過通知中心即時發(fā)送異常給運(yùn)維人員
8、注冊節(jié)點(diǎn)下次讀取時先預(yù)讀緩存標(biāo)記载迄,發(fā)現(xiàn)已失效讯柔,則更新緩存并重置緩存失效標(biāo)記
方案注:
1、借助隊(duì)列實(shí)現(xiàn)緩存更新的并發(fā)問題护昧,如Disruptor魂迄,按照時間戳排序更新
2、熱點(diǎn)數(shù)據(jù)和靜態(tài)數(shù)據(jù)的更新方案完全不同惋耙,熱點(diǎn)數(shù)據(jù)的實(shí)現(xiàn)是單體數(shù)據(jù)服務(wù)緩存+數(shù)據(jù)持久化+分布式緩存一致性解決方案捣炬,原因是更新頻繁,讀取頻繁的數(shù)據(jù)如果實(shí)現(xiàn)的全業(yè)務(wù)服務(wù)下的緩存一致性怠晴,那么緩存是沒有意義的遥金,假設(shè)有兩個數(shù)據(jù)服務(wù)實(shí)例,十五個業(yè)務(wù)實(shí)例蒜田,若采用此種策略,導(dǎo)致的結(jié)果是选泻,數(shù)據(jù)更新一次冲粤,更新代價乘十五,而數(shù)據(jù)實(shí)例間的服務(wù)一致性只需增加一倍更新代價页眯。這里考量的是遠(yuǎn)程調(diào)用代價和緩存更新代價的平衡梯捕。
3、Spring Cloud我們使用了Eureka Server在此處被復(fù)用窝撵,用來做資源注冊中心傀顾,原功能保持不變。這里直接在源碼上增加定制功能或者使用SPI機(jī)制進(jìn)行功能嵌入均可碌奉,不限定實(shí)現(xiàn)方式短曾,這里比較推薦SPI機(jī)制寒砖,因?yàn)槲覀€人信奉:做加法容易,做減法難的準(zhǔn)則<倒铡Aǘ肌!

注:本文中講述的MESI協(xié)議婉徘,內(nèi)存屏障漠嵌,Spring Cloud框架,TCC協(xié)議等概念性術(shù)語需自行了解盖呼,我不想把這篇博客變成科普文儒鹿,見諒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末几晤,一起剝皮案震驚了整個濱河市挺身,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锌仅,老刑警劉巖章钾,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異热芹,居然都是意外死亡贱傀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門伊脓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來府寒,“玉大人,你說我怎么就攤上這事报腔≈晟Γ” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵纯蛾,是天一觀的道長纤房。 經(jīng)常有香客問我,道長翻诉,這世上最難降的妖魔是什么炮姨? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮碰煌,結(jié)果婚禮上舒岸,老公的妹妹穿的比我還像新娘。我一直安慰自己芦圾,他們只是感情好蛾派,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般洪乍。 火紅的嫁衣襯著肌膚如雪眯杏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天典尾,我揣著相機(jī)與錄音役拴,去河邊找鬼。 笑死钾埂,一個胖子當(dāng)著我的面吹牛河闰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播褥紫,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼姜性,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了髓考?” 一聲冷哼從身側(cè)響起部念,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氨菇,沒想到半個月后儡炼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡查蓉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年乌询,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豌研。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡妹田,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鹃共,到底是詐尸還是另有隱情鬼佣,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布霜浴,位于F島的核電站晶衷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏坷随。R本人自食惡果不足惜房铭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望温眉。 院中可真熱鬧,春花似錦翁狐、人聲如沸类溢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闯冷。三九已至砂心,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛇耀,已是汗流浹背辩诞。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纺涤,地道東北人译暂。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像撩炊,于是被迫代替她去往敵國和親外永。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容