接口超時(shí)

當(dāng)設(shè)計(jì)的業(yè)務(wù)流程或者功能需要調(diào)用其他接口實(shí)現(xiàn)請(qǐng)求與響應(yīng)的時(shí)候捺癞,可能由于網(wǎng)絡(luò)等原因?qū)е碌慕涌诔瑫r(shí)導(dǎo)致業(yè)務(wù)中斷或者功能反饋有誤等距淫。所以袖扛,對(duì)接口超時(shí)的知識(shí)做一個(gè)積累。

1弯蚜、接口資源(Mysql孔轴、Redis、Memcached碎捺、HTTP 接口)具備這樣一些特點(diǎn):

(1)都是網(wǎng)絡(luò)接口:網(wǎng)絡(luò)會(huì)成為影響因素

(2)這些資源的可用性路鹰,連接速度、讀取速度不可控

(3)分層模式收厨,對(duì)于調(diào)用方來(lái)說(shuō)晋柱,只明確是否能夠讀取數(shù)據(jù)、數(shù)據(jù)是否正確诵叁;對(duì)于資源提供方來(lái)說(shuō)負(fù)責(zé)具體的數(shù)據(jù)邏輯雁竞。

2、所以涉及到接口開(kāi)發(fā)時(shí)拧额,需要注意(產(chǎn)品更多的關(guān)注點(diǎn))

(1)超時(shí)機(jī)制:對(duì)于資源可能會(huì)很慢碑诉,對(duì)于應(yīng)用程序來(lái)說(shuō)彪腔,一個(gè) HTTP 接口,假如返回?cái)?shù)據(jù)需要十秒联贩,本身是不可接受的那么漫仆,所以需要一個(gè)超時(shí)機(jī)制,結(jié)束這個(gè)資源調(diào)配的進(jìn)程

