dubbo 服務發布及註冊流程

2021-10-24 02:18:22 字數 3207 閱讀 6266

dubbo 服務發布原始碼分析

export() 進行服務發布

首先會獲得註冊中心集合列表以及協議集合列表,遍歷協議中心列表進行多協議發布服務

服務發布時,會根據配置檔案的引數資訊封裝成map物件,最後將map物件轉換成url位址的引數

根據url位址的協議頭:registry://*** ,會在 protocol.exort(url) 中,進入到registryprotocol#export()方法中,在該方法中主要做了一下幾步

做本地發布:會根據協議將協議頭由 registry:// 轉換成 dubbo:// 協議,再次呼叫protocol#export進入到dubboprotocol#exprot 中,這裡是通過netty 開啟了乙個監聽

會根據註冊中心的獲得乙個registry, 即zookeeperregistry 並將服務註冊到 zk上。

最後是發起乙個訂閱的功能,主要是能動態的去改變服務提供方提供的服務資訊。

servicebean發布(export)入口

public

class

servicebean

extends

serviceconfig

implements

initializingbean

, disposablebean,

// initializingbean

//為介面 bean 提供了初始化方法的方式,凡是實現了該介面的類,在初始化 bean 的時候會執行該方法

@override

public

void

afterpropertiesset()

throws exception

}// disposablebean ,bean 被銷毀的時候,spring 容器會自動執行 destroy 方法,比如釋放資源

@override

public

void

destroy()

throws exception

@override

public

void

throws bean***ception

@override

public

void

// beannameaware 獲得自身初始化時,本身 bean 的 id 屬性

@override

public

void

setbeanname

(string s)

}

com.alibaba.dubbo.config.serviceconfig#doexporturlsfor1protocol核心入口開始說起

進行服務發布之前,會獲得配置的註冊中心集合、以及多協議集合,進行多協議的發布

//發布服務

@suppresswarnings()

private

void

doexporturls()

}//發布服務的核心入口

private

void doexporturlsfor1protocol

(protocolconfig protocolconfig, list

registryurls)

invoker<

?> invoker = proxyfactory.

getinvoker

(ref,

(class) inte***ceclass,

registryurl.

addparameterandencoded

(constants.export_key, url.

tofullstring()

));// 服務發布

// protocol :protocol$adpative

// invoker.url:registry:

exporter<

?> exporter = protocol.

export

(invoker)

; exporters.

add(exporter)

;}

protocol$adpative類資訊

/**

* @author : guaoran

* @description :

* 根據 createadaptiveextensionclass() 動態獲得的 介面卡擴充套件點

* @date :2019/1/7 13:31

*/public

class

protocol$adpative implements

protocol

//客戶端引用

public invoker refer

(class arg0

, url arg1)

throws rpcexception

}

繼續接著exporter> exporter = protocol.export(invoker);registryprotocol#export()方法主要做了以下幾步:

做本地發布,在dubboprotocol開啟乙個 netty 服務進行監聽

獲得乙個 zookeeperregistry 的註冊中心的連線,並將服務註冊到 zk 上

/dubbo-demo/com.guaoran.source.dubbo.demo.ihelloservice/providers/dubbo%3a%2f%2f19..

開啟乙個訂閱

在 zk 上註冊乙個/dubbo-demo/com.guaoran.source.dubbo.demo.ihelloservice/configurators節點

Dubbo 服務註冊與發現的流程?

流程說明 1 provider 提供者 繫結指定埠並啟動服務 2 指供者連線註冊中心,併發本機 ip 埠 應用資訊和提供服務資訊傳送至註冊中心儲存 3 consumer 消費者 連線註冊中心 並傳送應用資訊 所求服務資訊至註冊中心 4 註冊中心根據 消費 者所求服務資訊匹配對應的提供者列表傳送至co...

Dubbo 之服務發布和註冊(二)(補充)

dubbo 之服務發布和註冊 一 在之前的部落格 中介紹過了,如果發布 dubbo 服務不使用註冊中心的話,可以這麼配置 如果配置了註冊中心 if registryurls null registryurls.size 0 url.getparameter register true if logg...

dubbo 發布和訂閱流程

dubbo介面的發布和介面的呼叫流程如圖所示 各節點說明 角色說明provider 暴露服務的服務提供方consumer 呼叫遠端服務的服務消費方registry 服務註冊與發現的註冊中心monitor 統計服務的呼叫次調和呼叫時間的監控中心container 服務執行容器呼叫關係說明1 服務容器負...