Dubbo 的配置

空~2022年10月9日
  • Dubbo
大约 2 分钟

Dubbo 的配置

关闭检查

dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check=true。通过 check="false"关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。

关闭某个服务的启动时检查:

<dubbo:reference interface="com.foo.BarService" check="false" />

关闭注册中心启动时检查:

<dubbo:registry check="false" />

默认启动服务时检查注册中心存在并已运行。注册中心不启动会报错。

重试次数

消费者访问提供者,如果访问失败,则切换重试访问其它服务器,但重试会带来更长延迟。访问时间变长,用户的体验较差。多次重新访问服务器有可能访问成功。

可通过 retries="2" 来设置重试次数(不含第一次)。

<dubbo:service retries="2" />

<dubbo:reference retries="2" />

超时时间

由于网络或服务端不可靠,会导致调用出现一种不确定的中间状态(超时)。为了避免超时导致客户端资源(线程)挂起耗尽,必须设置超时时间。

timeout:调用远程服务超时时间(毫秒).

dubbo 消费端

<dubbo:reference interface="com.foo.BarService" timeout="2000" />

dubbo 服务端

<dubbo:server interface="com.foo.BarService" timeout="2000" />

版本号

每个接口都应定义版本号,为后续不兼容升级提供可能。当一个接口有不同的实现,项目早期使用的一个实现类,之后创建接口的新的实现类。区分不同的接口实现使用 version。

复制服务提供者接口实现类:

public class UserServiceImpl implements UserService {
    private UserMapper userMapper = new UserMapper();

    @Override
    public User queryUserById(Integer id) {
        System.out.println("UserService");
        return userMapper.queryUser(id);
    }
}
public class UserServiceImpl2 implements UserService {
    private UserMapper userMapper = new UserMapper();

    @Override
    public User queryUserById(Integer id) {
        System.out.println("UserService2");
        return userMapper.queryUser(id);
    }
}

修改配置

image-20221009201030135

修改服务消费者配置

image-20221009201423615

在使用时可随意切换

image-20221009201518648