Dubbo學習筆記——方法調用流程


實際生成對象是指定接口的代理對象,其中InvokerInvocationHandler作為代理對象實質邏輯

調用代理對象的方法,實質上是調用InvokerInvocationHandler.invoke方法,排除掉Object原生方法,屬於接口的方法使用invoker調用

 

MockClusterInvoker默認調用器

先從RegistryDirectory中獲取方法參數mock,默認取false,若為true強制模擬調用;最后嵌套Invoker調用

調用list方法根據調用方法名從registryDirectory中獲取invoker列表,采用負載均衡(默認隨機選擇)選取invoker進行調用

 

RegistryDirectory針對於某一接口而言的,其中存放methodInvokerMap,對所有方法的invoker以方法名為鍵緩存

 

若forbidden標志為真,表示該接口不可用,不存在提供者;forbidden標志在如下位置發生改變

 

接下來是ProtocolFilterWrapper構成公共協議調用,在初始化時通過url構成層級調用invoker鏈,調用鏈的末端是ProtocaolFilterWrapper.buildInvokerChain方法入參,往前追溯,這個入參何處得來?

 

 

可以看到,是由ReferenceConfig.refer方法中調用ProtocolFilterWrapper.refer得來,其中調用了protocol.refer(type,url)

 

這個protol根據協議配置不同而有所不同,這里DubboProtocol,其初始化的是DubboInvoker

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM