服务设计流程标准
文档编号: SYS-STD-ARCH-SVC-001
版本: 1.0
创建日期: 2026-03-08
作者: 架构师
状态: ✅ 已完成
1. 流程概述
1.1 目的
本文档定义System平台服务设计的标准化流程,包括服务划分设计和服务交互设计,确保服务设计的一致性、合理性和可维护性。
1.2 适用范围
- 服务划分设计
- 服务交互设计
- 服务接口规范定义
- 服务通信机制设计
1.3 流程目标
- 合理划分服务边界,避免微服务过小
- 定义清晰的服务职责和接口
- 规范服务间通信方式
- 确保服务设计的可扩展性和可维护性
2. 流程步骤
步骤1: 服务划分设计
目标: 基于DDD领域驱动设计原则,合理划分服务边界
输入:
- 领域边界划分文档
- 领域模型设计文档
- 业务需求分析结果
活动:
识别核心域服务
- 分析领域边界,识别核心域、支撑域、通用域
- 评估服务粒度,避免过度拆分
- 考虑服务聚合,合并高度相关的模块
服务聚合策略
- 聚合高内聚的模块到同一服务
- 合并频繁交互的模块
- 合并数据一致性要求高的模块
定义服务职责
- 明确每个服务的业务范围
- 定义服务提供的接口
- 梳理服务间依赖关系
服务划分原则:
| 原则 | 描述 | 示例 |
|---|---|---|
| 适度聚合 | 避免微服务过小 | 用户中心+认证授权+组织架构合并为System服务 |
| 高内聚 | 相关功能放在同一服务 | 用户管理和认证在同一服务 |
| 低耦合 | 减少服务间依赖 | 通过消息队列解耦 |
| 独立部署 | 服务可独立开发、测试、部署 | 每个服务有独立CI/CD |
输出:
- 服务划分设计文档
- 服务架构图
- 服务职责定义表
验收标准:
- [√] 服务数量适中(建议5-10个)
- [√] 服务职责清晰,无重叠
- [√] 服务间耦合度低
步骤2: 服务交互设计
目标: 定义服务间通信方式、接口规范和可靠性机制
输入:
- 服务划分设计文档
- 业务流程分析结果
- 非功能需求(性能、可靠性等)
活动:
通信方式选择
- 同步调用:REST API、Feign客户端
- 异步调用:消息队列(Redis/RabbitMQ)
- 选择原则:优先异步,减少同步调用
接口规范定义
- 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包装
- URL规范:
可靠性设计
- 熔断降级:Resilience4j熔断器
- 幂等设计:X-Idempotency-Key机制
- 链路追踪:TraceId传递
- 异常处理:全局异常处理器
输出:
- 服务交互设计文档
- 接口规范文档
- 服务调用关系图
验收标准:
- [√] 通信方式选择合理
- [√] 接口规范统一
- [√] 可靠性机制完善
步骤3: 服务详细设计
目标: 详细设计每个服务的模块划分和接口定义
输入:
- 服务划分设计文档
- 领域模型设计文档
活动:
模块划分
- 按业务功能划分子模块
- 定义模块间边界
- 设计模块接口
接口设计
- 定义API接口(路径、方法、参数、响应)
- 设计DTO对象
- 定义错误码
数据设计
- 数据库表设计
- 缓存策略设计
- 数据一致性方案
输出:
- 服务详细设计文档
- API接口文档
- 数据库设计文档
验收标准:
- [√] 模块划分合理
- [√] 接口定义完整
- [√] 数据设计规范
步骤4: 服务评审
目标: 评审服务设计结果,确保设计质量
输入:
- 服务划分设计文档
- 服务交互设计文档
- 服务详细设计文档
活动:
内部评审
- 架构团队评审
- 开发团队评审
- 运维团队评审
评审内容
- 服务划分合理性
- 接口规范性
- 可靠性设计
- 性能考虑
问题处理
- 记录评审意见
- 制定修改计划
- 完成文档修订
输出:
- 服务设计评审记录
- 修订后的设计文档
验收标准:
- [√] 评审意见完整记录
- [√] 所有问题已解决
- [√] 文档正式批准
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.0 | 2026-03-08 | 架构师 | 初始版本,定义服务设计流程标准 |
