解決甩鍋的一大難題斤葱,就是留個(gè)憑證

原創(chuàng):猿天地(微信公眾號(hào)ID:cxytiandi),歡迎分享揖闸,轉(zhuǎn)載請(qǐng)保留出處揍堕。

在多個(gè)團(tuán)隊(duì)之間的一些業(yè)務(wù)關(guān)聯(lián)上,內(nèi)部可以Rpc的方式進(jìn)行交互汤纸。某些業(yè)務(wù)其實(shí)不需要強(qiáng)關(guān)聯(lián)衩茸,這個(gè)時(shí)候就會(huì)用消息隊(duì)列進(jìn)行解耦操作。比如下單后加積分贮泞,發(fā)短信通知的這類操作楞慈。

在用消息隊(duì)列的時(shí)候,我們最需要關(guān)注的一個(gè)問(wèn)題就是消息會(huì)不會(huì)丟失啃擦?

這里的丟失指的就是要么你程序有問(wèn)題囊蓝,沒(méi)有發(fā)送出去。要么發(fā)送出去了令蛉,但是在某個(gè)節(jié)點(diǎn)上消息丟掉了聚霜,導(dǎo)致消費(fèi)方?jīng)]有收到你發(fā)送的消息,從而引發(fā)業(yè)務(wù)問(wèn)題珠叔。

對(duì)于消息丟失蝎宇,有很多的解決方案。本文不聊怎么在技術(shù)層面去防止消息丟失运杭,聊另一個(gè)話題:消息到底發(fā)沒(méi)發(fā)送夫啊?

在多團(tuán)隊(duì)之間用消息解耦的場(chǎng)景下更容易出現(xiàn)這類問(wèn)題,另一個(gè)團(tuán)隊(duì)的同學(xué)找你辆憔,說(shuō)你們的消息是不是沒(méi)發(fā)送啊撇眯,我這邊這條數(shù)據(jù)的狀態(tài)沒(méi)流轉(zhuǎn),肯定沒(méi)收到消息虱咧。

然后你屁顛屁顛的去消息隊(duì)列的控制臺(tái)進(jìn)行消息的查詢熊榛,發(fā)現(xiàn)確實(shí)查不到。主要問(wèn)題在于這條數(shù)據(jù)是幾個(gè)月之前的了腕巡,發(fā)送記錄沒(méi)有保存這么久玄坦,所以現(xiàn)在是有口難辯的這么一個(gè)狀態(tài)。


別人說(shuō)你沒(méi)發(fā),但你自己又拿不出來(lái)證據(jù)來(lái)證明自己發(fā)送過(guò)了消息煎楣。所以這個(gè)鍋你只能自己背了豺总。這就是今天要聊的話題,凡事要留個(gè)憑證择懂,方便日后好追溯喻喳,特別是關(guān)鍵的業(yè)務(wù)場(chǎng)景。

存儲(chǔ)發(fā)送記錄到數(shù)據(jù)庫(kù)

既然要留憑證困曙,那么就需要將憑證存儲(chǔ)起來(lái)表伦。消息隊(duì)列的消息量大,肯定不會(huì)全部永久存儲(chǔ)慷丽,一般都是存儲(chǔ)最近幾天的量蹦哼,所以直接利用消息隊(duì)列去查有沒(méi)有發(fā)送只適合最近的消息,時(shí)間比較久的就無(wú)從追溯了要糊。

在消息發(fā)送后纲熏,可以直接存儲(chǔ)到數(shù)據(jù)庫(kù)中,方便后面查詢發(fā)送記錄杨耙。其實(shí)就跟短信記錄一樣的赤套,短信也經(jīng)常會(huì)遇到說(shuō)這個(gè)短信我沒(méi)收到,是不是沒(méi)發(fā)送啊之類的問(wèn)題珊膜。

存儲(chǔ)需要考慮的就是量的問(wèn)題,如果你們每天的消息量很大宣脉,還需要存儲(chǔ)永久的數(shù)據(jù)车柠,那么就得拆分了,或者采用外置其他數(shù)據(jù)庫(kù)進(jìn)行單獨(dú)存儲(chǔ)塑猖,比如MongoDB之類的NoSql竹祷。

