這一步是把//registry:192.168...替換成//zookeeper:192.168....設計模式
因爲咱們的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上建立。
到這裏服務註冊到註冊中心就完畢了。