(2)重試機(jī)制:假如一個(gè)資源特別重要泪幌,可以采取失敗重試。比如下單跟第三方接口確認(rèn)訂單時(shí)署照,出現(xiàn)中斷等原因?qū)е陆涌诜祷赜姓`祸泪,可以進(jìn)行重試請(qǐng)求

(3)異常處理機(jī)制:當(dāng)請(qǐng)求或者返回出現(xiàn)問(wèn)題,導(dǎo)致功能無(wú)法正確發(fā)揮效果的時(shí)候建芙,不應(yīng)該僅是簡(jiǎn)單處理為返回空值没隘,最好能明確產(chǎn)生異常的原因。同時(shí)禁荸,告知用戶(hù)該操作失敗的原因右蒲,和操作補(bǔ)償,怎么樣才讓用戶(hù)將該流程繼續(xù)赶熟。

3瑰妄、與用戶(hù)的交互(產(chǎn)品更多的關(guān)注點(diǎn))

http://naotu.baidu.com/file/51ee300b0b53b79a9a8e52ecd9a40e69?token=fa42fb62487d60fb

思路

4、研發(fā)技術(shù)上可能可以嘗試的解決方案:

(1)增加超時(shí)時(shí)間

假設(shè)A系統(tǒng)有個(gè)方法methodA映砖,會(huì)調(diào)用B系統(tǒng)的methodB這個(gè)http接口间坐,如果mehodA不追求超快的響應(yīng)速度,那么你在調(diào)用methodB這個(gè)http接口時(shí)邑退,可以增長(zhǎng)超時(shí)時(shí)間竹宋,例如10秒超時(shí)。因?yàn)榻?jīng)常在某些時(shí)刻地技,由于網(wǎng)絡(luò)原因或者系統(tǒng)原因蜈七,調(diào)用method會(huì)超時(shí)的。

(2)嘗試多調(diào)用一次

如果第一次調(diào)用methodB超時(shí)了莫矗,那么你可以嘗試多調(diào)用一次飒硅。當(dāng)然前提是,methodA不追求超快的響應(yīng)時(shí)間趣苏。

(3)使用待處理隊(duì)列

如果methodA需要很快的響應(yīng)速度狡相,那么當(dāng)調(diào)用methodB接口超時(shí)時(shí),可以使用一個(gè)隊(duì)列存儲(chǔ)本次失敗的記錄食磕,然后使用一個(gè)job每隔一段時(shí)間去掃這個(gè)隊(duì)列尽棕,看看是否有待處理的數(shù)據(jù)。

備注:如果對(duì)方系統(tǒng)掛掉了彬伦,使用待處理隊(duì)列的方式滔悉,比較合適伊诵。

(4)回滾數(shù)據(jù)

catch這個(gè)超時(shí)異常,然后記錄日志后回官,拋出這個(gè)異常曹宴,并把之前的數(shù)據(jù)回滾。讓對(duì)方的系統(tǒng)重新調(diào)用歉提。

備注:寧愿沒(méi)有數(shù)據(jù)笛坦,也不要存儲(chǔ)臟數(shù)據(jù)。

(5)使用異步機(jī)制

如果你的業(yè)務(wù)方法中苔巨,需要調(diào)用對(duì)方的http接口版扩,如果這個(gè)http接口不影響主流程的,那么可以使用一個(gè)線(xiàn)程侄泽,異步調(diào)用對(duì)方的http接口礁芦,并把超時(shí)時(shí)間設(shè)置長(zhǎng)一些。由于使用了異步悼尾,主流程會(huì)立刻繼續(xù)走的柿扣。

(6)問(wèn)題:調(diào)用第三方支付接口響應(yīng)時(shí)間超過(guò)10秒,導(dǎo)致大量線(xiàn)上訂單因?yàn)槌瑫r(shí)失敗闺魏,該接口是實(shí)時(shí)返回結(jié)果的未状,而且不是一直都慢,是偶爾慢舷胜。

解決方法:調(diào)用接口時(shí)設(shè)置超時(shí)時(shí)間娩践,當(dāng)接口超過(guò)9秒未返回結(jié)果,自動(dòng)將改訂單設(shè)置為處理中烹骨,然后后由定時(shí)任務(wù)調(diào)用查詢(xún)接口翻伺。

這樣就把,一個(gè)實(shí)時(shí)返回結(jié)果的接口沮焕,當(dāng)成一個(gè)異步的接口來(lái)用了吨岭,總比一大堆失敗訂單等著財(cái)務(wù)來(lái)找好。

可查看鏈接:

http://wulijun.github.io/2012/08/08/php-timeout-summary.html

http://www.reibang.com/p/8555ce285375

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末峦树,一起剝皮案震驚了整個(gè)濱河市辣辫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌魁巩,老刑警劉巖急灭,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異谷遂,居然都是意外死亡葬馋,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)畴嘶,“玉大人蛋逾,你說(shuō)我怎么就攤上這事〈懊酰” “怎么了区匣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蒋院。 經(jīng)常有香客問(wèn)我亏钩,道長(zhǎng),這世上最難降的妖魔是什么欺旧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任铸屉,我火速辦了婚禮,結(jié)果婚禮上切端,老公的妹妹穿的比我還像新娘。我一直安慰自己顷啼,他們只是感情好踏枣,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著钙蒙,像睡著了一般茵瀑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上躬厌,一...
    開(kāi)封第一講書(shū)人閱讀 52,337評(píng)論 1 310
  • 那天马昨,我揣著相機(jī)與錄音,去河邊找鬼扛施。 笑死鸿捧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的疙渣。 我是一名探鬼主播匙奴,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼妄荔!你這毒婦竟也來(lái)了泼菌?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啦租,失蹤者是張志新(化名)和其女友劉穎哗伯,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體篷角,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡焊刹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伴澄。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赋除,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出非凌,到底是詐尸還是另有隱情举农,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布敞嗡,位于F島的核電站颁糟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏喉悴。R本人自食惡果不足惜棱貌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望箕肃。 院中可真熱鬧婚脱,春花似錦、人聲如沸勺像。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吟宦。三九已至篮洁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間殃姓,已是汗流浹背袁波。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜗侈,地道東北人篷牌。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像宛篇,于是被迫代替她去往敵國(guó)和親娃磺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理叫倍,服務(wù)發(fā)現(xiàn)偷卧,斷路器,智...
    卡卡羅2017閱讀 134,702評(píng)論 18 139
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 11,005評(píng)論 6 13
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛(ài)閱讀 1,990評(píng)論 0 7
  • iOS網(wǎng)絡(luò)編程讀書(shū)筆記 Facade Tester客戶(hù)端門(mén)面模式的實(shí)例(被動(dòng)版本化) 被動(dòng)版本化吆倦,所以硬編碼URL...
    melouverrr閱讀 1,610評(píng)論 3 7
  • 文/以恒 ‖ 2017堅(jiān)持簡(jiǎn)書(shū)日更 第186篇 ‖ 轉(zhuǎn)載請(qǐng)聯(lián)系作者授權(quán) 1听诸、 這幾天,我有很多快遞蚕泽,幾乎每天都要下...
    Amy啊愛(ài)米呀閱讀 457評(píng)論 1 1