亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

Hegel_Gu / 3358人閱讀

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

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

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

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

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機(jī)制獲得一個zookeeper客戶端的實(shí)例,默認(rèn)使用zkClinet的實(shí)現(xiàn)方式。

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

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

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

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

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

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

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

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

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

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

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

首先在服務(wù)提供者的節(jié)點(diǎn)樹中創(chuàng)建configurators節(jié)點(diǎn),然后配置監(jiān)聽器OverrideListener,若通過Dubbo管理系統(tǒng)為服務(wù)設(shè)置動態(tài)參數(shù),則動態(tài)配置的參數(shù)放在configurators節(jié)點(diǎn)目錄下,并通知服務(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://www.ezyhdfw.cn/yun/69238.html

相關(guān)文章

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

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

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

    摘要:面試題服務(wù)提供者能實(shí)現(xiàn)失效踢出是什么原理高頻題服務(wù)宕機(jī)的時候,該節(jié)點(diǎn)由于是持久節(jié)點(diǎn)會永遠(yuǎn)存在,而且當(dāng)服務(wù)再次重啟的時候會將重新注冊一個新節(jié)點(diǎn)。 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ù)的實(shí)現(xiàn)

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

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

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

    enda 評論0 收藏0

發(fā)表評論

0條評論

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