# 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.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

# 修改线程池

<!-- dubbo:protocol -->
<dubbo:protocol name="dubbo" port="8888" threads="500" dispatcher="message"/>
1
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

# 客户端配置

同服务端

<!-- dubbo:consumer -->
<dubbo:consumer timeout="300000" retries="0" check="false"/>
1
2

# 不同粒度配置的覆盖关系

以 timeout 为例,下图显示了配置的查找顺序,其它 retries, loadbalance, actives 等类似:

  • 方法级优先,接口级次之,全局配置再次之。
  • 如果级别一样,则消费方优先,提供方次之。

其中,服务提供方配置,通过 URL 经由注册中心传递给消费方。

dubbo-config-override

# 最佳实践:

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

更新时间: 2021-07-22 15:50:00