服務(wù)治理 - 超時控制之節(jié)省資源

背景

先介紹普通的超時配置

普通的超時控制:
A - > B - > C -> D
比如B->C 默認超時時間200ms,但是B->C實際調(diào)用了230ms
此時B知道調(diào)用超時了,會處理異?;蛘甙旬惓7祷亟o上游
這里方式較多,比如socket timeout,網(wǎng)上一堆資料

這里,B知道后續(xù)請求超時,B會處理異常返回給A
但是C不知道,C會接著走自己的邏輯,會繼續(xù)把請求發(fā)送給D。對于D來說,這一次請求完全是浪費的,因為不管D處理結(jié)果成功失敗,上游都已經(jīng)當成失敗了。

如何優(yōu)化這樣的場景呢?
工業(yè)界也會有這種情況,尤其是對于底層,中臺這樣的服務(wù),有時候請求過來的時候,上游已經(jīng)當成失敗處理了,這個時候中臺還去處理這些請求,浪費資源和效率

設(shè)計方式

這里只是提出簡單的思路,并不給出詳細的實現(xiàn)代碼
上下游調(diào)用的時候設(shè)置一個TTL
每次調(diào)用請求的時候,在請求rpc context里面?zhèn)鬟f一下TTL,記錄剩余多長時間。
那么,

上游調(diào)用下游時,檢查當前的TTL是否<0,是的話就不調(diào)用了,節(jié)省下游資源
下游被上游調(diào)用時,同理,就直接返回錯誤。

思考

1.上面的例子都是簡單的串行化例子,實際上還有ABCD串行化調(diào)用過程中,BC兩步單獨沒有超時,但是整體已經(jīng)超過了A的時間,此時C向D發(fā)出請求時,TTL也是<0
2.業(yè)務(wù)本地的處理邏輯還是會走完的。ABCD請求上面都正常,D本身超時了,D自己的業(yè)務(wù)邏輯也會走完。
3.這種檢測機制可以放在middleware里面處理,通過這種方式,能減少在上游整體超時或者單個上游自身超時的情況下,對下游的請求量。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運行工作負責人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 10,458評論 0 13
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,993評論 0 2
  • 高級鉗工應(yīng)知鑒定題庫(858題) ***單選題*** 1. 000003難易程度:較難知識范圍:相關(guān)4 01答案:...
    開源時代閱讀 6,286評論 1 9
  • 怎么如此平靜, 感覺像是走錯了片場.為什么呢, 因為上下游工作在同一個線程呀騷年們! 這個時候上游每次調(diào)用emit...
    Young1657閱讀 1,672評論 2 1
  • 海爾企業(yè)文化,卡薩帝產(chǎn)品知識了解 海爾作為500強企業(yè)大有可為,在海爾定可大展宏圖。 海爾有優(yōu)越的價值觀,有優(yōu)秀的...
    212cb7b667e0閱讀 183評論 0 0

友情鏈接更多精彩內(nèi)容