配置介紹
配置之間的關系
標簽 | 用途 | 解釋 |
---|---|---|
<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 經由注冊中心傳遞給消費方。
建議由服務提供方設置超時,因為一個方法需要執行多長時間,服務提供方更清楚,如果一個消費方同時引用多個服務,就不需要關心每個服務的超時設置。
理論上 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>
的子標簽,用於方法參數的特征描述,比如:
屬性 | 對應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以上版本 |
比如:
也可以:
協議支持
更多的見http://dubbo.apache.org/zh-cn/docs/user/references/protocol/redis.html
redis://
注冊 redis 服務的地址
在客戶端引用
在客戶端使用 [3]:
或者,點對點直連:
也可以使用自定義接口:
方法名建議和 redis 的標准方法名相同,即:get(key), set(key, value), delet(key)。
如果方法名和 redis 的標准方法名不相同,則需要配置映射關系 [4]:
-
Redis 是一個高效的 KV 存儲服務器
-
2.3.0
以上版本支持 -
不需要感知 Redis 的地址
-
其中 "p:xxx" 為 spring 的標准 p 標簽
注冊中心參考手冊
更多的見
http://dubbo.apache.org/zh-cn/docs/user/references/registry/redis.html
Redis 注冊中心
使用 Redis 的 Key/Map 結構存儲數據結構:
- 主 Key 為服務名和類型
- Map 中的 Key 為 URL 地址
- Map 中的 Value 為過期時間,用於判斷臟數據,臟數據由監控中心刪除 [3]
使用 Redis 的 Publish/Subscribe 事件通知數據變更:
- 通過事件的值區分事件類型:
register
,unregister
,subscribe
,unsubscribe
- 普通消費者直接訂閱指定服務提供者的 Key,只會收到指定服務的
register
,unregister
事件 - 監控中心通過
psubscribe
功能訂閱/dubbo/*
,會收到所有服務的所有變更事件
調用過程:
- 服務提供方啟動時,向
Key:/dubbo/com.foo.BarService/providers
下,添加當前提供者的地址 - 並向
Channel:/dubbo/com.foo.BarService/providers
發送register
事件 - 服務消費方啟動時,從
Channel:/dubbo/com.foo.BarService/providers
訂閱register
和unregister
事件 - 並向
Key:/dubbo/com.foo.BarService/providers
下,添加當前消費者的地址 - 服務消費方收到
register
和unregister
事件后,從Key:/dubbo/com.foo.BarService/providers
下獲取提供者地址列表 - 服務監控中心啟動時,從
Channel:/dubbo/*
訂閱register
和unregister
,以及subscribe
和unsubsribe
事件 - 服務監控中心收到
register
和unregister
事件后,從Key:/dubbo/com.foo.BarService/providers
下獲取提供者地址列表 - 服務監控中心收到
subscribe
和unsubsribe
事件后,從Key:/dubbo/com.foo.BarService/consumers
下獲取消費者地址列表
配置
或
或
或
選項
- 可通過
<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簡易注冊中心。
- 提供方啟動時廣播自己的地址
- 消費方啟動時廣播訂閱請求
- 提供方收到訂閱請求時,單播自己的地址給訂閱者,如果設置了
unicast=false
,則廣播給訂閱者 - 消費方收到提供方地址時,連接該地址進行 RPC 調用。
組播受網絡結構限制,只適合小規模應用或開發階段使用。組播地址段: 224.0.0.0 - 239.255.255.255
配置
或
為了減少廣播量,Dubbo 缺省使用單播發送提供者地址信息給消費者,如果一個機器上同時啟了多個消費者進程,消費者需聲明 unicast=false
,否則只會有一個消費者能收到消息:
或
微信公眾號