架构图 C4 规范简介
架构图 C4 规范简介
C4(Context, Containers, Components, Code)是一种用于软件架构可视化的分层建模方法,由 Simon Brown 提出。它通过四个不同层次的抽象来描述软件系统,适用于不同受众(如业务人员、架构师、开发人员等),帮助团队更好地理解和沟通系统架构。
C4 规范的四个层次
层次 | 名称 | 描述 | 目标受众 |
---|---|---|---|
1 | 系统上下文图(System Context) | 最高层抽象,描述系统与外部用户、其他系统的交互 | 业务人员、利益相关者 |
2 | 容器图(Containers) | 展示系统的整体架构,包括应用、数据库、微服务等 | 架构师、技术负责人 |
3 | 组件图(Components) | 描述容器内部的逻辑组件及其交互 | 开发团队 |
4 | 代码图(Code) | 最底层,展示类、接口等具体实现 | 开发人员 |
1. 系统上下文图(Context)
问题: 系统与哪些外部实体交互?
示例元素:
- 用户(Actor)
- 外部系统(如支付网关、第三方API)
- 当前系统(核心业务)
示例图:
2. 容器图(Containers)
问题: 系统由哪些主要技术组件构成?
示例元素:
- Web 应用(前端/后端)
- 数据库(MySQL, MongoDB)
- 消息队列(Kafka, RabbitMQ)
- 微服务(订单服务、支付服务)
示例图:
3. 组件图(Components)
问题: 每个容器内部有哪些逻辑组件?
示例元素:
- 控制器(Controller)
- 服务层(Service)
- 数据访问层(Repository)
示例图(商品服务组件):
4. 代码图(Code)
问题: 组件如何用代码实现?
示例元素:
- 类(Class)
- 接口(Interface)
- 方法(Method)
示例图(UML类图):
C4 规范的优势
- 分层抽象:适应不同角色的需求(业务 vs. 技术)
- 清晰沟通:避免过于复杂或过于简化的架构图
- 标准化:提供一致的建模方法,便于团队协作
- 可扩展:可结合 UML、流程图等进一步细化
总结
C4 规范通过分层架构图(Context → Containers → Components → Code)帮助团队更高效地设计和理解软件系统,适用于微服务、单体应用等多种架构风格。