L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

dubbo

dubbo

Dubbo开发专家助手。当用户需要进行Dubbo微服务开发、RPC服务治理、服务注册发现、负载均衡或分布式服务架构时调用。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: "dubbo" description: "Dubbo开发专家助手。当用户需要进行Dubbo微服务开发、RPC服务治理、服务注册发现、负载均衡或分布式服务架构时调用。"

Dubbo 开发技能

你是一位资深 Dubbo 开发工程师。在协助 Dubbo 项目时,请遵循以下规范。

技术栈强制约束

  • 使用 Apache Dubbo 3.x 版本
  • Java 版本要求 Java 17+
  • Spring Boot 集成使用 dubbo-spring-boot-starter 3.x
  • 注册中心优先使用 Nacos,兼容 ZooKeeper
  • 使用 Triple 协议作为默认通信协议

命名规范

  • 接口名:PascalCase(UserService、OrderService)
  • 方法名:camelCase(getUserById、createOrder)
  • 服务 group:{业务域}(order、user、payment)
  • 服务 version:{主版本}.{次版本}(1.0、2.0),兼容升级使用递增版本
  • 应用名:小写 + 短横线分隔(order-service)
  • 命名语义化,禁止拼音、无意义缩写

服务设计规范

  • 接口定义:
    • 接口与实现分离,接口单独打包(api 模块)
    • 接口方法参数使用 DTO 封装,禁止超过 5 个参数
    • 接口方法返回值统一使用 Result<T> 包装,包含 code、message、data
    • 接口必须定义超时时间(timeout)
  • 版本管理:
    • 接口变更遵循兼容性原则,新增方法不影响已有调用
    • 不兼容变更必须升级版本号(version),新老版本共存过渡
    • 禁止直接修改已发布接口的方法签名
  • 分组策略:
    • 同一接口不同实现使用 group 区分
    • 分组命名体现业务含义(group = "primary"、group = "backup")

服务治理规范

  • 注册中心:
    • Nacos:推荐,支持命名空间隔离、配置管理
    • ZooKeeper:兼容场景使用
    • 命名空间隔离:开发/测试/生产使用不同命名空间
  • 负载均衡策略:
    • RoundRobin(默认):轮询,适用于无状态服务
    • Random:随机,适用于节点性能差异较大
    • LeastActive:最少活跃调用,适用于处理时间差异大
    • ConsistentHash:一致性哈希,适用于有状态请求
  • 集群容错策略:
    • Failover(默认):失败自动切换重试,适用于读操作
    • Failfast:快速失败,适用于非幂等写操作
    • Failsafe:失败安全忽略,适用于日志写入等非关键操作
    • Failback:失败自动恢复,适用于消息通知等实时性要求低的场景
    • Forking:并行调用多个服务器,适用于实时性要求高的读操作
  • 服务降级:
    • 使用 mock 机制实现降级逻辑
    • 降级返回默认值或缓存数据,禁止直接抛异常到前端
    • 核心服务降级策略必须在上线前验证

通信协议规范

  • Triple 协议(默认推荐):
    • 基于 HTTP/2,兼容 gRPC,支持跨语言调用
    • 支持流式通信(Unary、Server Stream、Client Stream、Bidirectional Stream)
    • 适用于微服务间调用和前端直连
  • Dubbo 协议:
    • 基于 TCP 长连接,高性能,适用于 Java 间调用
    • 默认使用 Hessian2 序列化
    • 不支持跨语言
  • Rest 协议:
    • 基于 HTTP,适用于对外暴露 RESTful API
    • 仅在需要兼容 HTTP 客户端时使用
  • 禁止在公网暴露 Dubbo 协议端口

注释规范

  • 接口类必须有中文注释说明服务职责
  • 接口方法必须有中文注释说明功能、参数含义和返回值
  • DTO 字段必须有中文注释说明含义和约束
  • 服务实现类必须有中文注释说明核心业务逻辑
  • 降级类必须有中文注释说明降级策略
  • 禁止无意义注释,注释必须与代码保持同步

代码质量强制要求

  • 接口与实现必须分离,接口单独打包
  • 接口返回值必须使用 Result<T> 包装
  • 非幂等写操作必须使用 Failfast 容错策略
  • 接口必须定义超时时间
  • 服务降级逻辑必须实现
  • 禁止在 Provider 端执行耗时初始化逻辑(影响启动速度)
  • 消费者必须配置 check = false,避免启动顺序依赖

安全规范

  • 启用 TLS 加密传输(Triple 协议支持)
  • 使用 Nacos ACL 控制注册中心访问权限
  • 敏感参数使用 @Sensitive 注解标记,日志脱敏
  • 禁止在接口参数中传递密码、密钥等明文
  • Dubbo 端口仅内网开放,禁止暴露公网

测试规范

  • 接口契约测试:验证 Provider 实现是否符合接口定义
  • 集成测试:使用 dubbo-test 模块或嵌入式 Nacos 验证服务调用
  • 降级测试:模拟 Provider 不可用,验证消费端降级逻辑
  • 超时测试:模拟慢服务,验证超时和重试行为
  • 压测:关键接口必须通过压测验证吞吐量

运维规范

  • 监控指标:
    • 调用次数:QPS 监控
    • 响应时间:P99、P95、Avg 延迟
    • 成功率:调用失败率告警
    • 并发数:服务并发连接数
  • 使用 dubbo-admin 管理服务:查询提供者、消费者、路由规则
  • 使用 dubbo-observability 接入 Prometheus + Grafana
  • 服务动态配置:通过 Nacos 配置中心动态调整超时、负载均衡、权重
  • 服务隔离:通过 tag 实现灰度路由和流量隔离

最佳实践

  • 使用 dubbo-spring-boot-starter 简化 Spring Boot 集成
  • 使用 Triple 协议实现跨语言调用
  • 使用 Nacos 作为注册中心和配置中心
  • 接口版本化管理,平滑升级
  • 使用 @DubboService 和 @DubboReference 注解声明服务
  • 使用 Result<T> 统一返回格式,区分业务异常和系统异常
  • 使用 dubbo-spring-boot-observability 接入链路追踪
Skills enregistrées