尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何画出别人看得懂的架构图?用Awesome Architecture快速上手C4模型

如何画出别人看得懂的架构图?用Awesome Architecture快速上手C4模型 如何画出别人看得懂的架构图用Awesome Architecture快速上手C4模型【免费下载链接】awesome-architecture Architecture-first system design: 26 bilingual tutorials, 25 architecture templates, and 6 end-to-end cases covering distributed systems, AI-native systems, RAG, coding Agents, and production trade-offs.项目地址: https://gitcode.com/gh_mirrors/awesomearc/awesome-architecture新手画架构图最常遇到的问题不是画不出来而是画出来没人看得懂。开源知识库Awesome Architecture架构图谱用一套只讲架构、不讲语法的教程解决这个问题40 章架构思维教程 31 张真实系统架构地图 6 个端到端案例其中 tutorial/03-读懂与画好架构图.md 一章专教你用C4 模型画出别人一眼就懂的架构图。读完本文你会掌握 C4 四层缩放法、画图三要素和 5 条立刻见效的原则并知道如何照着仓库里的真实模板动手练。为什么你的架构图没人看得懂先认一认烂图四宗罪几乎每张没人看的架构图都中招毛病表现① 没有边界所有框平铺分不清哪些在同一台机器/一个信任域里② 箭头没方向不知道是 A 调 B 还是 B 调 A线上跑的是数据还是调用③ 抽象层次混乱整张图里整个支付系统和某个工具函数画在同一层④ 框太多四十个方块挤一页看的人直接放弃其中第 ③ 条最隐蔽也最致命——就像一张地图既画了整个中国又画了你家小区的某栋楼看的人完全不知道站在多高的视角理解。 而烂图比没有图更糟它制造出我们沟通过了的错觉实际上每个人理解的还是不一样。好消息是有一套现成方法能系统性地治好这四宗罪它就是C4 模型。C4 模型像地图软件一样缩放着看系统C4 模型的核心思想和你用地图软件的体验一模一样先看中国地图知道城市在哪放大到市区图看主干道再放大到街道图看具体怎么走。每一层只显示该层的信息多一分则乱少一分则空。C4 这个名字来自四层英文首字母从宏观到微观缩放级别C4 层次画的是什么给谁看 中国地图①Context上下文整个系统 周边用户、外部系统所有人含非技术️ 市区图②Container容器系统由哪几个可独立运行的大块组成架构、运维、技术负责人️ 街道图③Component组件某个容器内部的模块开发该模块的工程师 楼栋图④Code代码类、函数怎么组织基本不画交给 IDE C4 最大的贡献是强制你一张图只待在一个缩放级别上。你要么画系统全貌要么钻进某一块看内部绝不在一张图里混着画。第①层 Context给所有人看的系统名片在这张图里你的整个系统就是中间一个框内部细节一概不画周围画的是谁在用它用户、角色和它要和哪些外部系统打交道支付网关、邮件服务、第三方登录。它回答最高层的问题这个系统是干嘛的它和外面的世界怎么交互以仓库教程里的在线书店为例见 tutorial/03-读懂与画好架构图.md┌──────────┐ ┌──────────────┐ │ 顾客 │ │ 出版社系统 │ └────┬─────┘ └──────▲───────┘ │ 浏览、下单 │ 同步库存 ▼ │ ┌─────────────────────────────────────────┴────┐ │ 在 线 书 店 系 统 │ └──────┬──────────────────────────┬─────────────┘ │ 发起支付 │ 发送订单邮件 ▼ ▼ ┌──────────────┐ ┌──────────────┐ │ 支付网关 │ │ 邮件服务 │ └──────────────┘ └──────────────┘这张图一个技术名词都没有产品经理、老板、客服都能看懂特别适合用来对齐我们到底在做什么。第②层 Container给技术团队看的部署地图把上一层中间那个框放大钻进去就是 Container 层。注意这里的容器不是 Docker 容器而是指能独立启动、独立部署的进程或存储——一个前端应用、一个后端服务、一个数据库、一个缓存都各算一个 Container。┌─────────────────────────────────────────────────────────┐ │ 在线书店系统:虚线 系统边界,框内都是我们的 │ │ ┌──────────────┐ 调用 API ┌───────────────┐ │ │ │ Web 前端 │ ─────────────────▶ │ 后端服务 │ │ │ └──────────────┘ 返回 JSON └───┬───────┬───┘ │ │ 读写订单/商品 │ │ 缓存热门商品 │ ▼ ▼ │ │ ┌──────────┐ ┌────────┐ │ │ │ 数据库 │ │ 缓存 │ │ │ └──────────┘ └────────┘ │ └──────────────────────────────────────────────────────────┘这一层直接对应部署和运维每个 Container 通常就是一个要部署、要监控、可能要扩容的单元也是架构判断最密集的一层——拆几个服务、数据库怎么分、要不要加缓存取舍大多体现在这张图上。️实战小贴士Awesome Architecture 里 31 个模板的架构全景图基本都画在 Container 这个层次。学会读 Container 图你就能读懂仓库里几乎所有系统的全景图。第③层 Component 和第④层 Code按需画能省则省Component钻进某一个 Container看它内部由哪些模块构成订单模块、库存模块、认证模块……。只有当某个容器复杂到值得拆解时才画简单的就别画。Code具体到类、函数。基本不用手画——代码本身和 IDE 生成的关系图才是最实时的 Code 图手画一张代码一改就过时了。把精力花在相对稳定、又最需要沟通的 Context 和 Container 上。画图三要素框、箭头、边界C4 看着花哨你手里的画笔其实只有三样。把含义钉死图就不会乱框 一个有职责的东西系统、服务、模块都行。同一张图里所有框的尺度要一致。箭头 一段关系。关键两条一定有方向谁主动找谁、一定标含义调用 API读写数据发送事件。没方向、没含义的线是烂图的头号来源。边界 一条分界线圈住属于一起的东西。它可能是部署边界跑在同一台机器、信任边界框外输入都不可信、系统边界哪些是我们的。⚠️ 新人最常忽略边界而它恰恰最能体现架构思维边界画在哪往往就是安全和部署决策的所在。5 条速成原则让你的架构图立刻变好把这五条贴在显示器边上它们直接对治前面烂图四宗罪完整版见 tutorial/03-读懂与画好架构图.md#原则治什么病1一张图只用一个抽象层次C4 的灵魂抽象层次混乱2箭头一定标方向和含义一根没标注的线 一个没想清楚的依赖箭头没方向3控制框的数量在 7±2超过 9 个框就该往上抽一层或拆成两张图框太多4先画 Context再往下钻自顶向下别一上来就陷进组件细节只见树木5永远为你的读者画图给老板的图里别出现技术黑话全图动手练习照抄真实模板最快掌握 C4 架构图画法光看不练学不会画图。仓库提供了一个现成的练习场步骤如下打开 templates/README.md挑一个你感兴趣的系统比如 电商平台模板 或 实时通讯模板先别看它的全景图只读开头的一句话定位和核心需求自己动手画一张 Context 图中间一个框是系统周围是用户和外部系统画的时候刻意自检框是否只用了一个抽象层次箭头有没有标方向和含义有没有圈出系统边界画完再去对照模板里的架构全景图Container 层看有没有你没想到的外部系统或内部大块。比如 AI 对话产品模板 的全景图第 4 节全景图原文里接入层、编排层、推理服务、会话存储、向量检索——每一个都是一个可独立运行的大块就是一张典型的 Container 图。再进阶一点可以读 cases/stararena-ticketing/README.md 里的抢票系统推演看架构判断如何随业务压力一步步演进。下一步从会画一张图到会设计一个系统画好 C4 架构图只是起点。Awesome Architecture 的学习路径建议这样走 补前置思维tutorial/02-架构师的思考框架.md需求 → 约束 → 质量属性 → 取舍 巩固画图tutorial/03-读懂与画好架构图.md 结尾还有随堂检验和 ASCII 画图技巧 从 0 设计系统tutorial/07-从0到1设计一个系统.md一套可照着做的实战方法论️ 按路径学习tutorial/README.md 有完整章节导览一句话记住 C4 的灵魂像用地图软件一样缩放着画——一张图一个视角永远为你的读者画图。【免费下载链接】awesome-architecture Architecture-first system design: 26 bilingual tutorials, 25 architecture templates, and 6 end-to-end cases covering distributed systems, AI-native systems, RAG, coding Agents, and production trade-offs.项目地址: https://gitcode.com/gh_mirrors/awesomearc/awesome-architecture创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表