dubbo学习笔记--dubbo用法

1. 配置

1.1 本地服务 Spring 配置

local.xml:

<bean id=“xxxService” class=“com.xxx.XxxServiceImpl” />
<bean id=“xxxAction” class=“com.xxx.XxxAction”>
    <property name=“xxxService” ref=“xxxService” />
</bean>

1.2. 远程服务 Spring 配置

在本地服务的基础上,只需做简单配置,即可完成远程化:

  • 将上面的 local.xml 配置拆分成两份,将服务定义部分放在服务提供方 remote-provider.xml,将服务引用部分放在服务消费方 remote-consumer.xml
  • 并在提供方增加暴露服务配置 <dubbo:service>,在消费方增加引用服务配置 <dubbo:reference>

remote-provider.xml:

<!-- 和本地服务一样实现远程服务 -->
<bean id=“xxxService” class=“com.xxx.XxxServiceImpl” /> 
<!-- 增加暴露远程服务配置 -->
<dubbo:service interface=“com.xxx.XxxService” ref=“xxxService” /> 

remote-consumer.xml:

<!-- 增加引用远程服务配置 -->
<dubbo:reference id=“xxxService” interface=“com.xxx.XxxService” />
<!-- 和本地服务一样使用远程服务 -->
<bean id=“xxxAction” class=“com.xxx.XxxAction”> 
    <property name=“xxxService” ref=“xxxService” />
</bean>

2. 官方推荐用法 

2.1. 在 Provider 端尽量多配置 Consumer 端属性

原因如下:

  • 作服务的提供方,比服务消费方更清楚服务的性能参数,如调用的超时时间、合理的重试次数等
  • 在 Provider 端配置后,Consumer 端不配置则会使用 Provider 端的配置,即 Provider 端的配置可以作为 Consumer 的缺省值 [1]。否则,Consumer 会使用 Consumer 端的全局设置,这对于 Provider 是不可控的,并且往往是不合理的

Provider 端尽量多配置 Consumer 端的属性,让 Provider 的实现者一开始就思考 Provider 端的服务特点和服务质量等问题。

示例:

<dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService"
    timeout="300" retry="2" loadbalance="random" actives="0" />
 
<dubbo:service interface="com.alibaba.hello.api.WorldService" version="1.0.0" ref="helloService"
    timeout="300" retry="2" loadbalance="random" actives="0" >
    <dubbo:method name="findAllPerson" timeout="10000" retries="9" loadbalance="leastactive" actives="5" />
<dubbo:service/>

建议在 Provider 端配置的 Consumer 端属性有:

  1. timeout:方法调用的超时时间
  2. retries:失败重试次数,缺省是 2 [2]
  3. loadbalance:负载均衡算法 [3],缺省是随机 random。还可以配置轮询 roundrobin、最不活跃优先 [4] leastactive 和一致性哈希 consistenthash 等
  4. actives:消费者端的最大并发调用限制,即当 Consumer 对一个服务的并发调用到上限后,新调用会阻塞直到超时,在方法上配置 dubbo:method 则针对该方法进行并发限制,在接口上配置 dubbo:service,则针对该服务进行并发限制

2.2 在 Provider 端配置合理的 Provider 端属性

<dubbo:protocol threads="200" /> 
<dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService"
    executes="200" >
    <dubbo:method name="findAllPerson" executes="50" />
</dubbo:service>

建议在 Provider 端配置的 Provider 端属性有:

  1. threads:服务线程池大小
  2. executes:一个服务提供者并行执行请求上限,即当 Provider 对一个服务的并发调用达到上限后,新调用会阻塞,此时 Consumer 可能会超时。在方法上配置 dubbo:method 则针对该方法进行并发限制,在接口上配置 dubbo:service,则针对该服务进行并发限制

注:消费者启动时,没有提供者是否抛异常

<dubbo:reference interface="com.alibaba.xxx.XxxService" check="false" />

3. 服务治理

从 2.0.5 版本开始,dubbo 开始支持通过 telnet 命令来进行服务治理。

使用

telnet localhost 20880

或者:

echo status | nc -i 1 localhost 20880

ls

  1. ls: 显示服务列表
  2. ls -l: 显示服务详细信息列表
  3. ls XxxService: 显示服务的方法列表
  4. ls -l XxxService: 显示服务的方法详细信息列表

ps

  1. ps: 显示服务端口列表
  2. ps -l: 显示服务地址列表
  3. ps 20880: 显示端口上的连接信息
  4. ps -l 20880: 显示端口上的连接详细信息

cd

  1. cd XxxService: 改变缺省服务,当设置了缺省服务,凡是需要输入服务名作为参数的命令,都可以省略服务参数
  2. cd /: 取消缺省服务

pwd

pwd: 显示当前缺省服务

trace

  1. trace XxxService: 跟踪 1 次服务任意方法的调用情况
  2. trace XxxService 10: 跟踪 10 次服务任意方法的调用情况
  3. trace XxxService xxxMethod: 跟踪 1 次服务方法的调用情况
  4. trace XxxService xxxMethod 10: 跟踪 10 次服务方法的调用情况

count

  1. count XxxService: 统计 1 次服务任意方法的调用情况
  2. count XxxService 10: 统计 10 次服务任意方法的调用情况
  3. count XxxService xxxMethod: 统计 1 次服务方法的调用情况
  4. count XxxService xxxMethod 10: 统计 10 次服务方法的调用情况

invoke

  1. invoke XxxService.xxxMethod({"prop": "value"}): 调用服务的方法
  2. invoke xxxMethod({"prop": "value"}): 调用服务的方法(自动查找包含此方法的服务)

select 

  1. select 1: 当 invoke 命令匹配到多个方法时使用,根据提示列表选择需要调用的方法

status

  1. status: 显示汇总状态,该状态将汇总所有资源的状态,当全部 OK 时则显示 OK,只要有一个 ERROR 则显示 ERROR,只要有一个 WARN 则显示 WARN
  2. status -l: 显示状态列表

log 

  1. log debug: 修改 dubbo logger 的日志级别
  2. log 100: 查看 file logger 的最后 100 字符的日志

help

  1. help: 显示 telnet 命帮助信息
  2. help xxx: 显示xxx命令的详细帮助信息

clear

  1. clear: 清除屏幕上的内容
  2. clear 100: 清除屏幕上的指定行数的内容

exit

exit: 退出当前 telnet 命令行

shutdown 

  1. shutdown: 关闭 dubbo 应用
  2. shutdown -t 1000: 延迟 1000 毫秒关闭 dubbo 应用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值