dubbo系列--服務註冊源碼分析

  1. 這一步是把//registry:192.168...替換成//zookeeper:192.168....

  2. 由於我們的url=//zookeeper....。所以通過自適應擴展類的方法可以得出

    registryFactory==RegistryFactory$Adaptive,-----ZookeeperRegistryFactory

再進入ZookeeperRegistryFactory的getRegistry()。進入後發現他並沒有這個方法,那麼我們只好往上找


鎖定註冊中心獲取過程,保證註冊中心單一實例,在看createRegistry方法


這裏使用了設計模式:模板方法模式。具體實現由子類去實現,那麼這裏就應該去ZookeeperRegistFactory中去實現的


這裏面調用的事ZookeeperRegistry的構造方法,那我們進去看看

這裏去鏈接zookeeper,其中connect方式由兩種


原生態的zookeeper鏈接ZkClient


另外一種是CuratorFramework


連接後啓動監聽

返回的事一個ZookeeperRegisty對象


然後從originInvoker中拿到url。然後調用ZookeeperRegistry的registry()方法

但是其中還是沒有此方法,那說明也是在父類中,就在FailbackRegistry中


這裏有個doRegistry()方法,這個方法從設計領域來講,不可能也在這個類中實現,所以也是模板方法模式,也就是在子類中實現doRegistry()方法具體內容。

並且在這個FailbackRegistry類中還定義了其他的由子類自己去實現的方法


由於前面已經做了調用的事ZookeeperRegistry中的registry(),那麼這個doRegistry()方法的實現就是應該在這個類裏面。


這裏就是zookeeper的創建節點,把我們的url地址在zookeeper上創建。

到這裏服務註冊到註冊中心就完畢了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章