SpringCloud 冪等性分布式解決方案

冪等函數(shù),或冪等方法在跳,是指可以使用相同參數(shù)重復(fù)執(zhí)行,并能獲得相同結(jié)果的函數(shù)

研究了很久的冪等性解決方案隐岛。終于實(shí)現(xiàn)了一個(gè)模型猫妙。拋磚引玉,希望各路大神指正

1聚凹、主要是基于Spring MVC的HandlerInterceptorAdapter + ResponseBodyAdvice + redis的分布式鎖割坠。?

2、冪等的請(qǐng)求妒牙。需要在請(qǐng)求中加入header參數(shù)X-REQ-IDEM-ID彼哼,并賦值UUID,用于標(biāo)記同一次請(qǐng)求

3湘今、如果同一請(qǐng)求發(fā)生競(jìng)爭(zhēng)沪羔。通過(guò)redis的nx來(lái)競(jìng)爭(zhēng)鎖。競(jìng)爭(zhēng)失敗的請(qǐng)求返回狀態(tài)碼499

4象浑、如果請(qǐng)求時(shí)蔫饰,當(dāng)前UUID狀態(tài)正在處理中,那么返回499

5愉豺、客戶端收到reponse code 為 499篓吁。則需要通過(guò)重試策略來(lái)獲得執(zhí)行結(jié)束后的值

6、對(duì)于有內(nèi)部轉(zhuǎn)發(fā)的請(qǐng)求的冪等處理方式蚪拦。因?yàn)樵趕ervlet規(guī)范中杖剪,forawrd在一個(gè)jvm里面會(huì)是由同一個(gè)線程處理。而且Spring MVC的不管內(nèi)部出現(xiàn)幾次forward(有人為forward,也有controller? 層向上拋異常的error也會(huì)有forward到默認(rèn)的/error)驰贷,會(huì)在內(nèi)部跳轉(zhuǎn)的結(jié)束后盛嘿,調(diào)用ResponseBodyAdvice。所以只需要關(guān)心ResponseBodyAdvice的內(nèi)部實(shí)現(xiàn)即可

The Container Provider should ensure that the dispatch of the request to a target servlet occurs in the same thread of the same JVM as the original request.

7括袒、代碼和使用手冊(cè)參考:https://github.com/amu007/springcloud-idempotent-starter

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末次兆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子锹锰,更是在濱河造成了極大的恐慌芥炭,老刑警劉巖漓库,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異园蝠,居然都是意外死亡渺蒿,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)彪薛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)茂装,“玉大人,你說(shuō)我怎么就攤上這事善延∩偬” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵挚冤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我赞庶,道長(zhǎng)训挡,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任歧强,我火速辦了婚禮澜薄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘摊册。我一直安慰自己肤京,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布茅特。 她就那樣靜靜地躺著忘分,像睡著了一般。 火紅的嫁衣襯著肌膚如雪白修。 梳的紋絲不亂的頭發(fā)上妒峦,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音兵睛,去河邊找鬼肯骇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛祖很,可吹牛的內(nèi)容都是我干的笛丙。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼假颇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼胚鸯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起笨鸡,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蠢琳,失蹤者是張志新(化名)和其女友劉穎啊终,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體傲须,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蓝牲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泰讽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片例衍。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖已卸,靈堂內(nèi)的尸體忽然破棺而出佛玄,到底是詐尸還是另有隱情,我是刑警寧澤累澡,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布梦抢,位于F島的核電站,受9級(jí)特大地震影響愧哟,放射性物質(zhì)發(fā)生泄漏奥吩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一蕊梧、第九天 我趴在偏房一處隱蔽的房頂上張望霞赫。 院中可真熱鬧,春花似錦肥矢、人聲如沸端衰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)旅东。三九已至,卻和暖如春十艾,著一層夾襖步出監(jiān)牢的瞬間玉锌,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工疟羹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留主守,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓榄融,卻偏偏與公主長(zhǎng)得像参淫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子愧杯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理涎才,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,714評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,863評(píng)論 6 342
  • 從三月份找實(shí)習(xí)到現(xiàn)在耍铜,面了一些公司邑闺,掛了不少,但最終還是拿到小米棕兼、百度陡舅、阿里、京東伴挚、新浪靶衍、CVTE、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,278評(píng)論 11 349
  • 海上月是天上月 心上人是眼前人 你說(shuō)帶我去麗江 見(jiàn)識(shí)艷俗的艷遇之城 擰著你的耳朵的手 后來(lái)鉆進(jìn)你的口袋里走過(guò)零下五...
    東言立閱讀 306評(píng)論 6 4
  • “我叫楊盼”今年28歲出生在農(nóng)村茎芋,生長(zhǎng)在一個(gè)重男輕女的家庭里颅眶。 自幼患病,兩歲時(shí)曾確診先天性肌肉萎縮田弥,經(jīng)過(guò)多年病情...
    盼盼蝸牛漫步閱讀 1,392評(píng)論 19 12