注意的地方
- 默認情況下,cluster=failover、retries=2,意為失敗重試兩次,不包含原生調用。如需配置不重試,需設置retries=-1,或者使用failfast(快速失敗)模式
- 如果Dubbo接口嵌套Dubbo接口,比如A程序調用B接口,B接口實現中調用C接口。如果按默認重試2次,全部調用失敗情況下,最終調用C接口3 * 3 = 9次。我們在Dubbo接口嵌套情況下一般設置為不重試
- 配置覆蓋的規則:(1)方法配置優先級大於接口配置;(2)消費端配置優先級大於提供端配置。規則思路在於,提供端更了解服務的性能,理應由服務端配置的,但仍提供消費端覆蓋配置。官方文檔描述見此。
Dubbo協議
Dubbo協議是推薦使用的協議,因其單一長連接和NIO異步通訊的特性適用於小數據量大並發的調用。
如果你們消費者數量遠大於提供數數量(誰不是呢?哈哈),而又是小數據量的調用居多,就用此協議吧。
官方文檔描述見此。
常見的默認配置
- dubbo.service.timeout,默認超時時間為1000毫秒
- dubbo.service.cluster,默認為failover,失敗重試
- dubbo.service.retries,默認為2,不含原生調用
- dubbo.service.loadbalance,默認為random,隨機
- dubbo.service.proxy,默認生成動態代理方式為javasisit
- dubbo.protocol.name,默認為dubbo
- dubbo.protocol.payload,默認為88388608(8M),默認請求或響應數據包的大小為8M
- dubbo.protocol.codec,默認協議編碼方式為dubbo
- dubbo.protocol.serialization,dubbo協議默認為hessian2,rmi默認為java,http默認為json