1. 程式人生 > >不同服務調用方式的比較

不同服務調用方式的比較

blog 方式 通信 ner mage 喚醒 它的 比較 遠程服務

1.同步服務調用

技術分享

上圖是同步調用的原理圖,用戶線程在完成消息序列化之後,把消息投遞到通信框架,然後同步阻塞,等待通信線程發送

請求並接收到應答之後,喚醒用戶同步阻塞的線程,用戶線程獲取到應答後返回。

2.異步服務調用

異步調用是基於JDK的Future機制,Future代表了異步操作的結果,用戶可以通過調用它的get方法獲取結果。

技術分享

原理如圖所示。

1.消費者調用服務端發布接口,接口調用由服務框架封裝成動態代理,發起遠程服務調用。

2.通信框架異步發送消息,如果沒有發生I/O異常,返回。

3.消息發送成功,I/O線程構造Future對象,設置到RPC上下文中。

4.用戶線程通過RPC上下文獲取Future對象。

5.構造Listener對象,將其添加到Future中,用於應答服務端異步回調通知。

6.用戶線程返回,不阻塞等待應答。

7.服務端返回應答消息,通信框架反序列化等。

8.I/O將應答設置到Future對象的操作結果中。

9.Future對象掃描註冊監聽器列表,將結果通知給監聽器,監聽器獲取到結果之後,繼續後續業務邏輯的執行。異步調用結束。

不同服務調用方式的比較