所有配置項分為三大類:
- 服務發現:表示該配置項用於服務的注冊與發現,目的是讓消費方找到提供方。
- 服務治理:表示該配置項用於治理服務間的關系,或為開發測試提供便利條件。
- 性能調優:表示該配置項用於調優性能,不同的選項對性能會產生影響。
所有配置最終都將轉換為 URL表示,並由服務提供方生成,經注冊中心傳遞給消費方,各屬性對應 URL 的參數。
- XML Schema: http://dubbo.apache.org/schema/dubbo/dubbo.xsd
- 注意:只有 group,interface,version 是服務的匹配條件,三者決定是不是同一個服務,其它配置項均為調優和治理參數。
- URL 格式:protocol://username:password@host:port/path?key=value&key=value
xml schema示例:
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
</beans>
dubbo:application
應用信息配置。對應的配置類:org.apache.dubbo.config.ApplicationConfig
常用的配置:
1)name
當前應用名稱,用於注冊中心計算應用間依賴關系。你當前項目叫什么名字就填什么。
dubbo:service
服務提供者暴露服務配置。對應的配置類:org.apache.dubbo.config.ServiceConfig。
示例:
<bean id="demoService" class="org.apache.dubbo.samples.basic.impl.DemoServiceImpl"/>
<dubbo:service interface="org.apache.dubbo.samples.basic.api.DemoService" ref="demoService"/>
常用的配置:
1)interface
必填。作用是服務發現。
服務接口名。
2)ref
必填。作用是服務發現。
服務對象實現引用。
3)group
可選。作用是服務發現。
服務分組,當一個接口有多個實現,可以用分組區分。
4)delay
可選。作用是性能調優。
延遲注冊服務時間(毫秒) ,設為-1時,表示延遲到Spring容器初始化完成時暴露服務。默認是0。
5)timeout
可選。作用是性能調優。
遠程服務調用超時時間(毫秒)。默認是1000。
6)retries
可選。作用是性能調優。
遠程服務調用重試次數,不包括第一次調用,不需要重試請設為0。默認是2。
7)connections
可選。作用是性能調優。
對每個提供者的最大連接數,rmi、http、hessian等短連接協議表示限制連接數,dubbo等長連接協表示建立的長連接個數。默認是100。
8)loadbalance
可選。作用是性能調優。
負載均衡策略,可選值:random,roundrobin,leastactive,分別表示:隨機,輪詢,最少活躍調用。默認是random。
9)registry
可選。作用是配置關聯。
向指定注冊中心注冊,在多個注冊中心時使用,值為<dubbo:registry>的id屬性,多個注冊中心ID用逗號分隔,如果不想將該服務注冊到任何registry,可將值設為N/A。默認是向所有registry注冊。
10)provider
可選。作用是配置關聯。
指定provider,值為<dubbo:provider>的id屬性。默認是第一個provider配置。
11)accesslog
可選。作用是服務治理。
設為true,將向logger中輸出訪問日志,也可填寫訪問日志文件路徑,直接把訪問日志輸出到指定文件。默認值是false。
12)weight
可選。作用是性能調優。
服務權重
13)executes
可選。作用是性能調優。
服務提供者每服務每方法最大可並行執行請求數。
14)cluster
可選。作用是性能調優。
集群方式,可選:failover/failfast/failsafe/failback/forking。默認是failover。
15)filter
可選。作用是性能調優。
服務提供方遠程調用過程攔截器名稱,多個名稱用逗號分隔。
16)listener
可選。作用是性能調優。
服務提供方導出服務監聽器名稱,多個名稱用逗號分隔。
17)protocol
可選。作用是配置關聯。
使用指定的協議暴露服務,在多協議時使用,值為<dubbo:protocol>的id屬性,多個協議ID用逗號分隔。
18)register
可選。作用是服務治理。
該協議的服務是否注冊到注冊中心。默認是true。
dubbo:reference
服務消費者引用服務配置。對應的配置類: org.apache.dubbo.config.ReferenceConfig。
示例:
<!--配置代理-->
<dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.samples.basic.api.DemoService"/>
常用的配置:
1)id
必填。
服務引用BeanId(類似Spring中的beanId)。
2)interface
必填。作用是服務發現。
服務接口名。
3)group
可選。作用是服務發現。
服務分組,當一個接口有多個實現,可以用分組區分,必需和服務提供方一致。
4)timeout
可選。作用是性能調優。
服務方法調用超時時間(毫秒)。默認是<dubbo:consumer>的timeout。
5)retries
可選。作用是性能調優。
遠程服務調用重試次數,不包括第一次調用,不需要重試請設為0。默認是<dubbo:consumer>的retries。
6)connections
可選。作用是性能調優。
對每個提供者的最大連接數,rmi、http、hessian等短連接協議表示限制連接數,dubbo等長連接協表示建立的長連接個數。默認是<dubbo:consumer>的connections。
7)loadbalance
可選。作用是性能調優。
負載均衡策略,可選值:random,roundrobin,leastactive,分別表示:隨機,輪詢,最少活躍調用。默認是<dubbo:consumer>的loadbalance。
8)check
可選。作用是服務治理。
啟動時檢查提供者是否存在,true報錯,false忽略。默認是<dubbo:consumer>的check。
9)cache
可選。作用是服務治理。
以調用參數為key,緩存返回結果,可選:lru, threadlocal, jcache等。
10)validation
可選。作用是服務治理。
是否啟用JSR303標准注解驗證,如果啟用,將對方法參數上的注解進行校驗。
11)actives
可選。作用是性能調優。
每服務消費者每服務每方法最大並發調用數。默認是0。
12)cluster
可選。作用是性能調優。
集群方式,可選:failover/failfast/failsafe/failback/forking。默認是failover。
13)filter
可選。作用是性能調優。
服務提供方遠程調用過程攔截器名稱,多個名稱用逗號分隔。
14)listener
可選。作用是性能調優。
服務提供方導出服務監聽器名稱,多個名稱用逗號分隔。
dubbo:protocol
服務提供者協議配置。對應的配置類: org.apache.dubbo.config.ProtocolConfig。同時,如果需要支持多協議,可以聲明多個 <dubbo:protocol> 標簽,並在 <dubbo:service> 中通過 protocol 屬性指定使用的協議。
常用的配置:
1)name
必填。
協議名稱。默認是dubbo。
2)port
服務端口。
dubbo協議缺省端口為20880,rmi協議缺省端口為1099,http和hessian協議缺省端口為80;如果沒有配置port,則自動采用默認端口,如果配置為-1,則會分配一個沒有被占用的端口。Dubbo 2.4.0+,分配的端口在協議缺省端口的基礎上增長,確保端口段可控。
3)threadpool
可選。作用是性能調優。
線程池類型,可選:fixed/cached。默認是fixed。
4)threads
可選。作用是性能調優。
服務線程池大小(固定大小)。默認是200。
5)iothreads
可選。作用是性能調優。
io線程池大小(固定大小)。默認是cpu個數+1。
6)accepts
可選。作用是性能調優。
服務提供方最大可接受連接數。默認是0。
7)payload
可選。作用是性能調優。
請求及響應數據包大小限制,單位:字節。默認是8388608(=8M)。
8)serialization
可選。作用是性能調優。
協議序列化方式,當協議支持多種序列化方式時使用,比如:dubbo協議的dubbo,hessian2,java,compactedjava,以及http協議的json等。
dubbo協議缺省為hessian2,rmi協議缺省為java,http協議缺省為json。
9)buffer
可選。作用是性能調優。
網絡讀寫緩沖區大小。默認是8192。
dubbo:method
方法級配置。對應的配置類: org.apache.dubbo.config.MethodConfig。同時該標簽為 <dubbo:service> 或 <dubbo:reference> 的子標簽,用於控制到方法級。
常用的配置:
1)name
必填。方法名。
2)timeout
可選。作用是性能調優。
方法調用超時時間(毫秒)。
3)retries
可選。作用是性能調優。
遠程服務調用重試次數,不包括第一次調用,不需要重試請設為0。默認是<dubbo:reference>的retries。
4)loadbalance
可選。作用是性能調優。
負載均衡策略,可選值:random,roundrobin,leastactive,分別表示:隨機,輪詢,最少活躍調用。
5)actives
可選。作用是性能調優。
每服務消費者最大並發調用限制。默認是0。
6)cache
可選。作用是服務治理。
以調用參數為key,緩存返回結果,可選:lru, threadlocal, jcache等。
7)validation
可選。作用是服務治理。
是否啟用JSR303標准注解驗證,如果啟用,將對方法參數上的注解進行校驗。
dubbo:argument
方法參數配置。對應的配置類: org.apache.dubbo.config.ArgumentConfig。該標簽為 <dubbo:method> 的子標簽,用於方法參數的特征描述。
示例:
<dubbo:method name="findXxx" timeout="3000" retries="2">
<dubbo:argument index="0" callback="true" />
</dubbo:method>
常用的配置:
1)index
必填。
參數索引。0、1......
2)callback
可選。
參數是否為callback接口,如果為callback,服務提供方將生成反向代理,可以從服務提供方反向調用消費方,通常用於事件推送。
dubbo:config-center
配置中心。對應的配置類:org.apache.dubbo.config.ConfigCenterConfig。
Zookeeper配置中心示例:
<dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
或
dubbo.config-center.address=zookeeper://127.0.0.1:2181
或
ConfigCenterConfig configCenter = new ConfigCenterConfig();
configCenter.setAddress("zookeeper://127.0.0.1:2181");
更多的外部化配置:https://dubbo.apache.org/zh/docs/references/configuration/external-config/
常用的配置:
1)address
必填。
配置中心地址。
2)protocol
可選。
使用哪個配置中心:apollo、zookeeper、nacos等。
以zookeeper為例:
- 指定protocol,則address可以簡化為127.0.0.1:2181;
- 不指定protocol,則address取值為zookeeper://127.0.0.1:2181
3)check
可選。
當配置中心連接失敗時,是否終止應用啟動。默認true。
4)config-file
可選。
全局級配置文件所映射到的key
zookeeper - 默認路徑/dubbo/config/dubbo/dubbo.properties
apollo - dubbo namespace中的dubbo.properties鍵
5)timeout
可選。
獲取配置的超時時間。默認是3000ms。
6)include-spring-env
使用Spring框架時支持,為true時,會自動從Spring Environment中讀取配置。
默認依次讀取:
- key為dubbo.properties的配置
- key為dubbo.properties的PropertySource
7)cluster
可選。
含義視所選定的配置中心而不同。
如Apollo中用來區分不同的配置集群
8)group
可選。
含義視所選定的配置中心而不同。
nacos - 隔離不同配置集
zookeeper - 隔離不同配置集
9)namespace
通常用於多租戶隔離,實際含義視具體配置中心而不同。
如:
- zookeeper - 環境隔離,默認值dubbo;
- apollo - 區分不同領域的配置集合,默認使用dubbo和application
dubbo:registry
注冊中心配置。對應的配置類: org.apache.dubbo.config.RegistryConfig。同時如果有多個不同的注冊中心,可以聲明多個 <dubbo:registry> 標簽,並在 <dubbo:service> 或 <dubbo:reference> 的 registry 屬性指定使用的注冊中心。
更多的說明:https://dubbo.apache.org/zh/docs/references/registry/
常用的配置:
1)address
必填。作用是服務發現。
注冊中心服務器地址,如果地址沒有端口缺省為9090,同一集群內的多個地址用逗號分隔,如:ip:port,ip:port,不同集群的注冊中心,請配置多個<dubbo:registry>標簽。
2)id
可選。作用是配置關聯。
注冊中心引用BeanId,可以在<dubbo:service registry="">或<dubbo:reference registry="">中引用此ID
3)protocol
可選。作用是服務發現。
注冊中心地址協議,支持dubbo, multicast, zookeeper, redis, consul(2.7.1), sofa(2.7.2), etcd(2.7.2), nacos(2.7.2)等協議。默認是dubbo。
4)port
可選。作用是服務發現。
注冊中心缺省端口,當address沒有帶端口時使用此端口做為缺省值。默認是9090。
5)username
可選。作用是服務治理。
登錄注冊中心用戶名,如果注冊中心不需要驗證可不填。
6)password
可選。作用是服務治理。
登錄注冊中心密碼,如果注冊中心不需要驗證可不填。
7)timeout
可選。作用是性能調優。
注冊中心請求超時時間(毫秒)。默認是5000。
8)session
可選。作用是性能調優。
注冊中心會話超時時間(毫秒),用於檢測提供者非正常斷線后的臟數據,比如用心跳檢測的實現,此時間就是心跳間隔,不同注冊中心實現不一樣。默認是60000。
9)wait
可選。作用是性能調優。
停止時等待通知完成時間(毫秒)。默認是0。
10)check
可選。作用是服務治理。
注冊中心不存在時,是否報錯。默認是true。
11)group
可選。作用是服務治理。
服務注冊分組,跨組的服務不會相互影響,也無法相互調用,適用於環境隔離。默認是dubbo。
dubbo:provider
服務提供者缺省值配置。對應的配置類: org.apache.dubbo.config.ProviderConfig。同時該標簽為 <dubbo:service> 和 <dubbo:protocol> 標簽的缺省值設置。
常用的配置:https://dubbo.apache.org/zh/docs/references/xml/dubbo-provider/
dubbo:consumer
服務消費者缺省值配置。配置類: org.apache.dubbo.config.ConsumerConfig 。同時該標簽為 <dubbo:reference> 標簽的缺省值設置。
常用的配置:https://dubbo.apache.org/zh/docs/references/xml/dubbo-consumer/
dubbo:module
模塊信息配置。對應的配置類 org.apache.dubbo.config.ModuleConfig
常用的配置:https://dubbo.apache.org/zh/docs/references/xml/dubbo-module/
dubbo:monitor
監控中心配置。對應的配置類: org.apache.dubbo.config.MonitorConfig
常用的配置:https://dubbo.apache.org/zh/docs/references/xml/dubbo-monitor/
dubbo:parameter
選項參數配置。對應的配置類:java.util.Map。同時該標簽為<dubbo:protocol>或<dubbo:service>或<dubbo:provider>或<dubbo:reference>或<dubbo:consumer>的子標簽,用於配置自定義參數,該配置項將作為擴展點設置自定義參數使用。
常用配置:https://dubbo.apache.org/zh/docs/references/xml/dubbo-parameter/