Skip to content

服务设计流程标准

文档编号: SYS-STD-ARCH-SVC-001
版本: 1.0
创建日期: 2026-03-08
作者: 架构师
状态: ✅ 已完成


1. 流程概述

1.1 目的

本文档定义System平台服务设计的标准化流程,包括服务划分设计和服务交互设计,确保服务设计的一致性、合理性和可维护性。

1.2 适用范围

  • 服务划分设计
  • 服务交互设计
  • 服务接口规范定义
  • 服务通信机制设计

1.3 流程目标

  1. 合理划分服务边界,避免微服务过小
  2. 定义清晰的服务职责和接口
  3. 规范服务间通信方式
  4. 确保服务设计的可扩展性和可维护性

2. 流程步骤

步骤1: 服务划分设计

目标: 基于DDD领域驱动设计原则,合理划分服务边界

输入:

  • 领域边界划分文档
  • 领域模型设计文档
  • 业务需求分析结果

活动:

  1. 识别核心域服务

    • 分析领域边界,识别核心域、支撑域、通用域
    • 评估服务粒度,避免过度拆分
    • 考虑服务聚合,合并高度相关的模块
  2. 服务聚合策略

    • 聚合高内聚的模块到同一服务
    • 合并频繁交互的模块
    • 合并数据一致性要求高的模块
  3. 定义服务职责

    • 明确每个服务的业务范围
    • 定义服务提供的接口
    • 梳理服务间依赖关系

服务划分原则:

原则描述示例
适度聚合避免微服务过小用户中心+认证授权+组织架构合并为System服务
高内聚相关功能放在同一服务用户管理和认证在同一服务
低耦合减少服务间依赖通过消息队列解耦
独立部署服务可独立开发、测试、部署每个服务有独立CI/CD

输出:

  • 服务划分设计文档
  • 服务架构图
  • 服务职责定义表

验收标准:

  • [√] 服务数量适中(建议5-10个)
  • [√] 服务职责清晰,无重叠
  • [√] 服务间耦合度低

步骤2: 服务交互设计

目标: 定义服务间通信方式、接口规范和可靠性机制

输入:

  • 服务划分设计文档
  • 业务流程分析结果
  • 非功能需求(性能、可靠性等)

活动:

  1. 通信方式选择

    • 同步调用:REST API、Feign客户端
    • 异步调用:消息队列(Redis/RabbitMQ)
    • 选择原则:优先异步,减少同步调用
  2. 接口规范定义

    • URL规范:/api/{service}/{module}/{resource}/{action}
    • 请求方法:RESTful标准(GET/POST/PUT/DELETE)
    • 请求头规范:
      • Authorization: Bearer
      • X-Tenant-Id: 租户ID
      • X-Request-Id: 请求追踪ID
      • X-Idempotency-Key: 幂等键
    • 响应格式:统一Result包装
  3. 可靠性设计

    • 熔断降级:Resilience4j熔断器
    • 幂等设计:X-Idempotency-Key机制
    • 链路追踪:TraceId传递
    • 异常处理:全局异常处理器

输出:

  • 服务交互设计文档
  • 接口规范文档
  • 服务调用关系图

验收标准:

  • [√] 通信方式选择合理
  • [√] 接口规范统一
  • [√] 可靠性机制完善

步骤3: 服务详细设计

目标: 详细设计每个服务的模块划分和接口定义

输入:

  • 服务划分设计文档
  • 领域模型设计文档

活动:

  1. 模块划分

    • 按业务功能划分子模块
    • 定义模块间边界
    • 设计模块接口
  2. 接口设计

    • 定义API接口(路径、方法、参数、响应)
    • 设计DTO对象
    • 定义错误码
  3. 数据设计

    • 数据库表设计
    • 缓存策略设计
    • 数据一致性方案

输出:

  • 服务详细设计文档
  • API接口文档
  • 数据库设计文档

验收标准:

  • [√] 模块划分合理
  • [√] 接口定义完整
  • [√] 数据设计规范

步骤4: 服务评审

目标: 评审服务设计结果,确保设计质量

输入:

  • 服务划分设计文档
  • 服务交互设计文档
  • 服务详细设计文档

活动:

  1. 内部评审

    • 架构团队评审
    • 开发团队评审
    • 运维团队评审
  2. 评审内容

    • 服务划分合理性
    • 接口规范性
    • 可靠性设计
    • 性能考虑
  3. 问题处理

    • 记录评审意见
    • 制定修改计划
    • 完成文档修订

输出:

  • 服务设计评审记录
  • 修订后的设计文档

验收标准:

  • [√] 评审意见完整记录
  • [√] 所有问题已解决
  • [√] 文档正式批准

3. 关键模板

3.1 服务职责定义表

服务名称服务类型职责描述包含模块依赖服务
System服务核心域用户、认证、组织、权限管理用户管理、认证授权、组织架构、权限管理、系统配置Gateway
审计服务支撑域操作日志、登录日志记录审计日志System服务
通知服务支撑域消息通知站内通知、短信、邮件System服务
文件服务通用域文件存储管理文件上传、下载、管理System服务

3.2 接口规范模板

yaml
接口名称: 用户登录
接口路径: POST /api/system/auth/login
请求头:
  Content-Type: application/json
  X-Tenant-Id: {tenantId}
请求体:
  username: string  # 用户名
  password: string  # 密码
  captcha: string   # 验证码
  captchaKey: string # 验证码key
响应体:
  code: 200
  message: "success"
  data:
    accessToken: string   # 访问令牌
    refreshToken: string  # 刷新令牌
    expiresIn: number     # 过期时间(秒)
    tokenType: "Bearer"

3.3 服务调用关系图

┌─────────────┐     REST      ┌─────────────┐
│   Gateway   │──────────────▶│   System    │
└─────────────┘               │   Service   │
       │                      └──────┬──────┘
       │                             │
       │         REST                │ REST
       │                             ▼
       │                      ┌─────────────┐
       │                      │  其他服务    │
       │                      │ • 审计服务   │
       │                      │ • 通知服务   │
       │                      │ • 文件服务   │
       │                      └─────────────┘

       │         异步消息

┌─────────────┐
│  消息队列    │
│ (Redis/RabbitMQ)
└─────────────┘

4. 输出文件

序号文件名称文件编号说明
1服务划分设计SYS-DES-ARCH-SVC-001服务边界和职责定义
2服务交互设计SYS-DES-ARCH-SVC-002通信方式和接口规范
3服务设计评审记录SYS-DES-ARCH-SVC-REV-001评审结果和签字

5. 修订记录

版本日期作者变更内容
1.02026-03-08架构师初始版本,定义服务设计流程标准

Released under the MIT License.