dubbo的配置文件詳解(推薦)
一、dubbo常用配置
<dubbo:service/> 服務(wù)配置,用于暴露一個(gè)服務(wù),定義服務(wù)的元信息,一個(gè)服務(wù)可以用多個(gè)協(xié)議暴露,一個(gè)服務(wù)也可以注冊(cè)到多個(gè)注冊(cè)中心。
eg、<dubbo:service ref="demoService" interface="com.unj.dubbotest.provider.DemoService" />
<dubbo:reference/> 引用服務(wù)配置,用于創(chuàng)建一個(gè)遠(yuǎn)程服務(wù)代理,一個(gè)引用可以指向多個(gè)注冊(cè)中心。
eg、<dubbo:reference id="demoService" interface="com.unj.dubbotest.provider.DemoService" />
<dubbo:protocol/> 協(xié)議配置,用于配置提供服務(wù)的協(xié)議信息,協(xié)議由提供方指定,消費(fèi)方被動(dòng)接受。
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/> 注冊(cè)中心配置,用于配置連接注冊(cè)中心相關(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某屬性沒(méi)有配置時(shí),采用此缺省值,可選。
<dubbo:consumer/> 消費(fèi)方缺省配置,當(dāng)ReferenceConfig某屬性沒(méi)有配置時(shí),采用此缺省值,可選。
<dubbo:method/> 方法配置,用于ServiceConfig和ReferenceConfig指定方法級(jí)的配置信息。
<dubbo:argument/> 用于指定方法參數(shù)配置。
二、服務(wù)調(diào)用超時(shí)設(shè)置
上圖中以timeout為例,顯示了配置的查找順序,其它retries, loadbalance, actives也類似。
方法級(jí)優(yōu)先,接口級(jí)次之,全局配置再次之。
如果級(jí)別一樣,則消費(fèi)方優(yōu)先,提供方次之。
其中,服務(wù)提供方配置,通過(guò)URL經(jīng)由注冊(cè)中心傳遞給消費(fèi)方。
建議由服務(wù)提供方設(shè)置超時(shí),因?yàn)橐粋€(gè)方法需要執(zhí)行多長(zhǎng)時(shí)間,服務(wù)提供方更清楚,如果一個(gè)消費(fèi)方同時(shí)引用多個(gè)服務(wù),就不需要關(guān)心每個(gè)服務(wù)的超時(shí)設(shè)置。
理論上ReferenceConfig的非服務(wù)標(biāo)識(shí)配置,在ConsumerConfig,ServiceConfig, ProviderConfig均可以缺省配置。
三、啟動(dòng)時(shí)檢查
Dubbo缺省會(huì)在啟動(dòng)時(shí)檢查依賴的服務(wù)是否可用,不可用時(shí)會(huì)拋出異常,阻止Spring初始化完成,以便上線時(shí),能及早發(fā)現(xiàn)問(wèn)題,默認(rèn)check=true。
如果你的Spring容器是懶加載的,或者通過(guò)API編程延遲引用服務(wù),請(qǐng)關(guān)閉check,否則服務(wù)臨時(shí)不可用時(shí),會(huì)拋出異常,拿到null引用,如果check=false,總是會(huì)返回引用,當(dāng)服務(wù)恢復(fù)時(shí),能自動(dòng)連上。
可以通過(guò)check="false"關(guān)閉檢查,比如,測(cè)試時(shí),有些服務(wù)不關(guān)心,或者出現(xiàn)了循環(huán)依賴,必須有一方先啟動(dòng)。
1、關(guān)閉某個(gè)服務(wù)的啟動(dòng)時(shí)檢查:(沒(méi)有提供者時(shí)報(bào)錯(cuò))
<dubbo:reference interface="com.foo.BarService" check="false" />
2、關(guān)閉所有服務(wù)的啟動(dòng)時(shí)檢查:(沒(méi)有提供者時(shí)報(bào)錯(cuò)) 寫(xiě)在定義服務(wù)消費(fèi)者一方
<dubbo:consumer check="false" />
3、關(guān)閉注冊(cè)中心啟動(dòng)時(shí)檢查:(注冊(cè)訂閱失敗時(shí)報(bào)錯(cuò))
<dubbo:registry check="false" />
引用缺省是延遲初始化的,只有引用被注入到其它Bean,或被getBean()獲取,才會(huì)初始化。
如果需要饑餓加載,即沒(méi)有人引用也立即生成動(dòng)態(tài)代理,可以配置:
<dubbo:reference interface="com.foo.BarService" init="true" />
四、訂閱
1、問(wèn)題
為方便開(kāi)發(fā)測(cè)試,經(jīng)常會(huì)在線下共用一個(gè)所有服務(wù)可用的注冊(cè)中心,這時(shí),如果一個(gè)正在開(kāi)發(fā)中的服務(wù)提供者注冊(cè),可能會(huì)影響消費(fèi)者不能正常運(yùn)行。
2、解決方案
可以讓服務(wù)提供者開(kāi)發(fā)方,只訂閱服務(wù)(開(kāi)發(fā)的服務(wù)可能依賴其它服務(wù)),而不注冊(cè)正在開(kāi)發(fā)的服務(wù),通過(guò)直連測(cè)試正在開(kāi)發(fā)的服務(wù)。
禁用注冊(cè)配置:<dubbo:registry address="10.20.153.10:9090" register="false" />
或者:<dubbo:registry address="10.20.153.10:9090?register=false" />
五、回聲測(cè)試(測(cè)試服務(wù)是否可用)
回聲測(cè)試用于檢測(cè)服務(wù)是否可用,回聲測(cè)試按照正常請(qǐng)求流程執(zhí)行,能夠測(cè)試整個(gè)調(diào)用是否通暢,可用于監(jiān)控。
所有服務(wù)自動(dòng)實(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"); // 回聲測(cè)試可用性 assert(status.equals("OK"))
六、延遲連接
延遲連接,用于減少長(zhǎng)連接數(shù),當(dāng)有調(diào)用發(fā)起時(shí),再創(chuàng)建長(zhǎng)連接。
只對(duì)使用長(zhǎng)連接的dubbo協(xié)議生效。
<dubbo:protocol name="dubbo" lazy="true" />
七、令牌驗(yàn)證
防止消費(fèi)者繞過(guò)注冊(cè)中心訪問(wèn)提供者,在注冊(cè)中心控制權(quán)限,以決定要不要下發(fā)令牌給消費(fèi)者,注冊(cè)中心可靈活改變授權(quán)方式,而不需修改或升級(jí)提供者
1、全局設(shè)置開(kāi)啟令牌驗(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ù)級(jí)別設(shè)置開(kāi)啟令牌驗(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é)議級(jí)別設(shè)置開(kāi)啟令牌驗(yàn)證: <!--隨機(jī)token令牌,使用UUID生成--> <dubbo:protocol name="dubbo" token="true" /> <!--固定token令牌,相當(dāng)于密碼--> <dubbo:protocol name="dubbo" token="123456" />
八、日志適配
缺省自動(dòng)查找:log4j、slf4j、jcl、jdk
可以通過(guò)以下方式配置日志輸出策略:dubbo:application logger="log4j"/>
訪問(wèn)日志:
如果你想記錄每一次請(qǐng)求信息,可開(kāi)啟訪問(wèn)日志,類似于apache的訪問(wèn)日志。此日志量比較大,請(qǐng)注意磁盤(pán)容量。
將訪問(wèn)日志輸出到當(dāng)前應(yīng)用的log4j日志:
<dubbo:protocol accesslog="true" />
將訪問(wèn)日志輸出到指定文件:
<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)整,保證這個(gè)文件不會(huì)在發(fā)布過(guò)程中被清除。如果有多個(gè)應(yīng)用進(jìn)程注意不要使用同一個(gè)文件,避免內(nèi)容被覆蓋。
這個(gè)文件會(huì)緩存:
- 注冊(cè)中心的列表
- 服務(wù)提供者列表
有了這項(xiàng)配置后,當(dāng)應(yīng)用重啟過(guò)程中,Dubbo注冊(cè)中心不可用時(shí)則應(yīng)用會(huì)從這個(gè)緩存文件讀取服務(wù)提供者列表的信息,進(jìn)一步保證應(yīng)用可靠性。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
服務(wù)器安裝Macfee(麥咖啡)殺毒軟件后可能出現(xiàn)的問(wèn)題
這篇文章主要介紹了服務(wù)器安裝Macfee(麥咖啡)殺毒軟件后可能出現(xiàn)的問(wèn)題,需要的朋友可以參考下2015-10-10CyberPanel配置教程,新手安裝?CyberPanel?終極指南
CyberPanel?是第一個(gè)LiteSpeed為web服務(wù)器的Linux面板,使用LiteSpeed?Cache簡(jiǎn)單優(yōu)化之后?Gtmetrix?和?Google?PageSpeed?Insights?的評(píng)分幾乎都是A,這個(gè)結(jié)果讓人十分滿意2023-12-12SparkGraphx計(jì)算指定節(jié)點(diǎn)的N度關(guān)系節(jié)點(diǎn)源碼
這篇文章主要介紹了SparkGraphx計(jì)算指定節(jié)點(diǎn)的N度關(guān)系節(jié)點(diǎn)源碼,小編覺(jué)得挺不錯(cuò)的,這里分享給大家,希望給各位一個(gè)參考。2017-10-10無(wú)盤(pán)完美解決Windows Server 2012或2016無(wú)法安裝.NET Framework3.5的方法
今天小編就為大家分享一篇關(guān)于無(wú)盤(pán)完美解決Windows Server 2012或2016無(wú)法安裝.NET Framework3.5的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03win11安裝wsl報(bào)錯(cuò)之無(wú)法解析服務(wù)器的名稱或地址的問(wèn)題及解決方法
項(xiàng)目開(kāi)發(fā)中,需要用到wsl,因此根據(jù)wsl官方(WSL安裝教程)命令?wsl --install 進(jìn)行wsl的安裝,本文主要是記錄自己在安裝wsl中遇到的問(wèn)題"無(wú)法解析服務(wù)器的名稱或地址"的解決辦法,感興趣的朋友一起看看吧2024-04-04用rsync實(shí)現(xiàn)windows與linux文件同步的方法
windows做為文件服務(wù)器,使用rsync的windows服務(wù)版本,然后配置好就可以了。需要的朋友可以參考下。2011-02-02監(jiān)控服務(wù)調(diào)用微信API如何給自己發(fā)告警信息
本文是腳本之家的小編給大家介紹監(jiān)控服務(wù)調(diào)用微信API如何給自己發(fā)告警信息,當(dāng)監(jiān)控的設(shè)備發(fā)生故障時(shí)可以通過(guò)微信告警。感興趣的朋友可以參考下2015-09-09