6.Dubbo之XML配置詳解。

 

配置介紹

配置之間的關係

dubbo-config

標籤 用途 解釋
<dubbo:service/> 服務配置 用於暴露一個服務,定義服務的元信息,一個服務可以用多個協議暴露,一個服務也可以註冊到多個註冊中心
<dubbo:reference/>[2] 引用配置 用於創建一個遠程服務代理,一個引用可以指向多個註冊中心
<dubbo:protocol/> 協議配置 用於配置提供服務的協議信息,協議由提供方指定,消費方被動接受
<dubbo:application/> 應用配置 用於配置當前應用信息,不管該應用是提供者還是消費者
<dubbo:module/> 模塊配置 用於配置當前模塊信息,可選
<dubbo:registry/> 註冊中心配置 用於配置連接註冊中心相關信息
<dubbo:monitor/> 監控中心配置 用於配置連接監控中心相關信息,可選
<dubbo:provider/> 提供方配置 當 ProtocolConfig 和 ServiceConfig 某屬性沒有配置時,採用此缺省值,可選
<dubbo:consumer/> 消費方配置 當 ReferenceConfig 某屬性沒有配置時,採用此缺省值,可選
<dubbo:method/> 方法配置 用於 ServiceConfig 和 ReferenceConfig 指定方法級的配置信息
<dubbo:argument/> 參數配置 用於指定方法參數配置

配置覆蓋關係

以 timeout 爲例,顯示了配置的查找順序,其它 retries, loadbalance, actives 等類似:

  • 方法級優先,接口級次之,全局配置再次之。
  • 如果級別一樣,則消費方優先,提供方次之。

其中,服務提供方配置,通過 URL 經由註冊中心傳遞給消費方。

dubbo-config-override

建議由服務提供方設置超時,因爲一個方法需要執行多長時間,服務提供方更清楚,如果一個消費方同時引用多個服務,就不需要關心每個服務的超時設置。

理論上 ReferenceConfig 的非服務標識配置,在 ConsumerConfig,ServiceConfig, ProviderConfig 均可以缺省配置。

schema 配置參考手冊

所有配置項分爲三大類,參見下表中的"作用" 一列。

  • 服務發現:表示該配置項用於服務的註冊與發現,目的是讓消費方找到提供方。
  • 服務治理:表示該配置項用於治理服務間的關係,或爲開發測試提供便利條件。
  • 性能調優:表示該配置項用於調優性能,不同的選項對性能會產生影響。
  • 所有配置最終都將轉換爲 URL 表示,並由服務提供方生成,經註冊中心傳遞給消費方,各屬性對應 URL 的參數,參見配置項一覽表中的 "對應URL參數" 列。

XML Schema: http://dubbo.apache.org/schema/dubbo/dubbo.xsd 

注意如果上面的XML Schema如果找不到就換爲: http://code.alibabatech.com/schema/dubbo/dubbo.xsd

dubbo:service

服務提供者暴露服務配置。對應的配置類:com.alibaba.dubbo.config.ServiceConfig

屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
interface   class 必填   服務發現 服務接口名 1.0.0以上版本
ref   object 必填   服務發現 服務對象實現引用 1.0.0以上版本
version version string 可選 0.0.0 服務發現 服務版本,建議使用兩位數字版本,如:1.0,通常在接口不兼容時版本號才需要升級 1.0.0以上版本
group group string 可選   服務發現 服務分組,當一個接口有多個實現,可以用分組區分 1.0.7以上版本
path <path> string 可選 缺省爲接口名 服務發現 服務路徑 (注意:1.0不支持自定義路徑,總是使用接口名,如果有1.0調2.0,配置服務路徑可能不兼容) 1.0.12以上版本
delay delay int 可選 0 性能調優 延遲註冊服務時間(毫秒) ,設爲-1時,表示延遲到Spring容器初始化完成時暴露服務 1.0.14以上版本
timeout timeout int 可選 1000 性能調優 遠程服務調用超時時間(毫秒) 2.0.0以上版本
retries retries int 可選 2 性能調優 遠程服務調用重試次數,不包括第一次調用,不需要重試請設爲0 2.0.0以上版本
connections connections int 可選 100 性能調優 對每個提供者的最大連接數,rmi、http、hessian等短連接協議表示限制連接數,dubbo等長連接協表示建立的長連接個數 2.0.0以上版本
loadbalance loadbalance string 可選 random 性能調優 負載均衡策略,可選值:random,roundrobin,leastactive,分別表示:隨機,輪循,最少活躍調用 2.0.0以上版本
async async boolean 可選 false 性能調優 是否缺省異步執行,不可靠異步,只是忽略返回值,不阻塞執行線程 2.0.0以上版本
stub stub class/boolean 可選 false 服務治理 設爲true,表示使用缺省代理類名,即:接口名 + Local後綴,服務接口客戶端本地代理類名,用於在客戶端執行本地邏輯,如本地緩存等,該本地代理類的構造函數必須允許傳入遠程代理對象,構造函數如:public XxxServiceLocal(XxxService xxxService) 2.0.0以上版本
mock mock class/boolean 可選 false 服務治理 設爲true,表示使用缺省Mock類名,即:接口名 + Mock後綴,服務接口調用失敗Mock實現類,該Mock類必須有一個無參構造函數,與Local的區別在於,Local總是被執行,而Mock只在出現非業務異常(比如超時,網絡異常等)時執行,Local在遠程調用之前執行,Mock在遠程調用後執行。 2.0.0以上版本
token token string/boolean 可選 false 服務治理 令牌驗證,爲空表示不開啓,如果爲true,表示隨機生成動態令牌,否則使用靜態令牌,令牌的作用是防止消費者繞過註冊中心直接訪問,保證註冊中心的授權功能有效,如果使用點對點調用,需關閉令牌功能 2.0.0以上版本
registry   string 可選 缺省向所有registry註冊 配置關聯 向指定註冊中心註冊,在多個註冊中心時使用,值爲<dubbo:registry>的id屬性,多個註冊中心ID用逗號分隔,如果不想將該服務註冊到任何registry,可將值設爲N/A 2.0.0以上版本
provider   string 可選 缺使用第一個provider配置 配置關聯 指定provider,值爲<dubbo:provider>的id屬性 2.0.0以上版本
deprecated deprecated boolean 可選 false 服務治理 服務是否過時,如果設爲true,消費方引用時將打印服務過時警告error日誌 2.0.5以上版本
dynamic dynamic boolean 可選 true 服務治理 服務是否動態註冊,如果設爲false,註冊後將顯示後disable狀態,需人工啓用,並且服務提供者停止時,也不會自動取消冊,需人工禁用。 2.0.5以上版本
accesslog accesslog string/boolean 可選 false 服務治理 設爲true,將向logger中輸出訪問日誌,也可填寫訪問日誌文件路徑,直接把訪問日誌輸出到指定文件 2.0.5以上版本
owner owner string 可選   服務治理 服務負責人,用於服務治理,請填寫負責人公司郵箱前綴 2.0.5以上版本
document document string 可選   服務治理 服務文檔URL 2.0.5以上版本
weight weight int 可選   性能調優 服務權重 2.0.5以上版本
executes executes int 可選 0 性能調優 服務提供者每服務每方法最大可並行執行請求數 2.0.5以上版本
proxy proxy string 可選 javassist 性能調優 生成動態代理方式,可選:jdk/javassist 2.0.5以上版本
cluster cluster string 可選 failover 性能調優 集羣方式,可選:failover/failfast/failsafe/failback/forking 2.0.5以上版本
filter service.filter string 可選 default 性能調優 服務提供方遠程調用過程攔截器名稱,多個名稱用逗號分隔 2.0.5以上版本
listener exporter.listener string 可選 default 性能調優 服務提供方導出服務監聽器名稱,多個名稱用逗號分隔  
protocol   string 可選   配置關聯 使用指定的協議暴露服務,在多協議時使用,值爲<dubbo:protocol>的id屬性,多個協議ID用逗號分隔 2.0.5以上版本
layer layer string 可選   服務治理 服務提供者所在的分層。如:biz、dao、intl:web、china:acton。 2.0.7以上版本
register register boolean 可選 true 服務治理 該協議的服務是否註冊到註冊中心 2.0.8以上版本

dubbo:reference

服務消費者引用服務配置。對應的配置類: com.alibaba.dubbo.config.ReferenceConfig

屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
id   string 必填   配置關聯 服務引用Bean Id 即爲注入名 1.0.0以上版本
interface   class 必填   服務發現 服務接口名 1.0.0以上版本
version version string 可選   服務發現 服務版本,與服務提供者的版本一致 1.0.0以上版本
group group string 可選   服務發現 服務分組,當一個接口有多個實現,可以用分組區分,必需和服務提供方一致 1.0.7以上版本
timeout timeout long 可選 缺省使用<dubbo:consumer>的timeout 性能調優 服務方法調用超時時間(毫秒) 1.0.5以上版本
retries retries int 可選 缺省使用<dubbo:consumer>的retries 性能調優 遠程服務調用重試次數,不包括第一次調用,不需要重試請設爲0 2.0.0以上版本
connections connections int 可選 缺省使用<dubbo:consumer>的connections 性能調優 對每個提供者的最大連接數,rmi、http、hessian等短連接協議表示限制連接數,dubbo等長連接協表示建立的長連接個數 2.0.0以上版本
loadbalance loadbalance string 可選 缺省使用<dubbo:consumer>的loadbalance 性能調優 負載均衡策略,可選值:random,roundrobin,leastactive,分別表示:隨機,輪循,最少活躍調用 2.0.0以上版本
async async boolean 可選 缺省使用<dubbo:consumer>的async 性能調優 是否異步執行,不可靠異步,只是忽略返回值,不阻塞執行線程 2.0.0以上版本
generic generic boolean 可選 缺省使用<dubbo:consumer>的generic 服務治理 是否缺省泛化接口,如果爲泛化接口,將返回GenericService 2.0.0以上版本
check check boolean 可選 缺省使用<dubbo:consumer>的check 服務治理 啓動時檢查提供者是否存在,true報錯,false忽略 2.0.0以上版本
url url string 可選   服務治理 點對點直連服務提供者地址,將繞過註冊中心 1.0.6以上版本
stub stub class/boolean 可選   服務治理 服務接口客戶端本地代理類名,用於在客戶端執行本地邏輯,如本地緩存等,該本地代理類的構造函數必須允許傳入遠程代理對象,構造函數如:public XxxServiceLocal(XxxService xxxService) 2.0.0以上版本
mock mock class/boolean 可選   服務治理 服務接口調用失敗Mock實現類名,該Mock類必須有一個無參構造函數,與Local的區別在於,Local總是被執行,而Mock只在出現非業務異常(比如超時,網絡異常等)時執行,Local在遠程調用之前執行,Mock在遠程調用後執行。 Dubbo1.0.13及其以上版本支持
cache cache string/boolean 可選   服務治理 以調用參數爲key,緩存返回結果,可選:lru, threadlocal, jcache等 Dubbo2.1.0及其以上版本支持
validation validation boolean 可選   服務治理 是否啓用JSR303標準註解驗證,如果啓用,將對方法參數上的註解進行校驗 Dubbo2.1.0及其以上版本支持
proxy proxy boolean 可選 javassist 性能調優 選擇動態代理實現策略,可選:javassist, jdk 2.0.2以上版本
client client string 可選   性能調優 客戶端傳輸類型設置,如Dubbo協議的netty或mina。 Dubbo2.0.0以上版本支持
registry   string 可選 缺省將從所有註冊中心獲服務列表後合併結果 配置關聯 從指定註冊中心註冊獲取服務列表,在多個註冊中心時使用,值爲<dubbo:registry>的id屬性,多個註冊中心ID用逗號分隔 2.0.0以上版本
owner owner string 可選   服務治理 調用服務負責人,用於服務治理,請填寫負責人公司郵箱前綴 2.0.5以上版本
actives actives int 可選 0 性能調優 每服務消費者每服務每方法最大併發調用數 2.0.5以上版本
cluster cluster string 可選 failover 性能調優 集羣方式,可選:failover/failfast/failsafe/failback/forking 2.0.5以上版本
filter reference.filter string 可選 default 性能調優 服務消費方遠程調用過程攔截器名稱,多個名稱用逗號分隔 2.0.5以上版本
listener invoker.listener string 可選 default 性能調優 服務消費方引用服務監聽器名稱,多個名稱用逗號分隔 2.0.5以上版本
layer layer string 可選   服務治理 服務調用者所在的分層。如:biz、dao、intl:web、china:acton。 2.0.7以上版本
init init boolean 可選 false 性能調優 是否在afterPropertiesSet()時飢餓初始化引用,否則等到有人注入或引用該實例時再初始化。 2.0.10以上版本
protocol protocol string 可選   服力治理 只調用指定協議的服務提供方,其它協議忽略。 2.2.0以上版本

dubbo:protocol

服務提供者協議配置。對應的配置類: com.alibaba.dubbo.config.ProtocolConfig。同時,如果需要支持多協議,可以聲明多個 <dubbo:protocol> 標籤,並在 <dubbo:service> 中通過 protocol 屬性指定使用的協議。

屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
id   string 可選 dubbo 配置關聯 協議BeanId,可以在<dubbo:service protocol="">中引用此ID,如果ID不填,缺省和name屬性值一樣,重複則在name後加序號。 2.0.5以上版本
name <protocol> string 必填 dubbo 性能調優 協議名稱 2.0.5以上版本
port <port> int 可選 dubbo協議缺省端口爲20880,rmi協議缺省端口爲1099,http和hessian協議缺省端口爲80;如果沒有配置port,則自動採用默認端口,如果配置爲-1,則會分配一個沒有被佔用的端口。Dubbo 2.4.0+,分配的端口在協議缺省端口的基礎上增長,確保端口段可控 服務發現 服務端口 2.0.5以上版本
host <host> string 可選 自動查找本機IP 服務發現 -服務主機名,多網卡選擇或指定VIP及域名時使用,爲空則自動查找本機IP,-建議不要配置,讓Dubbo自動獲取本機IP 2.0.5以上版本
threadpool threadpool string 可選 fixed 性能調優 線程池類型,可選:fixed/cached 2.0.5以上版本
threads threads int 可選 200 性能調優 服務線程池大小(固定大小) 2.0.5以上版本
iothreads threads int 可選 cpu個數+1 性能調優 io線程池大小(固定大小) 2.0.5以上版本
accepts accepts int 可選 0 性能調優 服務提供方最大可接受連接數 2.0.5以上版本
payload payload int 可選 8388608(=8M) 性能調優 請求及響應數據包大小限制,單位:字節 2.0.5以上版本
codec codec string 可選 dubbo 性能調優 協議編碼方式 2.0.5以上版本
serialization serialization string 可選 dubbo協議缺省爲hessian2,rmi協議缺省爲java,http協議缺省爲json 性能調優 協議序列化方式,當協議支持多種序列化方式時使用,比如:dubbo協議的dubbo,hessian2,java,compactedjava,以及http協議的json等 2.0.5以上版本
accesslog accesslog string/boolean 可選   服務治理 設爲true,將向logger中輸出訪問日誌,也可填寫訪問日誌文件路徑,直接把訪問日誌輸出到指定文件 2.0.5以上版本
path <path> string 可選   服務發現 提供者上下文路徑,爲服務path的前綴 2.0.5以上版本
transporter transporter string 可選 dubbo協議缺省爲netty 性能調優 協議的服務端和客戶端實現類型,比如:dubbo協議的mina,netty等,可以分拆爲server和client配置 2.0.5以上版本
server server string 可選 dubbo協議缺省爲netty,http協議缺省爲servlet 性能調優 協議的服務器端實現類型,比如:dubbo協議的mina,netty等,http協議的jetty,servlet等 2.0.5以上版本
client client string 可選 dubbo協議缺省爲netty 性能調優 協議的客戶端實現類型,比如:dubbo協議的mina,netty等 2.0.5以上版本
dispatcher dispatcher string 可選 dubbo協議缺省爲all 性能調優 協議的消息派發方式,用於指定線程模型,比如:dubbo協議的all, direct, message, execution, connection等 2.1.0以上版本
queues queues int 可選 0 性能調優 線程池隊列大小,當線程池滿時,排隊等待執行的隊列大小,建議不要設置,當線程程池時應立即失敗,重試其它服務提供機器,而不是排隊,除非有特殊需求。 2.0.5以上版本
charset charset string 可選 UTF-8 性能調優 序列化編碼 2.0.5以上版本
buffer buffer int 可選 8192 性能調優 網絡讀寫緩衝區大小 2.0.5以上版本
heartbeat heartbeat int 可選 0 性能調優 心跳間隔,對於長連接,當物理層斷開時,比如拔網線,TCP的FIN消息來不及發送,對方收不到斷開事件,此時需要心跳來幫助檢查連接是否已斷開 2.0.10以上版本
telnet telnet string 可選   服務治理 所支持的telnet命令,多個命令用逗號分隔 2.0.5以上版本
register register boolean 可選 true 服務治理 該協議的服務是否註冊到註冊中心 2.0.8以上版本
contextpath contextpath String 可選 缺省爲空串 服務治理   2.0.6以上版本

