溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

dubbo的配置文件詳解(推薦)

發(fā)布時間:2020-10-25 08:28:07 來源:腳本之家 閱讀:238 作者:Ruthless 欄目:服務(wù)器

一、dubbo常用配置

<dubbo:service/> 服務(wù)配置,用于暴露一個服務(wù),定義服務(wù)的元信息,一個服務(wù)可以用多個協(xié)議暴露,一個服務(wù)也可以注冊到多個注冊中心。

eg、<dubbo:service ref="demoService" interface="com.unj.dubbotest.provider.DemoService" />

<dubbo:reference/> 引用服務(wù)配置,用于創(chuàng)建一個遠(yuǎn)程服務(wù)代理,一個引用可以指向多個注冊中心。

eg、<dubbo:reference id="demoService" interface="com.unj.dubbotest.provider.DemoService" />

<dubbo:protocol/> 協(xié)議配置,用于配置提供服務(wù)的協(xié)議信息,協(xié)議由提供方指定,消費(fèi)方被動接受。

eg、<dubbo:protocol name="dubbo" port="20880" />

<dubbo:application/> 應(yīng)用配置,用于配置當(dāng)前應(yīng)用信息,不管該應(yīng)用是提供者還是消費(fèi)者。

eg、<dubbo:application name="xixi_provider" />
    <dubbo:application name="hehe_consumer" />

<dubbo:module/> 模塊配置,用于配置當(dāng)前模塊信息,可選。

<dubbo:registry/> 注冊中心配置,用于配置連接注冊中心相關(guān)信息。

eg、<dubbo:registry address="zookeeper://192.168.2.249:2181" />

<dubbo:monitor/> 監(jiān)控中心配置,用于配置連接監(jiān)控中心相關(guān)信息,可選。

<dubbo:provider/> 提供方的缺省值,當(dāng)ProtocolConfig和ServiceConfig某屬性沒有配置時,采用此缺省值,可選。

<dubbo:consumer/> 消費(fèi)方缺省配置,當(dāng)ReferenceConfig某屬性沒有配置時,采用此缺省值,可選。

<dubbo:method/> 方法配置,用于ServiceConfig和ReferenceConfig指定方法級的配置信息。

<dubbo:argument/> 用于指定方法參數(shù)配置。

二、服務(wù)調(diào)用超時設(shè)置

dubbo的配置文件詳解(推薦)

上圖中以timeout為例,顯示了配置的查找順序,其它retries, loadbalance, actives也類似。

方法級優(yōu)先,接口級次之,全局配置再次之。

如果級別一樣,則消費(fèi)方優(yōu)先,提供方次之。

其中,服務(wù)提供方配置,通過URL經(jīng)由注冊中心傳遞給消費(fèi)方。

建議由服務(wù)提供方設(shè)置超時,因?yàn)橐粋€方法需要執(zhí)行多長時間,服務(wù)提供方更清楚,如果一個消費(fèi)方同時引用多個服務(wù),就不需要關(guān)心每個服務(wù)的超時設(shè)置。

理論上ReferenceConfig的非服務(wù)標(biāo)識配置,在ConsumerConfig,ServiceConfig, ProviderConfig均可以缺省配置。

三、啟動時檢查

Dubbo缺省會在啟動時檢查依賴的服務(wù)是否可用,不可用時會拋出異常,阻止Spring初始化完成,以便上線時,能及早發(fā)現(xiàn)問題,默認(rèn)check=true。

如果你的Spring容器是懶加載的,或者通過API編程延遲引用服務(wù),請關(guān)閉check,否則服務(wù)臨時不可用時,會拋出異常,拿到null引用,如果check=false,總是會返回引用,當(dāng)服務(wù)恢復(fù)時,能自動連上。

可以通過check="false"關(guān)閉檢查,比如,測試時,有些服務(wù)不關(guān)心,或者出現(xiàn)了循環(huán)依賴,必須有一方先啟動。

1、關(guān)閉某個服務(wù)的啟動時檢查:(沒有提供者時報(bào)錯)

<dubbo:reference interface="com.foo.BarService" check="false" />

2、關(guān)閉所有服務(wù)的啟動時檢查:(沒有提供者時報(bào)錯)  寫在定義服務(wù)消費(fèi)者一方

<dubbo:consumer check="false" />

3、關(guān)閉注冊中心啟動時檢查:(注冊訂閱失敗時報(bào)錯)

<dubbo:registry check="false" />

引用缺省是延遲初始化的,只有引用被注入到其它Bean,或被getBean()獲取,才會初始化。

