dubbo 配置文件詳解--轉發(fā)

原文鏈接:https://www.cnblogs.com/linjiqin/p/5859153.html

一膊存、dubbo常用配置

[
復制代碼

](javascript:void(0); "復制代碼")

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><dubbo:service/> 服務配置,用于暴露一個服務挤巡,定義服務的元信息,一個服務可以用多個協(xié)議暴露嘶炭,一個服務也可以注冊到多個注冊中心袄简。
eg、<dubbo:service ref="demoService" interface="com.unj.dubbotest.provider.DemoService" />

<dubbo:reference/> 引用服務配置比藻,用于創(chuàng)建一個遠程服務代理,一個引用可以指向多個注冊中心倘屹。
eg银亲、<dubbo:reference id="demoService" interface="com.unj.dubbotest.provider.DemoService" />

<dubbo:protocol/> 協(xié)議配置,用于配置提供服務的協(xié)議信息纽匙,協(xié)議由提供方指定务蝠,消費方被動接受。
eg烛缔、<dubbo:protocol name="dubbo" port="20880" />

<dubbo:application/> 應用配置请梢,用于配置當前應用信息赠尾,不管該應用是提供者還是消費者。
eg毅弧、<dubbo:application name="xixi_provider" />
<dubbo:application name="hehe_consumer" />

<dubbo:module/> 模塊配置气嫁,用于配置當前模塊信息,可選够坐。 <dubbo:registry/> 注冊中心配置寸宵,用于配置連接注冊中心相關信息。
eg元咙、<dubbo:registry address="zookeeper://192.168.2.249:2181" />

<dubbo:monitor/> 監(jiān)控中心配置梯影,用于配置連接監(jiān)控中心相關信息,可選庶香。 <dubbo:provider/> 提供方的缺省值甲棍,當ProtocolConfig和ServiceConfig某屬性沒有配置時,采用此缺省值赶掖,可選感猛。 <dubbo:consumer/> 消費方缺省配置,當ReferenceConfig某屬性沒有配置時奢赂,采用此缺省值陪白,可選。 <dubbo:method/> 方法配置膳灶,用于ServiceConfig和ReferenceConfig指定方法級的配置信息咱士。 <dubbo:argument/> 用于指定方法參數(shù)配置。</pre>

[
復制代碼

](javascript:void(0); "復制代碼")

二轧钓、服務調(diào)用超時設置

image

上圖中以timeout為例序厉,顯示了配置的查找順序,其它retries, loadbalance, actives也類似毕箍。
方法級優(yōu)先弛房,接口級次之,全局配置再次之霉晕。
如果級別一樣,則消費方優(yōu)先捞奕,提供方次之牺堰。

其中,服務提供方配置颅围,通過URL經(jīng)由注冊中心傳遞給消費方伟葫。
建議由服務提供方設置超時,因為一個方法需要執(zhí)行多長時間院促,服務提供方更清楚筏养,如果一個消費方同時引用多個服務斧抱,就不需要關心每個服務的超時設置。
理論上ReferenceConfig的非服務標識配置渐溶,在ConsumerConfig辉浦,ServiceConfig, ProviderConfig均可以缺省配置。

**三茎辐、啟動時檢查 **
Dubbo缺省會在啟動時檢查依賴的服務是否可用宪郊,不可用時會拋出異常,阻止Spring初始化完成拖陆,以便上線時弛槐,能及早發(fā)現(xiàn)問題,默認check=true依啰。

如果你的Spring容器是懶加載的乎串,或者通過API編程延遲引用服務,請關閉check速警,否則服務臨時不可用時叹誉,會拋出異常,拿到null引用坏瞄,如果check=false桂对,總是會返回引用,當服務恢復時鸠匀,能自動連上蕉斜。

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

[
復制代碼

](javascript:void(0); "復制代碼")

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">1、關閉某個服務的啟動時檢查:(沒有提供者時報錯) <dubbo:reference interface="com.foo.BarService" check="false" /> 2青瀑、關閉所有服務的啟動時檢查:(沒有提供者時報錯) 寫在定義服務消費者一方 <dubbo:consumer check="false" /> 3璧亮、關閉注冊中心啟動時檢查:(注冊訂閱失敗時報錯) <dubbo:registry check="false" /></pre>

[
復制代碼

](javascript:void(0); "復制代碼")

引用缺省是延遲初始化的,只有引用被注入到其它Bean斥难,或被getBean()獲取枝嘶,才會初始化。
如果需要饑餓加載哑诊,即沒有人引用也立即生成動態(tài)代理,可以配置:

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><dubbo:reference interface="com.foo.BarService" init="true" /></pre>

四竞阐、訂閱
1、問題
為方便開發(fā)測試骆莹,經(jīng)常會在線下共用一個所有服務可用的注冊中心颗搂,這時,如果一個正在開發(fā)中的服務提供者注冊汪疮,可能會影響消費者不能正常運行。

