1. 程式人生 > >Dubbo剖析-服務消費端非同步呼叫

Dubbo剖析-服務消費端非同步呼叫

一、前言

前面我們講解的無論是正常呼叫還是泛化呼叫也好,都是進行同步呼叫的,也就是服務消費方發起一個遠端呼叫後,呼叫執行緒要被阻塞掛起,直到服務提供方返回。本節來講解下非同步呼叫,非同步呼叫是指服務消費方發起一個遠端呼叫後,不等服務提供方返回結果,呼叫方法就返回了,也就是當前執行緒不會被阻塞,這就允許呼叫方同時呼叫多個遠端方法。

二、服務端非同步呼叫例項

image.png

可以測試下在sayHello和sayHello2方法內sleep 2s,然後執行呼叫,會發現輸出為costs:2這說明呼叫方的sayHello和sayHello2是併發呼叫的,因為如果是序列的話會輸出costs:4.

三、總結

非同步呼叫是基於 NIO 的非阻塞實現並行呼叫,客戶端不需要啟動多執行緒即可完成並行呼叫多個遠端服務,相對多執行緒開銷較小。後期會在本公眾號 ‘技術原始積累’ 的精品區下分析dubbo非同步實現原理,敬請期待。

歡迎大家加入知識星球,在知識星球裡面我們會深入討論Java併發程式設計,以及JUC包原始碼;Java類載入器原理;Spring,Springboot,Tomcat,Dubbo等開源框架的使用以及原始碼剖析;分享作者從畢業到現在一路走來的學習經驗,如何高效學習,如何閱讀原始碼;討論職業面試時候會經常遇到的問題以及如何作答,讀者可以識別下面二維碼加入: