超時管理器,用於實現請求回包超時回調處理。
每個請求發送給下游RPC-server,會在上下文管理器中保存req-id與上下文的信息,上下文中保存了請求不少相關信息,例如req-id,回包回調,超時回調,發送時間等。編程
超時管理器啓動timer對上下文管理器中的context進行掃描,看上下文中請求發送時間是否過長,若是過長,就再也不等待回包,直接超時回調,推進業務流程繼續往下走,並將上下文刪除掉。異步
若是超時回調執行後,正常的回包又到達,經過req-id在上下文管理器裏找不到上下文,就直接將請求丟棄。
畫外音:由於已經超時處理了,沒法恢復上下文。線程
不管如何,異步回調和同步回調相比,除了序列化組件和鏈接池組件,會多出上下文管理器,超時管理器,下游收發隊列,下游收發線程等組件,而且對調用方的調用習慣有影響。
畫外音:編程習慣,由同步變爲了回調。server
異步回調能提升系統總體的吞吐量,具體使用哪一種方式實現RPC-client,能夠結合業務場景來選取。隊列