Skip to content

系统架构设计流程

本文档定义了系统架构设计的标准流程,用于系统化完成逻辑架构和物理架构设计。


1. 流程概述

1.1 目的

  • 系统化设计系统逻辑架构(分层、模块、组件)
  • 系统化设计系统物理架构(部署、网络、基础设施)
  • 确保架构设计的一致性和完整性
  • 为后续详细设计提供架构蓝图

1.2 适用范围

  • 逻辑架构设计(接入层、网关层、服务层、数据层)
  • 物理架构设计(部署拓扑、网络架构、服务器规划)
  • 服务划分设计(避免微服务划分过小)
  • 高可用架构设计

1.3 输入输出

输入

  • 领域分析文档(领域边界、领域模型)
  • 技术选型报告
  • 架构约束分析
  • 非功能性需求

输出

  • 逻辑架构设计文档
  • 物理架构设计文档
  • 系统架构评审记录

2. 流程步骤

步骤1:逻辑架构设计

目标:设计系统的逻辑分层和模块划分

活动

  1. 分层架构设计

    • 接入层设计(Web端、移动端、第三方接入)
    • 网关层设计(路由、限流、认证)
    • 服务层设计(服务划分、服务职责)
    • 数据层设计(数据存储、缓存、搜索)
  2. 模块划分

    • 基于DDD领域划分服务边界
    • 避免微服务划分过小(适度聚合)
    • 定义服务间交互关系
  3. 组件设计

    • 各层核心组件定义
    • 组件职责和接口定义
    • 组件间交互协议

交付物

  • 逻辑架构设计文档
  • 架构图(分层架构图、服务划分图)

验收标准

  • [√] 四层架构清晰,职责明确
  • [√] 服务划分合理,避免过度拆分
  • [√] 组件定义完整,接口清晰

步骤2:服务划分设计

目标:合理划分服务边界,避免微服务划分过小

活动

  1. 识别核心域服务

    • 分析领域边界,识别核心域
    • 评估服务粒度(避免过小)
    • 考虑服务聚合(相关模块合并)
  2. 服务聚合策略

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

    • 定义每个服务的职责范围
    • 定义服务提供的接口
    • 定义服务间的依赖关系

服务划分原则

原则说明示例
适度聚合避免微服务划分过小用户+权限+组织合并为System服务
高内聚相关功能放在同一服务用户管理和认证放在同一服务
低耦合服务间减少依赖通过消息队列解耦
独立部署服务可独立部署升级每个服务独立CI/CD

交付物

  • 服务划分图
  • 服务职责定义表
  • 服务间调用关系图

验收标准

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

步骤3:物理架构设计

目标:设计系统的物理部署架构

活动

  1. 部署环境规划

    • 开发/测试/预发布/生产环境规划
    • 环境资源配置(开发环境最小化,生产环境高可用)
  2. 服务器规划

    • 负载均衡服务器规划
    • 应用服务器规划(K8s集群)
    • 数据库服务器规划
    • 中间件服务器规划
  3. 网络架构设计

    • 网络区域划分(DMZ、内网、数据存储区)
    • 网络安全策略
    • 域名规划
  4. 容器化部署方案

    • Kubernetes架构设计
    • 命名空间规划
    • 服务部署配置
    • 配置管理(ConfigMap/Secret)

交付物

  • 物理架构设计文档
  • 部署拓扑图
  • 网络架构图
  • K8s部署配置

验收标准

  • [√] 部署环境完整,资源配置合理
  • [√] 网络架构安全,区域划分清晰
  • [√] 容器化方案可行,配置完整

步骤4:高可用架构设计

目标:设计系统的高可用方案

活动

  1. 负载均衡高可用

    • Nginx主备部署
    • Keepalived故障切换
    • VIP虚拟IP配置
  2. 应用服务高可用

    • 多实例部署
    • 健康检查机制
    • 自动扩缩容(HPA)
  3. 数据库高可用

    • MySQL主从复制
    • Redis集群模式
    • 故障自动切换
  4. 存储高可用

    • 数据备份策略
    • 数据冗余方案
    • 灾难恢复方案

交付物

  • 高可用架构设计文档
  • 故障切换方案
  • 数据备份方案

验收标准

  • [√] 各层都有高可用方案
  • [√] 故障切换时间可接受
  • [√] 数据备份策略完整

步骤5:容量规划

目标:规划系统容量,支持业务增长

