Dubbo剖析-服務消費端非同步呼叫
阿新 • • 發佈:2018-12-22
一、前言
前面我們講解的無論是正常呼叫還是泛化呼叫也好,都是進行同步呼叫的,也就是服務消費方發起一個遠端呼叫後,呼叫執行緒要被阻塞掛起,直到服務提供方返回。本節來講解下非同步呼叫,非同步呼叫是指服務消費方發起一個遠端呼叫後,不等服務提供方返回結果,呼叫方法就返回了,也就是當前執行緒不會被阻塞,這就允許呼叫方同時呼叫多個遠端方法。
二、服務端非同步呼叫例項
image.png可以測試下在sayHello和sayHello2方法內sleep 2s,然後執行呼叫,會發現輸出為costs:2這說明呼叫方的sayHello和sayHello2是併發呼叫的,因為如果是序列的話會輸出costs:4.
三、總結
非同步呼叫是基於 NIO 的非阻塞實現並行呼叫,客戶端不需要啟動多執行緒即可完成並行呼叫多個遠端服務,相對多執行緒開銷較小。後期會在本公眾號 ‘技術原始積累’ 的精品區下分析dubbo非同步實現原理,敬請期待。
歡迎大家加入知識星球,在知識星球裡面我們會深入討論Java併發程式設計,以及JUC包原始碼;Java類載入器原理;Spring,Springboot,Tomcat,Dubbo等開源框架的使用以及原始碼剖析;分享作者從畢業到現在一路走來的學習經驗,如何高效學習,如何閱讀原始碼;討論職業面試時候會經常遇到的問題以及如何作答,讀者可以識別下面二維碼加入: