關於timeOut超時後是否會回滾的思考

2022-03-12 08:17:41 字數 530 閱讀 8182

場景: 假設有2個系統,a和b,a系統呼叫b系統的介面,b系統正確接收到請求,但是由於介面內部業務邏輯複雜,耗時較長。導致a系統那邊請求超時,於是a系統就斷開了與b系統的連線。那麼當a系統開端連線時,b系統能同時感受不到連線斷開嗎? 如果b系統不能同時感受到,當介面內部邏輯處理完成後需要返回結果進行return時,由於連線已斷開,會否出現異常? b系統由於連線斷開的異常會否導致介面內部事務的回滾?

環境準備: macos系統,openjdk11, dubbo(2.5.3版本),springboot

結論:dubbo網路部分使用的netty,當b系統的介面內部邏輯處理完成後,最後會將需要return的內容傳遞到 netty的 nio worker類  writefromusercode 方法裡使用 netty  自己自定義的niosocketchannel去傳送訊息到a系統 。再傳送之前,會檢查channel的狀態,由於socket連線已經斷開了,此時channel就是不是「connected」狀態,netty會把異常訊息向外傳送,最後被dubbo捕獲,但是dubbo只是列印了乙個warn日誌,就結束了。

迴圈超時 timeout

使用合作式排程器時,任務執行時間 時標時間,使用迴圈超時和硬體超時的模式能保證,如果任務不在規定的時間內完成,就中止該任務。1.迴圈超時 例1,某微控制器帶有ad模組,手冊應用有以下 while adcon adci 0 這樣的 不可靠,可導致系統被掛起 初始化不正確,不能確定數模轉換被執行 輸入電...

nginx優化 timeout超時配置

nginx在保持著與客戶端的連線時,要消耗cpu 記憶體 網路等資源,如果能在超出一定時間後自動斷開連線,則可以及時釋放資源,起到優化效能 提高效率的作用 對應的原始碼可以訪問這裡獲取 1,keepalive的作用 http 的 keepalive 模式 webserver 在處理完乙個請求後保持這...

dubbo配置timeout超時時間

在dubbo的provider和consumer的配置檔案中,如果都配置了timeout的超時時間,dubbo預設以consumer中配置的時間為準。provider.xml的配置 4000 retries 0 inte ce com.dingding.tms.bms.service.billing...