存儲(chǔ)發(fā)送記錄到日志

另一種方案就是發(fā)送后直接輸出一條日志即可,因?yàn)榇蟛糠止径加薪y(tǒng)一的日志平臺(tái)羊苟,去收集日志進(jìn)行存儲(chǔ)塑陵。這個(gè)方案就不用占用DB的存儲(chǔ)或者說(shuō)單獨(dú)弄一套Nosql存儲(chǔ),比較省事蜡励。

但是需要注意的是日志的存儲(chǔ)時(shí)間令花,像一些云廠商的日志服務(wù)是可以設(shè)置存儲(chǔ)時(shí)間的,因?yàn)槿罩镜牧吭酱罅挂校杀驹礁摺?/p>

在很久之前就遇到過(guò)發(fā)消息其實(shí)是打印了日志的兼都,但是存儲(chǔ)時(shí)間只有最近一個(gè)月。當(dāng)別人來(lái)問(wèn)你消息有沒(méi)有發(fā)送的時(shí)候稽寒,你會(huì)發(fā)現(xiàn)當(dāng)時(shí)的日志已經(jīng)沒(méi)有了扮碧,所以我們還是需要進(jìn)行永久存儲(chǔ)。

永久存儲(chǔ)也就意味著成本的提高,其實(shí)我們可以將日志分類慎王,普通的日志可以存儲(chǔ)時(shí)間短一點(diǎn)蚓土,一些有用的日志可以單獨(dú)進(jìn)行輸出收集和永久存儲(chǔ)。這類日志的量相對(duì)少一點(diǎn)赖淤,成本可控北戏。

直接用本地消息表發(fā)送

除了用開源的消息隊(duì)列,很多公司也都會(huì)用本地消息表漫蛔,單獨(dú)的消息服務(wù)嗜愈,基于數(shù)據(jù)庫(kù)設(shè)計(jì)的消息隊(duì)列這些形式來(lái)發(fā)送消息。這些形式的特點(diǎn)就是本身就基于DB做的持久化莽龟,所以對(duì)于查找有沒(méi)有發(fā)送過(guò)消息是天然支持的蠕嫁。當(dāng)然也有可能量大后即使分庫(kù)分表了,后期還是要擴(kuò)容或者定期歸檔毯盈,只要數(shù)據(jù)還在這個(gè)鍋就背不了剃毒。

關(guān)于作者:尹吉?dú)g,簡(jiǎn)單的技術(shù)愛(ài)好者搂赋,《Spring Cloud微服務(wù)-全棧技術(shù)與案例解析》, 《Spring Cloud微服務(wù) 入門 實(shí)戰(zhàn)與進(jìn)階》作者, 公眾號(hào)猿天地發(fā)起人赘阀。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市脑奠,隨后出現(xiàn)的幾起案子基公,更是在濱河造成了極大的恐慌,老刑警劉巖宋欺,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轰豆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡齿诞,警方通過(guò)查閱死者的電腦和手機(jī)酸休,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)祷杈,“玉大人斑司,你說(shuō)我怎么就攤上這事〉” “怎么了宿刮?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)特占。 經(jīng)常有香客問(wèn)我糙置,道長(zhǎng),這世上最難降的妖魔是什么是目? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任谤饭,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揉抵。我一直安慰自己亡容,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布冤今。 她就那樣靜靜地躺著闺兢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戏罢。 梳的紋絲不亂的頭發(fā)上屋谭,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音龟糕,去河邊找鬼桐磁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛讲岁,可吹牛的內(nèi)容都是我干的我擂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼缓艳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼校摩!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起阶淘,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤衙吩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后舶治,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體分井,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年霉猛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片珠闰。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惜浅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伏嗜,到底是詐尸還是另有隱情坛悉,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布承绸,位于F島的核電站裸影,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏军熏。R本人自食惡果不足惜轩猩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧均践,春花似錦晤锹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至焦影,卻和暖如春车遂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斯辰。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工舶担, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人椒涯。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓柄沮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親废岂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子祖搓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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