如何画技术架构图

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
注册配置 MSE Nacos/ZooKeeper,182元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介: 如何画技术架构图

知乎上有个问题,如何画架构图?平时做过一些系统设计,也写过一些系统分析文章,从组件、关系、交互等方面提供一些建议,并用我之前写文章画的一些图举些例子。

构成系统的组件

通过形状颜色名称来逼近其概念。

image.png                                  LevelDB 主要构件

如上面 LevelDB 的架构图,包含的主要组件有:

  1. memtable:红色,内存可变数据,较热
  2. immutable memtable:绿色,不可变数据,相对较冷
  3. sstable:深蓝,外存数据,最冷
  4. WAL log

image.png

                                  Master-Workers 架构

上图是分布式系统中一种常见的架构模式:Master-Workers 架构[1]。主要组件有:

  1. Master:红色,表示相对较重要
  2. Worker:绿色,都是绿色,表示地位等同
  3. Client:

image.png

                        Zookeeper 论文中架构图

上图是 Zookeeper 论文解析[2]中架构图:

  1. 预处理模块和原子广播模块用圆角矩形
  2. 持久化的多副本状态机模块用圆柱体:存储、数据库等持久化组件的多用柱形。

组件间的关系

通过分割线分割框来表达是否在同一层级、是否有包含关系。

如前面 LevelDB 的图,是分了内存和外存(文件系统)两个层次,因此中间用虚线隔开。

如前面 Master-Workers 架构图,是分了系统内和系统外,用方框隔开。

image.png

                                LevelDB 源码解析之 LRUCache

上图来自LevelDB 源码解析之 LRUCache[3], 在 LRU 算法中,需要用以两种形式组织数据条目,以达到缓存达到阈值时驱逐最老的数据:

  1. 以字典维护键值映射:图中 list_,本质上是一个 HashTable。
  2. 以链表维护访问顺序:图中 lru_ (LRU 算法只作用于驱逐表上,即 refs=1)和 in_use_(还在使用的数据 refs > 1)。

因此任意一个数据条目 LRUHandle 都同时归属于字典和链表,但字典的表头和链表的表头是各自独立的。另外使用不同颜色的框表达了如下的嵌套结构:

class HandleTable {
  LRUHandle** list_;
};
class LRUCache {
  LRUHandle lru_ GUARDED_BY(mutex_);
  LRUHandle in_use_ GUARDED_BY(mutex_);
  HandleTable table_ GUARDED_BY(mutex_);
}

组件间的交互

通过线条来表达组件的数据流向、依赖关系。

image.png

                             golang 中树形组织的 context

上图来自 Golang Context 源码剖析[4],图中通过:

  1. 虚线表达由嵌入(embedded)而构成的回溯链。
  2. 实线表达由 cancelCtx children 数组而保存的父子关系。

最后,想必你也感受到了,一个好的架构图离不开一个好的配色。上述架构图都是用 drawio[5]画的,配色模板在这里[6],阅读原文即可直达。

我是青藤木鸟,一个喜欢摄影的分布式系统程序员,欢迎关注我的公众号:“木鸟杂记”。等之后我会在博客中加一个页面:按图索文,想想也挺有趣。

参考资料

[1]Master-Workers 架构: https://www.qtmuniao.com/2021/07/03/distributed-system-1-master-workers/

[2]Zookeeper 论文解析: https://www.qtmuniao.com/2021/05/31/zookeeper/

[3]LevelDB 源码解析之 LRUCache: https://www.qtmuniao.com/2021/05/09/levedb-data-structures-lru-cache/

[4]Golang Context 源码剖析: https://www.qtmuniao.com/2020/07/12/go-context/

[5]drawio: https://app.diagrams.net/

[6]配色模板: https://mianbaoduo.com/o/bread/mbd-ZpyamZc=

相关文章
|
Java 分布式数据库 数据库
软件各种系统架构图
原文:软件各种系统架构图 https://blog.csdn.net/everythingss/article/details/78749247     该技术架构图是本人根据多年企业技术架构经验而制定,是企业技术的总架构图,希望对CTO们有所借鉴。
8380 0
|
机器学习/深度学习 人工智能 运维
什么是AIOps智能运维?
AIOps(智能运维)是一种利用人工智能和机器学习技术的软件,用于实时分析和处理业务和运营数据,以提供规范性和预测性答案。它通过收集和汇总大量数据,并使用智能筛选和识别重要事件和模式,帮助团队快速解决问题并避免事件发生。AIOps不依赖于人为指定规则,而是通过机器学习算法自动学习和提炼规则。它可以分析异常告警、故障分析、趋势预测等,并在某些情况下自动解决问题。AIOps的团队包括SRE团队、开发工程师团队和算法工程师团队,他们在AIOps相关工作中扮演不同的角色。
|
JavaScript 前端开发 Java
springboot整合minio+vue实现大文件分片上传,断点续传(复制可用,包含minio工具类)
springboot整合minio+vue实现大文件分片上传,断点续传(复制可用,包含minio工具类)
3535 1
Maven之阿里云镜像仓库配置
方式一:全局配置可以添加阿里云的镜像到maven的setting.xml配置中,这样就不需要每次在pom中,添加镜像仓库的配置,在mirrors节点下面添加子节点: <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.
|
存储 数据采集 安全
各种系统架构图与详细说明
原文:各种系统架构图与详细说明 共享平台逻辑架构设计 如上图所示为本次共享资源平台逻辑架构图,上图整体展现说明包括以下几个方面: 1 应用系统建设 本次项目的一项重点就是实现原有应用系统的全面升级以及新的应用系统的开发,从而建立行业的全面的应用系统架构群。
26760 1
|
存储 人工智能 uml
介绍一款好用的开源画图神器-draw.io | AI应用开发
draw.io 是一款基于浏览器的开源绘图工具,无需安装即可使用,支持多种操作系统和设备。其简洁的界面、丰富的形状库、智能对齐功能和强大的云端协作能力,使其成为专业人士和创意爱好者的首选。无论是产品设计、流程图绘制还是思维导图构建,draw.io 都能满足你的多样化需求。【10月更文挑战第7天】
1265 0
|
9月前
|
人工智能 自然语言处理 安全
2025最新排名|盘点值得推荐的5个在线客服系统
在数字化浪潮下,在线客服系统迅速发展,成为企业提升竞争力的关键。本文推荐五款2025年值得使用的在线客服系统:合力亿捷、淘宝、京东、华为云和中国移动客服系统。它们各自具备全渠道接入、智能问答、数据分析、高稳定性等亮点,助力企业高效服务客户,优化营销策略并提升整体运营效率。
1050 24
|
开发者
如何画业务架构图
如何快速上手画业务架构图
11119 2
|
运维 供应链 监控
一文带你了解什么是TOGAF?及TOGAF的应用?
TOGAF(The Open Group Architecture Framework)是由The Open Group组织开发的企业架构框架,提供了一套方法论、工具和术语,帮助企业设计、规划、实施和管理企业架构。其核心是架构开发方法(ADM),涵盖从架构愿景到实施的各个阶段。TOGAF支持跨部门协作、持续改进和项目成功,适用于新系统开发、系统升级、业务流程优化和组织变革管理等场景。
2506 1
一文带你了解什么是TOGAF?及TOGAF的应用?
|
安全 前端开发 架构师
技术文档中的各种架构图该怎么画? by彭文华
技术文档中的各种架构图该怎么画? by彭文华