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 端属性有:
-
timeout
:方法调用的超时时间 -
retries
:失败重试次数,缺省是 2 [2] -
loadbalance
:负载均衡算法 [3],缺省是随机random
。还可以配置轮询roundrobin
、最不活跃优先 [4]leastactive
和一致性哈希consistenthash
等 -
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 端属性有:
-
threads
:服务线程池大小 -
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
-
ls
: 显示服务列表 -
ls -l
: 显示服务详细信息列表 -
ls XxxService
: 显示服务的方法列表 -
ls -l XxxService
: 显示服务的方法详细信息列表
ps
-
ps
: 显示服务端口列表 -
ps -l
: 显示服务地址列表 -
ps 20880
: 显示端口上的连接信息 -
ps -l 20880
: 显示端口上的连接详细信息
cd
-
cd XxxService
: 改变缺省服务,当设置了缺省服务,凡是需要输入服务名作为参数的命令,都可以省略服务参数 -
cd /
: 取消缺省服务
pwd
pwd
: 显示当前缺省服务
trace
-
trace XxxService
: 跟踪 1 次服务任意方法的调用情况 -
trace XxxService 10
: 跟踪 10 次服务任意方法的调用情况 -
trace XxxService xxxMethod
: 跟踪 1 次服务方法的调用情况 -
trace XxxService xxxMethod 10
: 跟踪 10 次服务方法的调用情况
count
-
count XxxService
: 统计 1 次服务任意方法的调用情况 -
count XxxService 10
: 统计 10 次服务任意方法的调用情况 -
count XxxService xxxMethod
: 统计 1 次服务方法的调用情况 -
count XxxService xxxMethod 10
: 统计 10 次服务方法的调用情况
invoke
-
invoke XxxService.xxxMethod({"prop": "value"})
: 调用服务的方法 -
invoke xxxMethod({"prop": "value"})
: 调用服务的方法(自动查找包含此方法的服务)
select
-
select 1
: 当 invoke 命令匹配到多个方法时使用,根据提示列表选择需要调用的方法
status
-
status
: 显示汇总状态,该状态将汇总所有资源的状态,当全部 OK 时则显示 OK,只要有一个 ERROR 则显示 ERROR,只要有一个 WARN 则显示 WARN -
status -l
: 显示状态列表
log
-
log debug
: 修改 dubbo logger 的日志级别 -
log 100
: 查看 file logger 的最后 100 字符的日志
help
-
help
: 显示 telnet 命帮助信息 -
help xxx
: 显示xxx命令的详细帮助信息
clear
-
clear
: 清除屏幕上的内容 -
clear 100
: 清除屏幕上的指定行数的内容
exit
exit
: 退出当前 telnet 命令行
shutdown
-
shutdown
: 关闭 dubbo 应用 -
shutdown -t 1000
: 延迟 1000 毫秒关闭 dubbo 应用
上一篇: gdal用法总结