dubbo:registry

註冊中心配置。對應的配置類: com.alibaba.dubbo.config.RegistryConfig。同時如果有多個不同的註冊中心,可以聲明多個 <dubbo:registry> 標籤,並在 <dubbo:service> 或 <dubbo:reference> 的 registry 屬性指定使用的註冊中心

屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
id   string 可選   配置關聯 註冊中心引用BeanId,可以在<dubbo:service registry="">或<dubbo:reference registry="">中引用此ID 1.0.16以上版本
address <host:port> string 必填   服務發現 註冊中心服務器地址,如果地址沒有端口缺省爲9090,同一集羣內的多個地址用逗號分隔,如:ip:port,ip:port,不同集羣的註冊中心,請配置多個<dubbo:registry>標籤 1.0.16以上版本
protocol <protocol> string 可選 dubbo 服務發現 注同中心地址協議,支持dubbo, http, local三種協議,分別表示,dubbo地址,http地址,本地註冊中心 2.0.0以上版本
port <port> int 可選 9090 服務發現 註冊中心缺省端口,當address沒有帶端口時使用此端口做爲缺省值 2.0.0以上版本
username <username> string 可選   服務治理 登錄註冊中心用戶名,如果註冊中心不需要驗證可不填 2.0.0以上版本
password <password> string 可選   服務治理 登錄註冊中心密碼,如果註冊中心不需要驗證可不填 2.0.0以上版本
transport registry.transporter string 可選 netty 性能調優 網絡傳輸方式,可選mina,netty 2.0.0以上版本
timeout registry.timeout int 可選 5000 性能調優 註冊中心請求超時時間(毫秒) 2.0.0以上版本
session registry.session int 可選 60000 性能調優 註冊中心會話超時時間(毫秒),用於檢測提供者非正常斷線後的髒數據,比如用心跳檢測的實現,此時間就是心跳間隔,不同註冊中心實現不一樣。 2.1.0以上版本
file registry.file string 可選   服務治理 使用文件緩存註冊中心地址列表及服務提供者列表,應用重啓時將基於此文件恢復,注意:兩個註冊中心不能使用同一文件存儲 2.0.0以上版本
wait registry.wait int 可選 0 性能調優 停止時等待通知完成時間(毫秒) 2.0.0以上版本
check check boolean 可選 true 服務治理 註冊中心不存在時,是否報錯 2.0.0以上版本
register register boolean 可選 true 服務治理 是否向此註冊中心註冊服務,如果設爲false,將只訂閱,不註冊 2.0.5以上版本
subscribe subscribe boolean 可選 true 服務治理 是否向此註冊中心訂閱服務,如果設爲false,將只註冊,不訂閱 2.0.5以上版本
dynamic dynamic boolean 可選 true 服務治理 服務是否動態註冊,如果設爲false,註冊後將顯示後disable狀態,需人工啓用,並且服務提供者停止時,也不會自動取消冊,需人工禁用。 2.0.5以上版本

dubbo:monitor

監控中心配置。對應的配置類: com.alibaba.dubbo.config.MonitorConfig

屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
protocol protocol string 可選 dubbo 服務治理 監控中心協議,如果爲protocol="registry",表示從註冊中心發現監控中心地址,否則直連監控中心。 2.0.9以上版本
address <url> string 可選 N/A 服務治理 直連監控中心服務器地址,address="10.20.130.230:12080" 1.0.16以上版本

dubbo:application

應用信息配置。對應的配置類:com.alibaba.dubbo.config.ApplicationConfig

屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
name application string 必填   服務治理 當前應用名稱,用於註冊中心計算應用間依賴關係,注意:消費者和提供者應用名不要一樣,此參數不是匹配條件,你當前項目叫什麼名字就填什麼,和提供者消費者角色無關,比如:kylin應用調用了morgan應用的服務,則kylin項目配成kylin,morgan項目配成morgan,可能kylin也提供其它服務給別人使用,但kylin項目永遠配成kylin,這樣註冊中心將顯示kylin依賴於morgan 1.0.16以上版本
version application.version string 可選   服務治理 當前應用的版本 2.2.0以上版本
owner owner string 可選   服務治理 應用負責人,用於服務治理,請填寫負責人公司郵箱前綴 2.0.5以上版本
organization organization string 可選   服務治理 組織名稱(BU或部門),用於註冊中心區分服務來源,此配置項建議不要使用autoconfig,直接寫死在配置中,比如china,intl,itu,crm,asc,dw,aliexpress等 2.0.0以上版本
architecture  architecture  string 可選   服務治理 用於服務分層對應的架構。如,intl、china。不同的架構使用不同的分層。 2.0.7以上版本
environment environment string 可選   服務治理 應用環境,如:develop/test/product,不同環境使用不同的缺省值,以及作爲只用於開發測試功能的限制條件 2.0.0以上版本
compiler compiler string 可選 javassist 性能優化 Java字節碼編譯器,用於動態類的生成,可選:jdk或javassist 2.1.0以上版本
logger logger string 可選 slf4j 性能優化 日誌輸出方式,可選:slf4j,jcl,log4j,jdk 2.2.0以上版本

dubbo:module

模塊信息配置。對應的配置類 com.alibaba.dubbo.config.ModuleConfig

屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
name module string 必填   服務治理 當前模塊名稱,用於註冊中心計算模塊間依賴關係 2.2.0以上版本
version module.version string 可選   服務治理 當前模塊的版本 2.2.0以上版本
owner owner string 可選   服務治理 模塊負責人,用於服務治理,請填寫負責人公司郵箱前綴 2.2.0以上版本
organization organization string 可選   服務治理 組織名稱(BU或部門),用於註冊中心區分服務來源,此配置項建議不要使用autoconfig,直接寫死在配置中,比如china,intl,itu,crm,asc,dw,aliexpress等 2.2.0以上版本

dubbo:provider

服務提供者缺省值配置。對應的配置類:com.alibaba.dubbo.config.ProviderConfig。同時該標籤爲 <dubbo:service> 和 <dubbo:protocol> 標籤的缺省值設置。

屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
id   string 可選 dubbo 配置關聯 協議BeanId,可以在<dubbo:service proivder="">中引用此ID 1.0.16以上版本
protocol <protocol> string 可選 dubbo 性能調優 協議名稱 1.0.16以上版本
host <host> string 可選 自動查找本機IP 服務發現 服務主機名,多網卡選擇或指定VIP及域名時使用,爲空則自動查找本機IP,建議不要配置,讓Dubbo自動獲取本機IP 1.0.16以上版本
threads threads int 可選 200 性能調優 服務線程池大小(固定大小) 1.0.16以上版本
payload payload int 可選 8388608(=8M) 性能調優 請求及響應數據包大小限制,單位:字節 2.0.0以上版本
path <path> string 可選   服務發現 提供者上下文路徑,爲服務path的前綴 2.0.0以上版本
server server string 可選 dubbo協議缺省爲netty,http協議缺省爲servlet 性能調優 協議的服務器端實現類型,比如:dubbo協議的mina,netty等,http協議的jetty,servlet等 2.0.0以上版本
client client string 可選 dubbo協議缺省爲netty 性能調優 協議的客戶端實現類型,比如:dubbo協議的mina,netty等 2.0.0以上版本
codec codec string 可選 dubbo 性能調優 協議編碼方式 2.0.0以上版本
serialization serialization string 可選 dubbo協議缺省爲hessian2,rmi協議缺省爲java,http協議缺省爲json 性能調優 協議序列化方式,當協議支持多種序列化方式時使用,比如:dubbo協議的dubbo,hessian2,java,compactedjava,以及http協議的json,xml等 2.0.5以上版本
default   boolean 可選 false 配置關聯 是否爲缺省協議,用於多協議 1.0.16以上版本
filter service.filter string 可選   性能調優 服務提供方遠程調用過程攔截器名稱,多個名稱用逗號分隔 2.0.5以上版本
listener exporter.listener string 可選   性能調優 服務提供方導出服務監聽器名稱,多個名稱用逗號分隔 2.0.5以上版本
threadpool threadpool string 可選 fixed 性能調優 線程池類型,可選:fixed/cached 2.0.5以上版本
accepts accepts int 可選 0 性能調優 服務提供者最大可接受連接數 2.0.5以上版本
version version string 可選 0.0.0 服務發現 服務版本,建議使用兩位數字版本,如:1.0,通常在接口不兼容時版本號才需要升級 2.0.5以上版本
group group string 可選   服務發現 服務分組,當一個接口有多個實現,可以用分組區分 2.0.5以上版本
delay delay int 可選 0 性能調優 延遲註冊服務時間(毫秒)- ,設爲-1時,表示延遲到Spring容器初始化完成時暴露服務 2.0.5以上版本
timeout default.timeout int 可選 1000 性能調優 遠程服務調用超時時間(毫秒) 2.0.5以上版本
retries default.retries int 可選 2 性能調優 遠程服務調用重試次數,不包括第一次調用,不需要重試請設爲0 2.0.5以上版本
connections default.connections int 可選 0 性能調優 對每個提供者的最大連接數,rmi、http、hessian等短連接協議表示限制連接數,dubbo等長連接協表示建立的長連接個數 2.0.5以上版本
loadbalance default.loadbalance string 可選 random 性能調優 負載均衡策略,可選值:random,roundrobin,leastactive,分別表示:隨機,輪循,最少活躍調用 2.0.5以上版本
async default.async boolean 可選 false 性能調優 是否缺省異步執行,不可靠異步,只是忽略返回值,不阻塞執行線程 2.0.5以上版本
stub stub boolean 可選 false 服務治理 設爲true,表示使用缺省代理類名,即:接口名 + Local後綴。 2.0.5以上版本
mock mock boolean 可選 false 服務治理 設爲true,表示使用缺省Mock類名,即:接口名 + Mock後綴。 2.0.5以上版本
token token boolean 可選 false 服務治理 令牌驗證,爲空表示不開啓,如果爲true,表示隨機生成動態令牌 2.0.5以上版本
registry registry string 可選 缺省向所有registry註冊 配置關聯 向指定註冊中心註冊,在多個註冊中心時使用,值爲<dubbo:registry>的id屬性,多個註冊中心ID用逗號分隔,如果不想將該服務註冊到任何registry,可將值設爲N/A 2.0.5以上版本
dynamic dynamic boolean 可選 true 服務治理 服務是否動態註冊,如果設爲false,註冊後將顯示後disable狀態,需人工啓用,並且服務提供者停止時,也不會自動取消冊,需人工禁用。 2.0.5以上版本
accesslog accesslog string/boolean 可選 false 服務治理 設爲true,將向logger中輸出訪問日誌,也可填寫訪問日誌文件路徑,直接把訪問日誌輸出到指定文件 2.0.5以上版本
owner owner string 可選   服務治理 服務負責人,用於服務治理,請填寫負責人公司郵箱前綴 2.0.5以上版本
document document string 可選   服務治理 服務文檔URL 2.0.5以上版本
weight weight int 可選   性能調優 服務權重 2.0.5以上版本
executes executes int 可選 0 性能調優 服務提供者每服務每方法最大可並行執行請求數 2.0.5以上版本
actives default.actives int 可選 0 性能調優 每服務消費者每服務每方法最大併發調用數 2.0.5以上版本
proxy proxy string 可選 javassist 性能調優 生成動態代理方式,可選:jdk/javassist 2.0.5以上版本
cluster default.cluster string 可選 failover 性能調優 集羣方式,可選:failover/failfast/failsafe/failback/forking 2.0.5以上版本
deprecated deprecated boolean 可選 false 服務治理 服務是否過時,如果設爲true,消費方引用時將打印服務過時警告error日誌 2.0.5以上版本
queues queues int 可選 0 性能調優 線程池隊列大小,當線程池滿時,排隊等待執行的隊列大小,建議不要設置,當線程程池時應立即失敗,重試其它服務提供機器,而不是排隊,除非有特殊需求。 2.0.5以上版本
charset charset string 可選 UTF-8 性能調優 序列化編碼 2.0.5以上版本
buffer buffer int 可選 8192 性能調優 網絡讀寫緩衝區大小 2.0.5以上版本
iothreads iothreads int 可選 CPU + 1 性能調優 IO線程池,接收網絡讀寫中斷,以及序列化和反序列化,不處理業務,業務線程池參見threads配置,此線程池和CPU相關,不建議配置。 2.0.5以上版本
telnet telnet string 可選   服務治理 所支持的telnet命令,多個命令用逗號分隔 2.0.5以上版本
<dubbo:service> contextpath contextpath String 可選 缺省爲空串 服務治理  
layer layer string 可選   服務治理 服務提供者所在的分層。如:biz、dao、intl:web、china:acton。 2.0.7以上版本

dubbo:consumer

服務消費者缺省值配置。配置類: com.alibaba.dubbo.config.ConsumerConfig 。同時該標籤爲 <dubbo:reference> 標籤的缺省值設置。

屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
timeout default.timeout int 可選 1000 性能調優 遠程服務調用超時時間(毫秒) 1.0.16以上版本
retries default.retries int 可選 2 性能調優 遠程服務調用重試次數,不包括第一次調用,不需要重試請設爲0 1.0.16以上版本
loadbalance default.loadbalance string 可選 random 性能調優 負載均衡策略,可選值:random,roundrobin,leastactive,分別表示:隨機,輪循,最少活躍調用 1.0.16以上版本
async default.async boolean 可選 false 性能調優 是否缺省異步執行,不可靠異步,只是忽略返回值,不阻塞執行線程 2.0.0以上版本
connections default.connections int 可選 100 性能調優 每個服務對每個提供者的最大連接數,rmi、http、hessian等短連接協議支持此配置,dubbo協議長連接不支持此配置 1.0.16以上版本
generic generic boolean 可選 false 服務治理 是否缺省泛化接口,如果爲泛化接口,將返回GenericService 2.0.0以上版本
check check boolean 可選 true 服務治理 啓動時檢查提供者是否存在,true報錯,false忽略 1.0.16以上版本
proxy proxy string 可選 javassist 性能調優 生成動態代理方式,可選:jdk/javassist 2.0.5以上版本
owner owner string 可選   服務治理 調用服務負責人,用於服務治理,請填寫負責人公司郵箱前綴 2.0.5以上版本
actives default.actives int 可選 0 性能調優 每服務消費者每服務每方法最大併發調用數 2.0.5以上版本
cluster default.cluster string 可選 failover 性能調優 集羣方式,可選:failover/failfast/failsafe/failback/forking 2.0.5以上版本
filter reference.filter string 可選   性能調優 服務消費方遠程調用過程攔截器名稱,多個名稱用逗號分隔 2.0.5以上版本
listener invoker.listener string 可選   性能調優 服務消費方引用服務監聽器名稱,多個名稱用逗號分隔 2.0.5以上版本
registry   string 可選 缺省向所有registry註冊 配置關聯 向指定註冊中心註冊,在多個註冊中心時使用,值爲<dubbo:registry>的id屬性,多個註冊中心ID用逗號分隔,如果不想將該服務註冊到任何registry,可將值設爲N/A 2.0.5以上版本
layer layer string 可選   服務治理 服務調用者所在的分層。如:biz、dao、intl:web、china:acton。 2.0.7以上版本
init init boolean 可選 false 性能調優 是否在afterPropertiesSet()時飢餓初始化引用,否則等到有人注入或引用該實例時再初始化。 2.0.10以上版本
cache cache string/boolean 可選   服務治理 以調用參數爲key,緩存返回結果,可選:lru, threadlocal, jcache等 Dubbo2.1.0及其以上版本支持
validation validation boolean 可選   服務治理 是否啓用JSR303標準註解驗證,如果啓用,將對方法參數上的註解進行校驗 Dubbo2.1.0及其以上版本支持