2智嚷、解決方案
可以讓服務提供者開發(fā)方,只訂閱服務(開發(fā)的服務可能依賴其它服務)盏道,而不注冊正在開發(fā)的服務稍浆,通過直連測試正在開發(fā)的服務。

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">禁用注冊配置: <dubbo:registry address="10.20.153.10:9090" register="false" /> 或者: <dubbo:registry address="10.20.153.10:9090?register=false" /></pre>

五猜嘱、回聲測試(測試服務是否可用)
回聲測試用于檢測服務是否可用,回聲測試按照正常請求流程執(zhí)行弦撩,能夠測試整個調(diào)用是否通暢论皆,可用于監(jiān)控。
所有服務自動實現(xiàn)EchoService接口点晴,只需將任意服務引用強制轉型為EchoService,即可使用陪竿。

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">eg屠橄、<dubbo:reference id="memberService" interface="com.xxx.MemberService" /> MemberService memberService = ctx.getBean("memberService"); // 遠程服務引用
EchoService echoService = (EchoService) memberService; // 強制轉型為EchoService
String status = echoService.$echo("OK"); // 回聲測試可用性
assert(status.equals("OK"))</pre>

六、延遲連接
延遲連接礁哄,用于減少長連接數(shù)贮匕,當有調(diào)用發(fā)起時花枫,再創(chuàng)建長連接掏膏。
只對使用長連接的dubbo協(xié)議生效敦锌。

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><dubbo:protocol name="dubbo" lazy="true" /></pre>

**七、令牌驗證 **
防止消費者繞過注冊中心訪問提供者颖变,在注冊中心控制權限听想,以決定要不要下發(fā)令牌給消費者,注冊中心可靈活改變授權方式汉买,而不需修改或升級提供者

[
復制代碼

](javascript:void(0); "復制代碼")

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">1蛙粘、全局設置開啟令牌驗證:
<dubbo:provider interface="com.foo.BarService" token="true" />


<dubbo:provider interface="com.foo.BarService" token="123456" /> 2、服務級別設置開啟令牌驗證:
<dubbo:service interface="com.foo.BarService" token="true" />


<dubbo:service interface="com.foo.BarService" token="123456" /> 3出牧、協(xié)議級別設置開啟令牌驗證:
<dubbo:protocol name="dubbo" token="true" />


<dubbo:protocol name="dubbo" token="123456" /></pre>

[
復制代碼

](javascript:void(0); "復制代碼")

八舔痕、日志適配
缺省自動查找:log4j、slf4j盈咳、jcl边翼、jdk

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

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

將訪問日志輸出到當前應用的log4j日志:

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><dubbo:protocol accesslog="true" /></pre>

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

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><dubbo:protocol accesslog="http://10.20.160.198/wiki/display/dubbo/foo/bar.log" /></pre>

九、配置Dubbo緩存文件

配置方法如下:

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><dubbo:registryfile=”${user.home}/output/dubbo.cache” /></pre>

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

這個文件會緩存:
注冊中心的列表
服務提供者列表

有了這項配置后元扔,當應用重啟過程中,Dubbo注冊中心不可用時則應用會從這個緩存文件讀取服務提供者列表的信息吻氧,進一步保證應用可靠性咏连。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市振惰,隨后出現(xiàn)的幾起案子垄懂,更是在濱河造成了極大的恐慌,老刑警劉巖草慧,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漫谷,死亡現(xiàn)場離奇詭異,居然都是意外死亡舔示,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門竖共,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俺祠,“玉大人,你說我怎么就攤上這事淌铐。” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵释涛,是天一觀的道長倦沧。 經(jīng)常有香客問我,道長展融,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任扑浸,我火速辦了婚禮燕偶,結果婚禮上,老公的妹妹穿的比我還像新娘酝惧。我一直安慰自己伯诬,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布哩陕。 她就那樣靜靜地躺著赫舒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪号阿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天园担,我揣著相機與錄音,去河邊找鬼艰山。 笑死咏闪,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的鸽嫂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼橡娄,長吁一口氣:“原來是場噩夢啊……” “哼癣籽!你這毒婦竟也來了?” 一聲冷哼從身側響起瓶籽,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤埂材,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后茬暇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寡喝,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年巧骚,在試婚紗的時候發(fā)現(xiàn)自己被綠了格二。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡沧奴,死狀恐怖长窄,靈堂內(nèi)的尸體忽然破棺而出纲菌,到底是詐尸還是另有隱情疮绷,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布椅贱,位于F島的核電站只冻,受9級特大地震影響,放射性物質發(fā)生泄漏属愤。R本人自食惡果不足惜酸役,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一涣澡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧入桂,春花似錦、人聲如沸馁蒂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沮脖。三九已至芯急,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間娶耍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工养泡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人澜掩。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓肩榕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親株汉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容