如果需要饑餓加載,即沒有人引用也立即生成動態(tài)代理,可以配置:

<dubbo:reference interface="com.foo.BarService" init="true" />

四、訂閱

1、問題

為方便開發(fā)測試,經(jīng)常會在線下共用一個所有服務(wù)可用的注冊中心,這時,如果一個正在開發(fā)中的服務(wù)提供者注冊,可能會影響消費(fèi)者不能正常運(yùn)行。

2、解決方案

可以讓服務(wù)提供者開發(fā)方,只訂閱服務(wù)(開發(fā)的服務(wù)可能依賴其它服務(wù)),而不注冊正在開發(fā)的服務(wù),通過直連測試正在開發(fā)的服務(wù)。

禁用注冊配置:<dubbo:registry address="10.20.153.10:9090" register="false" />

或者:<dubbo:registry address="10.20.153.10:9090?register=false" />

五、回聲測試(測試服務(wù)是否可用)

回聲測試用于檢測服務(wù)是否可用,回聲測試按照正常請求流程執(zhí)行,能夠測試整個調(diào)用是否通暢,可用于監(jiān)控。
所有服務(wù)自動實(shí)現(xiàn)EchoService接口,只需將任意服務(wù)引用強(qiáng)制轉(zhuǎn)型為EchoService,即可使用。

eg、<dubbo:reference id="memberService" interface="com.xxx.MemberService" />

MemberService memberService = ctx.getBean("memberService"); // 遠(yuǎn)程服務(wù)引用
EchoService echoService = (EchoService) memberService; // 強(qiáng)制轉(zhuǎn)型為EchoService
String status = echoService.$echo("OK"); // 回聲測試可用性
assert(status.equals("OK"))

六、延遲連接

延遲連接,用于減少長連接數(shù),當(dāng)有調(diào)用發(fā)起時,再創(chuàng)建長連接。

只對使用長連接的dubbo協(xié)議生效。

<dubbo:protocol name="dubbo" lazy="true" />

七、令牌驗(yàn)證

防止消費(fèi)者繞過注冊中心訪問提供者,在注冊中心控制權(quán)限,以決定要不要下發(fā)令牌給消費(fèi)者,注冊中心可靈活改變授權(quán)方式,而不需修改或升級提供者

1、全局設(shè)置開啟令牌驗(yàn)證:
<!--隨機(jī)token令牌,使用UUID生成-->
<dubbo:provider interface="com.foo.BarService" token="true" />

<!--固定token令牌,相當(dāng)于密碼-->
<dubbo:provider interface="com.foo.BarService" token="123456" />

2、服務(wù)級別設(shè)置開啟令牌驗(yàn)證:
<!--隨機(jī)token令牌,使用UUID生成-->
<dubbo:service interface="com.foo.BarService" token="true" />

<!--固定token令牌,相當(dāng)于密碼-->
<dubbo:service interface="com.foo.BarService" token="123456" />

3、協(xié)議級別設(shè)置開啟令牌驗(yàn)證:
<!--隨機(jī)token令牌,使用UUID生成-->
<dubbo:protocol name="dubbo" token="true" />

<!--固定token令牌,相當(dāng)于密碼-->
<dubbo:protocol name="dubbo" token="123456" />

八、日志適配

缺省自動查找:log4j、slf4j、jcl、jdk

可以通過以下方式配置日志輸出策略:dubbo:application logger="log4j"/>

訪問日志:

如果你想記錄每一次請求信息,可開啟訪問日志,類似于apache的訪問日志。此日志量比較大,請注意磁盤容量。

將訪問日志輸出到當(dāng)前應(yīng)用的log4j日志:

<dubbo:protocol accesslog="true" />

將訪問日志輸出到指定文件:

<dubbo:protocol accesslog="http://10.20.160.198/wiki/display/dubbo/foo/bar.log" />

九、配置Dubbo緩存文件

配置方法如下:

<dubbo:registryfile=”${user.home}/output/dubbo.cache” />

注意:

文件的路徑,應(yīng)用可以根據(jù)需要調(diào)整,保證這個文件不會在發(fā)布過程中被清除。如果有多個應(yīng)用進(jìn)程注意不要使用同一個文件,避免內(nèi)容被覆蓋。

這個文件會緩存:

  • 注冊中心的列表
  • 服務(wù)提供者列表

有了這項(xiàng)配置后,當(dāng)應(yīng)用重啟過程中,Dubbo注冊中心不可用時則應(yīng)用會從這個緩存文件讀取服務(wù)提供者列表的信息,進(jìn)一步保證應(yīng)用可靠性。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI