dubbo 配置文件詳解

?

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

一、dubbo常用配置

復制代碼
<dubbo:service/> 服務配置,用于暴露一個服務,定義服務的元信息,一個服務可以用多個協議暴露,一個服務也可以注冊到多個注冊中心。
eg、<dubbo:service ref="demoService" interface="com.unj.dubbotest.provider.DemoService" /><dubbo:reference/> 引用服務配置,用于創建一個遠程服務代理,一個引用可以指向多個注冊中心。
eg、<dubbo:reference id="demoService" interface="com.unj.dubbotest.provider.DemoService" /><dubbo:protocol/> 協議配置,用于配置提供服務的協議信息,協議由提供方指定,消費方被動接受。
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/> 監控中心配置,用于配置連接監控中心相關信息,可選。
<dubbo:provider/> 提供方的缺省值,當ProtocolConfig和ServiceConfig某屬性沒有配置時,采用此缺省值,可選。
<dubbo:consumer/> 消費方缺省配置,當ReferenceConfig某屬性沒有配置時,采用此缺省值,可選。
<dubbo:method/> 方法配置,用于ServiceConfig和ReferenceConfig指定方法級的配置信息。
<dubbo:argument/> 用于指定方法參數配置。
復制代碼

二、服務調用超時設置

上圖中以timeout為例,顯示了配置的查找順序,其它retries, loadbalance, actives也類似。
方法級優先,接口級次之,全局配置再次之。
如果級別一樣,則消費方優先,提供方次之。

其中,服務提供方配置,通過URL經由注冊中心傳遞給消費方。
建議由服務提供方設置超時,因為一個方法需要執行多長時間,服務提供方更清楚,如果一個消費方同時引用多個服務,就不需要關心每個服務的超時設置。
理論上ReferenceConfig的非服務標識配置,在ConsumerConfig,ServiceConfig, ProviderConfig均可以缺省配置。

三、啟動時檢查?
Dubbo缺省會在啟動時檢查依賴的服務是否可用,不可用時會拋出異常,阻止Spring初始化完成,以便上線時,能及早發現問題,默認check=true。

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

可以通過check="false"關閉檢查,比如,測試時,有些服務不關心,或者出現了循環依賴,必須有一方先啟動。

復制代碼
1、關閉某個服務的啟動時檢查:(沒有提供者時報錯)
<dubbo:reference interface="com.foo.BarService" check="false" />2、關閉所有服務的啟動時檢查:(沒有提供者時報錯)  寫在定義服務消費者一方
<dubbo:consumer check="false" />3、關閉注冊中心啟動時檢查:(注冊訂閱失敗時報錯)
<dubbo:registry check="false" />
復制代碼

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

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

四、訂閱
1、問題
為方便開發測試,經常會在線下共用一個所有服務可用的注冊中心,這時,如果一個正在開發中的服務提供者注冊,可能會影響消費者不能正常運行。

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

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

五、回聲測試(測試服務是否可用)
回聲測試用于檢測服務是否可用,回聲測試按照正常請求流程執行,能夠測試整個調用是否通暢,可用于監控。
所有服務自動實現EchoService接口,只需將任意服務引用強制轉型為EchoService,即可使用。

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"))

六、延遲連接?
延遲連接,用于減少長連接數,當有調用發起時,再創建長連接。
只對使用長連接的dubbo協議生效。

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

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

復制代碼
1、全局設置開啟令牌驗證:
<!--隨機token令牌,使用UUID生成-->
<dubbo:provider interface="com.foo.BarService" token="true" /><!--固定token令牌,相當于密碼-->
<dubbo:provider interface="com.foo.BarService" token="123456" />2、服務級別設置開啟令牌驗證:
<!--隨機token令牌,使用UUID生成-->
<dubbo:service interface="com.foo.BarService" token="true" /><!--固定token令牌,相當于密碼-->
<dubbo:service interface="com.foo.BarService" token="123456" />3、協議級別設置開啟令牌驗證:
<!--隨機token令牌,使用UUID生成-->
<dubbo:protocol name="dubbo" token="true" /><!--固定token令牌,相當于密碼-->
<dubbo:protocol name="dubbo" token="123456" />
復制代碼

八、日志適配?
缺省自動查找:log4j、slf4j、jcl、jdk

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

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

將訪問日志輸出到當前應用的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” />

注意:
文件的路徑,應用可以根據需要調整,保證這個文件不會在發布過程中被清除。如果有多個應用進程注意不要使用同一個文件,避免內容被覆蓋。

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

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

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450667.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450667.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450667.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ASP.NET Core 實戰:Linux 小白的 .NET Core 部署之路

一、前言 最近一段時間自己主要的學習計劃還是按照畢業后設定的計劃&#xff0c;自己一步步的搭建一個前后端分離的 ASP.NET Core 項目&#xff0c;目前也還在繼續學習 Vue 中&#xff0c;雖然中間斷了很長時間&#xff0c;好歹還是堅持下來了&#xff0c;嗯&#xff0c;看了看…

學以致用十三-----Centos7.2+python3+YouCompleteMe成功歷程

歷經幾天的摸索&#xff0c;趟過幾趟坑之后&#xff0c;終于完成YouCompleteMe的安裝配置。 今天同樣是個不能忘記的日子&#xff0c;國恥日&#xff0c;勿忘國恥。&#xff08;9.18&#xff09; 服務器安裝好&#xff0c;基本配置配置好后&#xff0c;開始安裝。 一、檢查服務…

VC畫圖用到的主要方法

