實際生成對象是指定接口的代理對象,其中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

