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

  1. 這一步是把//registry:192.168...替換成//zookeeper:192.168....設計模式

  2. 因爲咱們的url=//zookeeper....。因此經過自適應擴展類的方法能夠得出ide

    registryFactory==RegistryFactory$Adaptive,-----ZookeeperRegistryFactoryurl

再進入ZookeeperRegistryFactory的getRegistry()。進入後發現他並無這個方法,那麼咱們只好往上找設計


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


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


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

這裏去連接zookeeper,其中connect方式由兩種模板


原生態的zookeeper連接ZkClientclass


另一種是CuratorFrameworkzookeeper


鏈接後啓動監聽

返回的事一個ZookeeperRegisty對象


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

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


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

而且在這個FailbackRegistry類中還定義了其餘的由子類本身去實現的方法


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


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

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

相關文章
相關標籤/搜索