1. 程式人生 > >Dubbo重要概念介紹

Dubbo重要概念介紹

1.proxyFactory:就是為了獲取一個介面的代理類,例如獲取一個遠端介面的代理。
它有2個方法,代表2個作用
  a.getInvoker:針對server端,將服務物件,如DemoServiceImpl包裝成一個Invoker物件。
  b.getProxy  :針對client端,建立介面的代理物件,例如DemoService的介面。
  
2.Wrapper:它類似spring的BeanWrapper,它就是包裝了一個介面或一個類,可以通過wrapper對例項物件進行賦值 取值以及制定方法的呼叫。

3.Invoker:它是一個可執行的物件,能夠根據方法的名稱、引數得到相應的執行結果。
       它裡面有一個很重要的方法 Result invoke(Invocation invocation),
  Invocation是包含了需要執行的方法和引數等重要資訊,目前它只有2個實現類RpcInvocation MockInvocation
      它有3種類型的Invoker
    1.本地執行類的Invoker
        server端:要執行 demoService.sayHello,就通過InjvmExporter來進行反射執行demoService.sayHello就可以了。
        
    2.遠端通訊類的Invoker
        client端:要執行 demoService.sayHello,它封裝了DubboInvoker進行遠端通訊,傳送要執行的介面給server端。
        server端:採用了AbstractProxyInvoker執行了DemoServiceImpl.sayHello,然後將執行結果返回傳送給client.
        
    3.多個遠端通訊執行類的Invoker聚合成叢集版的Invoker
        client端:要執行 demoService.sayHello,就要通過AbstractClusterInvoker來進行負載均衡,DubboInvoker進行遠端通訊,傳送要執行的介面給server端。
        server端:採用了AbstractProxyInvoker執行了DemoServiceImpl.sayHello,然後將執行結果返回傳送給client.
        
4.Protocol
  1.export:暴露遠端服務(用於服務端),就是將proxyFactory.getInvoker建立的代理類 invoker物件,通過協議暴露給外部。
  2.refer:引用遠端服務(用於客戶端), 通過proxyFactory.getProxy來建立遠端的動態代理類,例如DemoService的遠端動態介面。
  
5.exporter:維護invoder的生命週期。

6.exchanger:資訊交換層,封裝請求響應模式,同步轉非同步。

7.transporter:網路傳輸層,用來抽象netty和mina的統一介面。

8.Directory:目錄服務
  StaticDirectory:靜態目錄服務,他的Invoker是固定的。
  RegistryDirectory:註冊目錄服務,他的Invoker集合資料來源於zk註冊中心的,他實現了NotifyListener介面,並且實現回撥notify(List<URL> urls),
                             整個過程有一個重要的map變數,methodInvokerMap(它是資料的來源;同時也是notify的重要操作物件,重點是寫