开源软件架构图生成工具大全(2025 年最新版)
1. diagrams.net(原 draw.io):全能型绘图神器
安装与使用:
本文盘点 2025 年主流开源软件架构图生成工具,涵盖 diagrams.net、Excalidraw、Mermaid、PlantUML、Structurizr DSL、Diagrams (Python)、Go-Diagrams、Kroki 及 C4 模型相关工具。对比了各工具的易用性、专业性、云原生支持及协作能力,提供了个人使用、技术文档、云原生架构设计及团队协作等场景的组合方案建议,并简述了 C4 模型快速入门方法。
安装与使用:
核心优势:
使用场景:几乎适用于所有日常绘图需求,从简单流程图到复杂系统架构,尤其适合团队协作和文档配图
入门示例:
注意事项:保存时建议选择 diagrams.net 原生格式(.drawio),以便后续编辑
使用方式:
核心优势:
使用场景:快速原型设计、团队脑暴会议、教学演示、创意架构展示
入门示例:
高级技巧:使用"Group"功能组织元素;按住 Shift 绘制直线/正圆;Ctrl+滚轮缩放画布
使用方法:
核心语法(C4 架构图示例):
C4Context title 在线书店系统
Person(customer, "顾客", "浏览和购买图书")
System_Boundary(system, "在线书店系统") {
Container(frontend, "前端", "React+Vite", "用户界面")
Container(backend, "后端", "Spring Boot", "业务逻辑")
ContainerDb(database, "数据库", "PostgreSQL", "存储数据")
}
Rel(customer, frontend, "访问", "HTTPS")
Rel(frontend, backend, "调用", "REST API")
Rel(backend, database, "读写", "JDBC")
支持图表类型:
使用场景:
入门步骤:
安装方式:
java -jar plantuml.jar your_file.puml核心优势:
语法示例(类图):
@startuml
class Customer {
-id: Long
-name: String
+getOrders(): List<Order>
}
class Order {
-id: Long
-total: Double
+calculateTax(): Double
}
Customer "1" --> "*" Order : 下订单
@enduml
使用场景:
实用技巧:
skinparam 自定义图表样式,如颜色、字体安装与使用:
核心优势:
DSL 语法示例(系统上下文):
workspace OnlineBookstore {
model {
person(customer, "顾客", "浏览和购买图书")
softwareSystem(bookstore, "在线书店系统", "提供图书浏览和购买功能")
relationship(customer, bookstore, "浏览/购买图书", "HTTPS")
}
views {
systemContext(bookstore, "系统上下文图", "在线书店与外部用户的交互") {
include customer
include bookstore
}
}
}
使用场景:
入门建议:
安装:
pip install diagrams
核心优势:
代码示例(AWS 三层架构):
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB
with Diagram("Web Service with DB", show=False):
elb = ELB("lb")
web = [EC2("web1"), EC2("web2"), EC2("web3")]
db = RDS("db")
elb >> web >> db
使用场景:
进阶用法:
Cluster 分组相关组件,使图表更清晰安装:
go get -u github.com/blushft/go-diagrams
核心优势:
代码示例:
package main
import (
"github.com/blushft/go-diagrams/diagram"
"github.com/blushft/go-diagrams/targets/aws/compute"
"github.com/blushft/go-diagrams/targets/aws/network"
)
func main() {
diag := diagram.New("Go Web Service", diagram.Portrait)
diag.NodeSpace(200, 100)
lb := diag.Node("LB", network.LoadBalancer())
web := diag.Nodes("Web", 3, compute.EC2Instance())
db := diag.Node("DB", compute.Database())
lb.Connect(web...)
for _, w := range web {
w.Connect(db)
}
diag.SavePNG("architecture.png")
}
使用场景:
安装方式:
docker run -p 8000:8000 yuzutech/kroki支持的图表语言:
核心优势:
使用示例:
# 通过 URL 直接生成 Mermaid 图表
https://kroki.io/mermaid/svg/eNpLzE7z0yU1zSszS1JzCvRUAJ9CjA
使用场景:
使用方式:
核心优势:
使用场景:
使用方法:
语法示例:
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
C4_Context(
System("Software System", "提供软件系统功能"),
Person("User", "使用软件系统的用户")
)
@enduml
核心优势:
使用场景:
| 工具 | 易用性 | 专业性 | 云原生支持 | 协作能力 | 适用场景 | 推荐指数 |
|---|---|---|---|---|---|---|
| diagrams.net | ★★★★★ | ★★★☆☆ | ★★★☆☆ | ★★★★☆ | 全能型,入门首选 | ★★★★★ |
| Excalidraw | ★★★★★ | ★★☆☆☆ | ★★☆☆☆ | ★★★★★ | 手绘风格,团队脑暴 | ★★★★☆ |
| Mermaid | ★★★★☆ | ★★★★☆ | ★★★☆☆ | ★★★☆☆ | 文档驱动,Markdown 集成 | ★★★★★ |
| PlantUML | ★★★☆☆ | ★★★★★ | ★★★☆☆ | ★★★☆☆ | 专业 UML,系统设计 | ★★★★☆ |
| Structurizr | ★★★☆☆ | ★★★★★ | ★★★★☆ | ★★★★☆ | 标准 C4,企业架构 | ★★★★☆ |
| Python Diagrams | ★★★★☆ | ★★★★★ | ★★★★★ | ★★★☆☆ | 云原生,Python 项目 | ★★★★★ |
| Go-Diagrams | ★★★☆☆ | ★★★★★ | ★★★★★ | ★★★☆☆ | 云原生,Go 项目 | ★★★★☆ |
| Kroki | ★★★★☆ | ★★★★☆ | ★★★★☆ | ★★★★☆ | 文档平台集成,一站式服务 | ★★★★☆ |
| IcePanel | ★★★★☆ | ★★★★★ | ★★★☆☆ | ★★★★★ | 专业 C4,团队协作 | ★★★★☆ |
| C4-PlantUML | ★★★★☆ | ★★★★★ | ★★★☆☆ | ★★★☆☆ | C4+UML 融合,过渡方案 | ★★★★☆ |
C4 模型是 Simon Brown 提出的软件架构可视化标准,由四个层次组成:
Container 示例:
C4Container
Container(web, "Web 服务", "Spring Boot", "处理 HTTP 请求")
ContainerDb(db, "数据库", "PostgreSQL", "存储数据")
Rel(web, db, "读写", "JDBC")
Context 示例:
C4Context
Person(user, "用户", "使用系统")
System(system, "系统名称", "系统功能")
Rel(user, system, "交互方式", "协议/技术")
实践建议:从 Context 图开始,逐步细化到 Container 和 Component,为每个架构决策提供清晰视图
架构图是团队沟通和系统设计的重要工具,选择合适的工具能大幅提升效率。根据 2025 年最新趋势,推荐:
参考资料:各工具官网文档、GitHub 仓库及开发者调查报告

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online