dubbo:method

方法級配置。對應的配置類: com.alibaba.dubbo.config.MethodConfig。同時該標籤爲 <dubbo:service> 或 <dubbo:reference> 的子標籤,用於控制到方法級。

屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
name   string 必填   標識 方法名 1.0.8以上版本
timeout <metodName>.timeout int 可選 缺省爲的timeout 性能調優 方法調用超時時間(毫秒) 1.0.8以上版本
retries <metodName>.retries int 可選 缺省爲<dubbo:reference>的retries 性能調優 遠程服務調用重試次數,不包括第一次調用,不需要重試請設爲0 2.0.0以上版本
loadbalance <metodName>.loadbalance string 可選 缺省爲的loadbalance 性能調優 負載均衡策略,可選值:random,roundrobin,leastactive,分別表示:隨機,輪循,最少活躍調用 2.0.0以上版本
async <metodName>.async boolean 可選 缺省爲<dubbo:reference>的async 性能調優 是否異步執行,不可靠異步,只是忽略返回值,不阻塞執行線程 1.0.9以上版本
sent <methodName>.sent boolean 可選 true 性能調優 異步調用時,標記sent=true時,表示網絡已發出數據 2.0.6以上版本
actives <metodName>.actives int 可選 0 性能調優 每服務消費者最大併發

dubbo:argument

方法參數配置。對應的配置類: com.alibaba.dubbo.config.ArgumentConfig。該標籤爲 <dubbo:method> 的子標籤,用於方法參數的特徵描述,比如:

<dubbo:method name="findXxx" timeout="3000" retries="2">
    <dubbo:argument index="0" callback="true" />
</dubbo:method>
屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
index   int 必填   標識 方法名 2.0.6以上版本
type   String 與index二選一   標識 通過參數類型查找參數的index 2.0.6以上版本
callback <metodName><index>.retries boolean 可選   服務治理 參數是否爲callback接口,如果爲callback,服務提供方將生成反向代理,可以從服務提供方反向調用消費方,通常用於事件推送. 2.0.6以上版本

dubbo:parameter

選項參數配置。對應的配置類:java.util.Map。同時該標籤爲<dubbo:protocol><dubbo:service><dubbo:provider><dubbo:reference><dubbo:consumer>的子標籤,用於配置自定義參數,該配置項將作爲擴展點設置自定義參數使用。

屬性 對應URL參數 類型 是否必填 缺省值 作用 描述 兼容性
key key string 必填   服務治理 路由參數鍵 2.0.0以上版本
value value string 必填   服務治理 路由參數值 2.0.0以上版本

比如:

<dubbo:protocol name="napoli">
    <dubbo:parameter key="http://10.20.160.198/wiki/display/dubbo/napoli.queue.name" value="xxx" />
</dubbo:protocol>

也可以:

<dubbo:protocol name="jms" p:queue="xxx" />

協議支持

更多的見http://dubbo.apache.org/zh-cn/docs/user/references/protocol/redis.html

redis://

基於 Redis [1] 實現的 RPC 協議 [2]

註冊 redis 服務的地址

RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181"));
registry.register(URL.valueOf("redis://10.20.153.11/com.foo.BarService?category=providers&dynamic=false&application=foo&group=member&loadbalance=consistenthash"));

在客戶端引用

在客戶端使用 [3]

<dubbo:reference id="store" interface="java.util.Map" group="member" />

或者,點對點直連:

<dubbo:reference id="store" interface="java.util.Map" url="redis://10.20.153.10:6379" />

也可以使用自定義接口:

<dubbo:reference id="store" interface="com.foo.StoreService" url="redis://10.20.153.10:6379" />

方法名建議和 redis 的標準方法名相同,即:get(key), set(key, value), delet(key)。

如果方法名和 redis 的標準方法名不相同,則需要配置映射關係 [4]

