我想知道在兩種服務之間處理HTTP超時的兩種方法之間的權衡。服務A試圖呼叫服務B.在重試期間調整HTTP超時與退避
方法1時實現重試功能:這是典型的方法(例如以太網原)。執行固定超時時間爲T的請求。如果發生超時,請爲X休眠並重試請求。以指數形式增加X.方法2:不是在重試之間休眠,而是增加實際的HTTP超時值(例如,按指數規律)。在這兩種情況下,考慮一個最大限度。
對於以太網,這是有道理的,因爲它是網絡堆棧中的低層位置。但是,對於應用程序級別的重試機制,方法2更合適?在有高水平的網絡擁塞的情況下,我認爲#2是一對夫婦更好的理由:
- 發送額外的TCP連接請求只會充斥網絡更
- 你基本上保證在你睡覺時沒有收到響應(因爲你已經超時和/或拆除套接字),而如果你只是允許TCP請求保持未完成狀態(或者如果至少建立了連接,則保持套接字打開),你至少有成功的可能性發生。
對此有何看法?
套接字或連接的HTTP超時? –
好問題。我認爲這個論點可以用於超時。我會更新說明中的最後一個項目符號。 – Jmoney38
高網絡擁塞是否意味着消息需要更長時間才能交付,或者是否意味着某些消息只是被丟棄?它可能取決於網絡和應用程序。 – Trilarion