Dubbo匯出服務之遠端匯出

2021-09-25 03:46:54 字數 2767 閱讀 5631

匯出到遠端入口

private void doexporturlsfor1protocol(protocolconfig protocolconfig, listregistryurls) 

// export to remote if the config is not local (export to local only when config is local)

//否則匯出到遠端

if (!constants.scope_local.tostring().equalsignorecase(scope))

//當註冊url存在時

if (registryurls != null && !registryurls.isempty())

if (logger.isinfoenabled())

// for providers, this is used to enable custom proxy to generate invoker

string proxy = url.getparameter(constants.proxy_key);

if (stringutils.isnotempty(proxy))

invoker<?> invoker = proxyfactory.getinvoker(ref, (class) inte***ceclass, registryurl.addparameterandencoded(constants.export_key, url.tofullstring()));

exporters.add(exporter);

}} else }}

this.urls.add(url);

}

匯出服務

/**

* 匯出服務到遠端其中的一步:匯出服務

* 在com.alibaba.dubbo.registry.integration.registryprotocol類中

* @param origininvoker

* @param * @return

*/@suppresswarnings("unchecked")

//獲取key

string key = getcachekey(origininvoker);

/*** 根據key值去bounds中去獲取快取

//雙重檢查鎖

if (exporter == null) }}

return exporter;

}

根據不同的協議匯出服務,以dubbo舉例

/**

* 當使用協議為dubbo時,使用此方法進行服務的匯出

* 此方法是在com.alibaba.dubbo.rpc.protocol.dubbo.dubboprotocol類中

* @param invoker

* @param * @return

* @throws rpcexception

*/@override

public exporterexport(invokerinvoker) throws rpcexception

} else

}//啟動伺服器

openserver(url);

//優化序列化

optimizeserialization(url);

return exporter;

}

啟動伺服器

/**

* 開啟伺服器

* @param url

*/private void openserver(url url) else

}}

建立伺服器例項

/**

* 建立伺服器例項

* @param url

* @return

*/private exchangeserver createserver(url url) catch (remotingexception e)

/*** 獲取client引數,然後通過sip檢測支援的型別中是否包含此型別,如果不包含則拋異常

*/str = url.getparameter(constants.client_key);

if (str != null && str.length() > 0)

}return server;

}

建立伺服器例項續

/**

* 建立伺服器例項

* @param url

* @param handler

* @return

* @throws remotingexception

*/public static exchangeserver bind(url url, exchangehandler handler) throws remotingexception

if (handler == null)

url = url.addparameterifabsent(constants.codec_key, "exchange");

/*** getexchanger()獲取交換機,預設獲取為header=com.alibaba.dubbo.remoting.exchange.support.header.headerexchanger

*/return getexchanger(url).bind(url, handler);

}

Dubbo服務匯出簡述

dubbo服務匯出過程始於spring容器發布重新整理事件,dubbo在接收到事件後會立即執行服務匯出邏輯。整個邏輯大致分為三個部分 第一部分是前置工作,用於檢查引數,組裝url。第二部分是建立invoker,匯出服務到本地 jvm 或遠端。第三部分是向註冊中心註冊服務,用於服務發現。是否有延遲匯出...

oracle 遠端匯入 匯出

exp命令 1 exp username psw test file d test.dmp full y 2 exp username psw test file d test.dmp owner ly 3 exp username psw test file d test.dmp tables g...

oracle遠端匯出 匯入

建立db link,遠端匯出 匯入。expdp impdp oracle資料庫本地磁碟空間有限,或應用系統的需要,會通過遠端的方式匯出資料庫。在oracle當中,exp遠端導庫的速度太慢,而expdp又無法直接通過遠端導庫。因此需要建立db link遠端連線後,才能使用expdp遠端導庫。詳細步驟如...