并行和并发并不相同!

分类: 架构设计

保留所有版权,请引用而不是转载本文(原文地址 https://yeecode.top/blog/138/ )。

并行和并发,是我们在架构设计与软件开发中经常涉及的概念,不过两者的意义并不完全相同。

并行(parallelism)是指在同一时刻有多个任务同时进行。例如,你在家中一边读书一边听歌,“既读书又听歌"描述的就是并行,因为读书和听歌这两件事是同时发生的,如图 1所示。

并行示意图
图 1:并行示意图

并发(concurrency)是指多个任务中的每个任务都被拆分成细小的任务片,从属于不同任务的任务片被轮番处理。因此,任意时刻都只有一个任务在进行,但从宏观上看,这些任务像是被同时处理的。例如,你在家中一边读书一边看综艺,“既读书又看综艺"描述的就是并发,因为在任意时刻,你要么在低头读书,要么在抬头看综艺,这两件事实际是交替进行的,如图 2所示。

并发示意图
图 2:并发示意图

所以说,并行是一种真正意义上的"并”,而并发只是宏观表现上的"并”。

不过要注意,并发和并行的区分仅限于微观上。从宏观上看,并发或并行的任务都像是同时开展的。以并发请求为例,在同一时刻向某个系统发送大量请求,这些请求几乎会被同时处理;而具体这些请求在系统内部是"并行"处理还是"并发"处理的,无法从系统外部判断出来。所以宏观上常常把"并行"和"并发"统称为"并发"。

后面我们会介绍一些使用并行和并发来提升软件性能的手段,而区分好这两个概念是基础。


在 AI 编程迅猛发展的今天,编码能力逐步弱化,而架构能力则成了开发者更核心的竞争力。聊完并行与并发这对常被混淆的概念,如果你还想深入"单节点如何拆成多节点并行"的架构设计,推荐一本书《高性能架构之道(第二版)》。

这是一本理论联系实际的架构书,系统讲了怎么从顶层把软件架构好:覆盖分布式、并发编程、数据库调优、缓存、IO、高可用、前端性能优化等众多知识,最后还拿一个真实项目完整走了一遍架构全过程,把书里的方法真正落了地。

高性能架构之道(第二版)

《高性能架构之道(第二版)》

这本书还在台湾地区出了繁体版,叫《巨型服务架构》——繁体版嘛,贵得有点离谱。

就先聊到这儿。

我是软件架构师易哥。可以关注我,我会偶尔冒个泡,分享点编程干货!

可以访问个人知乎阅读更多文章:易哥(https://www.zhihu.com/people/yeecode),欢迎关注。

作者书籍推荐

作者书籍推荐 作者书籍推荐