国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Hegel_Gu / 3309人閱讀

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

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

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

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

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

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è)計(jì)模式,對(duì)不對(duì)?!】方法,并調(diào)用ZookeeperRegistryFactory#createRegistry,在ZookeeperRegistryFactory已經(jīng)利用dubbo的IOC原理,注入了一個(gè)ZookeeperTransporter,該對(duì)象利用Adaptive機(jī)制獲得一個(gè)zookeeper客戶端的實(shí)例,默認(rèn)使用zkClinet的實(shí)現(xiàn)方式。

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

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

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

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

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

紅框框里面主要做的時(shí)候就是

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

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

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

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

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

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

3、返回Exporter

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/69238.html

相關(guān)文章

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

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

    tomener 評(píng)論0 收藏0
  • Dubbo 2.7.1 踩坑記

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

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

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

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

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

    enda 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<