<dubbo:reference id="cache" interface="com.foo.CacheService" url="redis://10.20.153.10:6379" p:set="putFoo" p:get="getFoo" p:delete="removeFoo" />

  1. Redis 是一個高效的 KV 存儲服務器 

  2. 2.3.0 以上版本支持 

  3. 不需要感知 Redis 的地址 

  4. 其中 "p:xxx" 爲 spring 的標準 p 標籤 

註冊中心參考手冊

更多的見

http://dubbo.apache.org/zh-cn/docs/user/references/registry/redis.html

Redis 註冊中心

基於 Redis [1] 實現的註冊中心 [2]

/user-guide/images/dubbo-redis-registry.jpg

使用 Redis 的 Key/Map 結構存儲數據結構:

  • 主 Key 爲服務名和類型
  • Map 中的 Key 爲 URL 地址
  • Map 中的 Value 爲過期時間,用於判斷髒數據,髒數據由監控中心刪除 [3]

使用 Redis 的 Publish/Subscribe 事件通知數據變更:

  • 通過事件的值區分事件類型:registerunregistersubscribeunsubscribe
  • 普通消費者直接訂閱指定服務提供者的 Key,只會收到指定服務的 registerunregister 事件
  • 監控中心通過 psubscribe 功能訂閱 /dubbo/*,會收到所有服務的所有變更事件

調用過程:

  1. 服務提供方啓動時,向 Key:/dubbo/com.foo.BarService/providers 下,添加當前提供者的地址
  2. 並向 Channel:/dubbo/com.foo.BarService/providers 發送 register 事件
  3. 服務消費方啓動時,從 Channel:/dubbo/com.foo.BarService/providers 訂閱 register 和 unregister事件
  4. 並向 Key:/dubbo/com.foo.BarService/providers 下,添加當前消費者的地址
  5. 服務消費方收到 register 和 unregister 事件後,從 Key:/dubbo/com.foo.BarService/providers 下獲取提供者地址列表
  6. 服務監控中心啓動時,從 Channel:/dubbo/* 訂閱 register 和 unregister,以及 subscribe 和unsubsribe事件
  7. 服務監控中心收到 register 和 unregister 事件後,從 Key:/dubbo/com.foo.BarService/providers 下獲取提供者地址列表
  8. 服務監控中心收到 subscribe 和 unsubsribe 事件後,從 Key:/dubbo/com.foo.BarService/consumers下獲取消費者地址列表

配置

<dubbo:registry address="redis://10.20.153.10:6379" />

<dubbo:registry address="redis://10.20.153.10:6379?backup=10.20.153.11:6379,10.20.153.12:6379" />

<dubbo:registry protocol="redis" address="10.20.153.10:6379" />

<dubbo:registry protocol="redis" address="10.20.153.10:6379,10.20.153.11:6379,10.20.153.12:6379" />

選項

  • 可通過 <dubbo:registry group="dubbo" /> 設置 redis 中 key 的前綴,缺省爲 dubbo
  • 可通過 <dubbo:registry cluster="replicate" /> 設置 redis 集羣策略,缺省爲 failover
    • failover: 只寫入和讀取任意一臺,失敗時重試另一臺,需要服務器端自行配置數據同步
    • replicate: 在客戶端同時寫入所有服務器,只讀取單臺,服務器端不需要同步,註冊中心集羣增大,性能壓力也會更大

可靠性聲明

阿里內部並沒有採用 Redis 做爲註冊中心,而是使用自己實現的基於數據庫的註冊中心,即:Redis 註冊中心並沒有在阿里內部長時間運行的可靠性保障,此 Redis 橋接實現只爲開源版本提供,其可靠性依賴於 Redis 本身的可靠性。

安裝

安裝方式參見: Redis安裝手冊,只需搭一個原生的 Redis 服務器,並將 Quick Start 中 Provider 和 Consumer 裏的 conf/dubbo.properties 中的 dubbo.registry.addrss 的值改爲 redis://127.0.0.1:6379 即可使用。

Multicast 註冊中心

Multicast 註冊中心不需要啓動任何中心節點,只要廣播地址一樣,就可以互相發現。

multicast,廣播受到網絡結構的影響,一般本地不想搭註冊中心的話使用這種調用dubbo簡易註冊中心。

/user-guide/images/multicast.jpg

  1. 提供方啓動時廣播自己的地址
  2. 消費方啓動時廣播訂閱請求
  3. 提供方收到訂閱請求時,單播自己的地址給訂閱者,如果設置了 unicast=false,則廣播給訂閱者
  4. 消費方收到提供方地址時,連接該地址進行 RPC 調用。

組播受網絡結構限制,只適合小規模應用或開發階段使用。組播地址段: 224.0.0.0 - 239.255.255.255

配置

<dubbo:registry address="multicast://224.5.6.7:1234" />

<dubbo:registry protocol="multicast" address="224.5.6.7:1234" />

爲了減少廣播量,Dubbo 缺省使用單播發送提供者地址信息給消費者,如果一個機器上同時啓了多個消費者進程,消費者需聲明 unicast=false,否則只會有一個消費者能收到消息:

<dubbo:registry address="multicast://224.5.6.7:1234?unicast=false" />

<dubbo:registry protocol="multicast" address="224.5.6.7:1234">
    <dubbo:parameter key="unicast" value="false" />
</dubbo:registry>

                                        

                                                                    JAVA程序猿成長之路

                                                  分享學習資源,學習方法,記錄程序員生活。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章