欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

dubbo学习笔记--dubbo用法

程序员文章站 2022-03-22 09:11:38
...

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 应用
相关标签: dubbo用法