活动

  1. 初期容量规划(1-1000用户)

    • 最小资源配置
    • 支撑基础业务
  2. 中期容量规划(1000-5000用户)

    • 水平扩容方案
    • 数据库升级方案
  3. 长期容量规划(5000+用户)

    • 大规模集群方案
    • 数据库分库分表
    • 分布式存储方案

交付物

  • 容量规划文档
  • 扩容方案

验收标准

  • [√] 容量规划覆盖业务增长
  • [√] 扩容方案可行

步骤6:评审与确认

目标:评审系统架构设计结果

活动

  1. 内部评审

    • 架构团队评审
    • 技术团队评审
    • 运维团队评审
  2. 正式评审

    • 架构委员会评审
    • 各领域专家评审
  3. 问题处理

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

交付物

  • 系统架构评审记录
  • 修订后的架构文档

验收标准

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

3. 关键活动详解

3.1 四层架构设计

┌─────────────────────────────────────────┐
│              接入层 (Access)             │
│         Web端 / 移动端 / 第三方          │
├─────────────────────────────────────────┤
│              网关层 (Gateway)            │
│      路由 / 限流 / 认证 / 熔断           │
├─────────────────────────────────────────┤
│              服务层 (Service)            │
│    System服务 / Config服务 / 其他服务    │
├─────────────────────────────────────────┤
│              数据层 (Data)               │
│   MySQL / Redis / ES / MinIO / Kafka    │
└─────────────────────────────────────────┘

3.2 服务聚合示例

聚合前(服务过多)

  • 用户中心服务
  • 认证授权服务
  • 组织架构服务
  • 权限管理服务

聚合后(适度聚合)

  • System服务(用户+认证+组织+权限)
  • Config服务
  • Audit服务

聚合原则

  • 业务关联度高
  • 数据一致性要求高
  • 频繁交互

3.3 K8s部署配置模板

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: system-service
  namespace: system-platform
spec:
  replicas: 2
  selector:
    matchLabels:
      app: system-service
  template:
    metadata:
      labels:
        app: system-service
    spec:
      containers:
      - name: system-service
        image: registry.linsir.com/system/system-service:1.0.0
        ports:
        - containerPort: 8081
        resources:
          requests:
            memory: "2Gi"
            cpu: "1000m"
          limits:
            memory: "4Gi"
            cpu: "2000m"

4. 工具与模板

4.1 逻辑架构设计模板

markdown
## 逻辑架构设计

### 1. 分层架构

| 层级 | 组件 | 职责 |
|-----|------|------|
| 接入层 | | |
| 网关层 | | |
| 服务层 | | |
| 数据层 | | |

### 2. 服务划分

| 服务 | 职责 | 接口前缀 |
|-----|------|---------|
| | | |

### 3. 组件交互

[架构图]

4.2 物理架构设计模板

markdown
## 物理架构设计

### 1. 服务器规划

| 服务器 | IP | 配置 | 部署组件 |
|-------|-----|------|---------|
| | | | |

### 2. 网络架构

[网络拓扑图]

### 3. K8s部署

```yaml
[部署配置]

---

## 5. 最佳实践

### 5.1 服务划分原则

1. **避免过度拆分**:服务数量控制在5-10个
2. **适度聚合**:高内聚、频繁交互的模块合并
3. **独立部署**:每个服务可独立部署升级
4. **数据隔离**:服务间数据独立,通过API交互

### 5.2 高可用设计原则

1. **无单点故障**:每个组件都有备份
2. **故障自动切换**:减少人工干预
3. **数据多副本**:保证数据安全
4. **监控告警**:及时发现问题

### 5.3 常见陷阱

- 微服务划分过小,导致运维复杂
- 忽视高可用设计,单点故障风险
- 容量规划不足,无法支撑业务增长
- 网络架构不安全,缺乏区域隔离

---

## 6. 相关文档

- [逻辑架构设计](../03-architecture-design/01-system-architecture/01-logical-architecture.md)
- [物理架构设计](../03-architecture-design/01-system-architecture/02-physical-architecture.md)
- [系统架构评审记录](../03-architecture-design/01-system-architecture/03-system-architecture-review-record.md)
- [领域边界划分](../01-business-analysis/01-domain-analysis/01-domain-boundaries.md)

---

## 7. 修订记录

| 版本 | 日期 | 作者 | 变更内容 |
|-----|------|------|---------|
| 1.0 | 2026-03-08 | 架构师 | 初始版本,定义系统架构设计流程 |

Released under the MIT License.