1。鼠標落下&#xff0c;記錄鼠標的起始位置 void CMyEasyDrawView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息處理程序代碼和/或調用默認值 //graph->m_nTypedlg-> m_bStartDraw true; m_PtPress m_PtLast point; CView::OnLButtonDown…

【最新版】Java學習路線(含B站口碑推薦視頻鏈接)

文章目錄關于如何自學一、計算機網絡二、數據結構與算法三、操作系統四、計算機組成原理五、編譯原理六、設計模式七、MySQL八、實操工具九、JAVA并發與JVM十、Redis十一、Linux十二、Java路線學習尚硅谷黑馬程序員動力節點狂神說十三、Java基礎十四、JavaWeb十五、框架十六、微…

記錄no static method cannot be reference

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯如題&#xff1a; no static method cannot be reference 我一直以為是在靜態方法中調用了非靜態方法&#xff0c;實際上只是我在注…

文件存儲權限

Android 6.0及以上&#xff0c;需要動態申請權限&#xff1a; Manifest.permission.READ_EXTERNAL_STORAGE Manifest.permission.WRITE_EXTERNAL_STORAGE <uses-permission-sdk-23 android:name"android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permis…

從工具的奴隸到工具的主人

摘要&#xff1a;我們每個人都是工具的奴隸。隨著我們的學習&#xff0c;我們不斷的加深自己對工具的認識&#xff0c;從而從它們里面解脫出來。現在我就來說一下我作為各種工具的奴隸&#xff0c;以及逐漸擺脫它們的思想控制的歷史吧。 當我高中畢業進入大學計算機系的時候&am…

記錄A component required a bean named ‘studentService‘ that could not be found.

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯如題&#xff1a; A component required a bean named studentService that could not be found. 出問題的代碼行&#xff1a; &l…

Java---利用程序實現在控制臺聊天

一.普通版&#xff08;不能實現隨意輸入&#xff09; 電腦A(服務器端) package day; import java.net.ServerSocket; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class Mysever {public static void…

16.看板方法——三類改進機會筆記

00.三種常見的模型和它們一些變種&#xff1a;約束理論及其主要理念&#xff1b;還有聚焦于分析和減少變異性的模型及其變種等。 01.五步聚焦法 *a.識別約束 *b.作出決定&#xff0c;以最大化利用約束 *c.使系統中的其余一切部分都服從于b中做出決定 *d.突破約束 *e.避免惰性&a…

C/C++的64位整型

在C/C中&#xff0c;64為整型一直是一種沒有確定規范的數據類型。現今主流的編譯器中&#xff0c;對64為整型的支持也是標準不一&#xff0c;形態各異。一般來說&#xff0c;64位整型的定義方式有long long和__int64兩種(VC還支持_int64)&#xff0c;而輸出到標準輸出方式有pri…

記錄 Duplicate spring bean id dubbo

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 啟動工程 報錯如題&#xff1a; Duplicate spring bean id dubbo &#xff0c;意思是id 重復。 原因是我在加載配置文件時加載了兩個…

1.KafKa-介紹

轉載于:https://www.cnblogs.com/v-lcc/p/9674975.html

關于日志的123

寫在前面&#xff1a; 關于日志其實有很多想說的&#xff0c;不過將自己整理的文檔轉化為Blog還是比較花時間的&#xff0c;偶有疏漏&#xff0c;請多包涵。 本篇文章所講均只止于Java。 日志的作用&#xff1a; 1.定位問題&#xff0c;對于一個系統而言&#xff0c;總是會有些…

研究顯示每天工作超8小時得心臟病概率增加80%,生命很重要,工作不要那個累。

每天工作超過8小時的人患心臟病的風險最高可增加80%(資料圖) 據英國《每日郵報》9月12日報道&#xff0c;芬蘭職業保健研究所的科學家們近日進行了一項研究&#xff0c;他們發現每天工作超過8小時的人患心臟病的風險最高可增加80%。 研究人員表示&#xff0c;長時間的工作是許多…

SVN介紹

1.SVN介紹SVN是一個跨平臺的開源的版本控制系統&#xff0c;svn版本管理工具管理著隨時間改變的各種數據&#xff0c;這些數據放置在一個中央檔案庫&#xff08;repository&#xff09;中&#xff0c;svn會備份并記錄每個文件每一次的修改、更新、變動。這樣可以把任意一個時間…

記錄 Annotation processing is not supported for module cycles.

報錯&#xff1a;Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [A,B] are excluded from annotation processing 我是想啟動兩個 maven工程&#xff0c;相互作為服務提供方和消費方&#xff0c;于是在p…

沉淀再出發:Spring的架構理解

沉淀再出發:Spring的架構理解 一、前言 在Spring之前使用的EJB框架太龐大和重量級了&#xff0c;開發成本很高&#xff0c;由此spring應運而生。關于Spring&#xff0c;學過java的人基本上都會慢慢接觸到&#xff0c;并且在面試的時候也是經常遇到的&#xff0c;因為這個技術極…

用Python進行機器學習所需環境的配置(轉)

源&#xff1a;用Python進行機器學習所需環境的配置

成功創業者所需的能力

1. 富有遠見&#xff0c;樂在其中。 如果你能很好地預見自己的公司所在領域在很多年后的樣子&#xff0c;這能保證你在該領域取得長久的發展。很多人能在商業領域取得成功并不是因為他們徹底的廢舊立新&#xff0c;而是因為他們乘風破浪&#xff0c;能在現有的基礎上有所改進和…