题目
Dubbo 服务提供者与消费者的基本配置
信息
- 类型:问答
- 难度:⭐
考点
Dubbo服务定义,服务暴露,服务引用,配置方式
快速回答
Dubbo 服务提供者和消费者的基础配置要点:
- 服务提供者:通过
@DubboService注解暴露服务 - 服务消费者:通过
@DubboReference注解引用服务 - 配置方式:推荐使用注解配置,也可用 XML 配置
- 核心配置项:服务接口、版本号、超时时间等
1. 原理说明
Dubbo 采用生产者-消费者模型:
• 服务提供者(Provider)暴露服务接口实现
• 服务消费者(Consumer)通过代理调用远程服务
• 注册中心(如 Zookeeper)协调服务发现
2. 代码示例
服务接口定义
public interface UserService {
String getUserName(Long userId);
}服务提供者配置
@DubboService(version = "1.0.0", timeout = 3000)
public class UserServiceImpl implements UserService {
@Override
public String getUserName(Long userId) {
return "User_" + userId;
}
}服务消费者配置
@RestController
public class UserController {
@DubboReference(version = "1.0.0", timeout = 3000)
private UserService userService;
@GetMapping("/user/{id}")
public String getUser(@PathVariable Long id) {
return userService.getUserName(id);
}
}3. 最佳实践
- 版本管理:每次接口变更升级版本号,实现灰度发布
- 超时设置:根据业务需求设置合理超时(默认 1000ms)
- 配置分离:将公共配置(注册中心地址)放在 dubbo.properties 中
- 接口设计:服务接口单独打包成 API 模块供双方依赖
4. 常见错误
- 版本不匹配:消费者版本号与提供者不一致导致调用失败
- 超时过短:复杂业务未调整 timeout 引发 TimeoutException
- 注册中心未启动:服务无法注册/发现时检查 Zookeeper/Nacos 状态
- 依赖缺失:未添加 dubbo-spring-boot-starter 依赖
5. 扩展知识
- XML 配置方式:传统项目常用 XML 配置服务
<!-- 服务提供者 --> <dubbo:service interface="com.example.UserService" ref="userService" version="1.0.0"/> <!-- 服务消费者 --> <dubbo:reference id="userService" interface="com.example.UserService" version="1.0.0"/> - 注册中心选择:Zookeeper(推荐)、Nacos、Redis 等
- 配置优先级:方法级 > 接口级 > 全局配置