侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1823 篇文章
  • 累计收到 0 条评论

Dubbo 服务提供者与消费者的基本配置

2025-12-12 / 0 评论 / 4 阅读

题目

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 等
  • 配置优先级:方法级 > 接口级 > 全局配置