成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

dubbo服務(wù)發(fā)布二之zookeeper注冊

Hegel_Gu / 3316人閱讀

摘要:都是持久化節(jié)點,服務(wù)信息是零時節(jié)點,主要是為了監(jiān)聽服務(wù)提供方的是否斷開連接,做出相應(yīng)處理。訂閱節(jié)點紅框框里面主要做的時候就是創(chuàng)建服務(wù)對應(yīng)的節(jié)點創(chuàng)建節(jié)點持久型節(jié)點并監(jiān)聽如下節(jié)點創(chuàng)建一個的監(jiān)聽器對服務(wù)提供者的節(jié)點配置監(jiān)聽器。

接著上一篇繼續(xù)看。
上一篇服務(wù)暴露已經(jīng)講完RegistryProtocol#doLocalExport的方法了。下面將服務(wù)是如何被寫到zookeeper上的。

1、注冊zookeeper節(jié)點,/dubbo/*/providers

RegistryProtocol#getRegistry方法中,從最原始的Invoker里面拿到url,拿到配置的“zookeeper”注冊協(xié)議,重新構(gòu)造了一個zookeeper協(xié)議的registryUrl,并從registryFactory【一個Adaptive類】中拿到一個ZookeeperRegistryFactory實例。
.]

RegistryFactory$Adpative代碼【獲取方法:把日志級別調(diào)測DEBUG,然后從控制臺里面找到該端代碼】

package com.alibaba.dubbo.registry;

import com.alibaba.dubbo.common.extension.ExtensionLoader;

public class RegistryFactory$Adpative implements com.alibaba.dubbo.registry.RegistryFactory {
    public com.alibaba.dubbo.registry.Registry getRegistry(com.alibaba.dubbo.common.URL arg0) {
        if (arg0 == null) throw new IllegalArgumentException("url == null");
        com.alibaba.dubbo.common.URL url = arg0;
        String extName = (url.getProtocol() == null ? "dubbo" : url.getProtocol());
        if (extName == null)
            throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.registry.RegistryFactory) name from url(" + url.toString() + ") use keys([protocol])");
        com.alibaba.dubbo.registry.RegistryFactory extension = (com.alibaba.dubbo.registry.RegistryFactory) ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.registry.RegistryFactory.class).getExtension(extName);
        return extension.getRegistry(arg0);
    }
}

執(zhí)行ZookeeperRegistryFactory#getRegistry【模板設(shè)計模式,對不對?!】方法,并調(diào)用ZookeeperRegistryFactory#createRegistry,在ZookeeperRegistryFactory已經(jīng)利用dubbo的IOC原理,注入了一個ZookeeperTransporter,該對象利用Adaptive機制獲得一個zookeeper客戶端的實例,默認使用zkClinet的實現(xiàn)方式。

拿到ZookeeperRegistry實例之后,執(zhí)行抽象類方法AbstractRegistryFactory.getRegistry

ZookeeperRegistry#doRegistry方法,將服務(wù)信息,寫到zk接口上。

/dubbo/com.alibaba.dubbo.demo.DemoService/providers都是持久化節(jié)點,服務(wù)信息是零時節(jié)點,主要是為了監(jiān)聽服務(wù)提供方的是否斷開連接,做出相應(yīng)處理。

此時該服務(wù)的providers節(jié)點已經(jīng)寫完了。

2、訂閱/dubbo/*/configrators節(jié)點

紅框框里面主要做的時候就是

2.1、創(chuàng)建服務(wù)對應(yīng)的/dubbo/*/configrators節(jié)點

創(chuàng)建zk節(jié)點【持久型節(jié)點】、并監(jiān)聽如下節(jié)點
/dubbo
----/com.alibaba.dubbo.demo.DemoService
--------/configurators

2.2、創(chuàng)建一個OverrideListener的監(jiān)聽器

對服務(wù)提供者的configurators節(jié)點配置監(jiān)聽器。
會觸發(fā)AbstractRegistry#notify(URL url, NotifyListener listener, List urls)去寫緩存文件,這個以后會多帶帶弄講。

2.3、訂閱/dubbo/*/configrators節(jié)點,當有變化時,觸發(fā)OverrideListener監(jiān)聽器,重新執(zhí)行OverrideListener#notify方法,

首先在服務(wù)提供者的節(jié)點樹中創(chuàng)建configurators節(jié)點,然后配置監(jiān)聽器OverrideListener,若通過Dubbo管理系統(tǒng)為服務(wù)設(shè)置動態(tài)參數(shù),則動態(tài)配置的參數(shù)放在configurators節(jié)點目錄下,并通知服務(wù)端的OverrideListener監(jiān)聽器,根據(jù)動態(tài)參數(shù)重新生成服務(wù)提供者URL,若URL有變化則重新暴露服務(wù)

3、返回Exporter

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69238.html

相關(guān)文章

  • Dubbo 一篇文章就夠了:從入門到實戰(zhàn)

    摘要:啟動容器,加載,運行服務(wù)提供者。服務(wù)提供者在啟動時,在注冊中心發(fā)布注冊自己提供的服務(wù)。注冊中心返回服務(wù)提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。 一 為什么需要 dubbo 很多時候,其實我們使用這個技術(shù)的時候,可能都是因為項目需要,所以,我們就用了,但是,至于為什么我們需要用到這個技術(shù),可能自身并不是很了解的,但是,其實了解技術(shù)的來由及背景知識,對...

    tomener 評論0 收藏0
  • Dubbo 2.7.1 踩坑記

    摘要:面試題服務(wù)提供者能實現(xiàn)失效踢出是什么原理高頻題服務(wù)宕機的時候,該節(jié)點由于是持久節(jié)點會永遠存在,而且當服務(wù)再次重啟的時候會將重新注冊一個新節(jié)點。 Dubbo 2.7 版本增加新特性,新系統(tǒng)開始使用 Dubbo 2.7.1 嘗鮮新功能。使用過程中不慎踩到這個版本的 Bug。 系統(tǒng)架構(gòu) Spring Boot 2.14-Release + Dubbo 2.7.1 現(xiàn)象 Dubbo 服務(wù)者啟動...

    wudengzan 評論0 收藏0
  • 基于Dubbo+ZooKeeper的分布式服務(wù)的實現(xiàn)

    摘要:調(diào)用流程服務(wù)容器負責(zé)啟動,加載,運行服務(wù)提供者。服務(wù)提供者在啟動時,向注冊中心注冊自己提供的服務(wù)。注冊中心返回服務(wù)提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。這就是分布式服務(wù)注冊中心的由來。 Dubbo是什么 一款分布式服務(wù)框架 高性能和透明化的RPC遠程服務(wù)調(diào)用方案。這里簡單介紹一下RPC,所謂RPC就是遠程過程調(diào)用,全稱為Romate Proce...

    warkiz 評論0 收藏0
  • 基于Dubbo+ZooKeeper的分布式服務(wù)的實現(xiàn)

    摘要:調(diào)用流程服務(wù)容器負責(zé)啟動,加載,運行服務(wù)提供者。服務(wù)提供者在啟動時,向注冊中心注冊自己提供的服務(wù)。注冊中心返回服務(wù)提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。這就是分布式服務(wù)注冊中心的由來。 Dubbo是什么 一款分布式服務(wù)框架 高性能和透明化的RPC遠程服務(wù)調(diào)用方案。這里簡單介紹一下RPC,所謂RPC就是遠程過程調(diào)用,全稱為Romate Proce...

    enda 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<