# Dubbo 常用技巧
# dubbo调试
# 1.点对点直连
<!-- dubbo:reference -->
<dubbo:reference id="userService" interface="com.kitty.UserService" url="dubbo://127.0.0.1:21000" check="false"/>
1
2
2
# 2.invoke方式
telnet localhost 20880
dubbo> ls
com.test.DemoService
dubbo> ls com.test.DemoService
queryDemoPageList
insertDemolist
dubbo>invoke com.test.DemoService.queryDemoPageList({"id":"100"}, 1, 2)
{"totalCount":1,"data":[{date":"2011-03-23 14:10:32","name":"张三","keyword":null}]}
elapsed: 10 ms.
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 修改线程池
<!-- dubbo:protocol -->
<dubbo:protocol name="dubbo" port="8888" threads="500" dispatcher="message"/>
1
2
2
# dubbo超时设置
# 服务端配置
<!--服务配置-->
<dubbo:provider timeout="60000" retries="0"/>
<!-- 接口配置 -->
<dubbo:service interface="com.cosfuture.eiduo.tk.common.service.CommonService" ref="commonService" timeout="1000"/>
<!-- 方法配置 -->
<dubbo:service interface="com.cosfuture.eiduo.tk.paper.service.PaperService" ref="paperService">
<dubbo:method name="batchSave" timeout="100000"/>
</dubbo:service>
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 客户端配置
同服务端
<!-- dubbo:consumer -->
<dubbo:consumer timeout="300000" retries="0" check="false"/>
1
2
2
# 不同粒度配置的覆盖关系
以 timeout 为例,下图显示了配置的查找顺序,其它 retries, loadbalance, actives 等类似:
- 方法级优先,接口级次之,全局配置再次之。
- 如果级别一样,则消费方优先,提供方次之。
其中,服务提供方配置,通过 URL 经由注册中心传递给消费方。

# 最佳实践:
建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置。
SPI →