并发、并行和分布式(Concurrent, Parallel, and Distributed)

概述

在复杂的系统开发中,经常会遇到并发编程、高并发、并行计算、分布式系统、分布式计算、分布式存储这些词语,那么这些词背后的并发、并行、分布式到底有什么区别呢?

总的来说,这些概念有许多重叠,没有特别清晰的划分[1]。但是从它们最常见的含义上,可以从以下几个方面来区分。

从处理器上看

从处理器个数来区分

并发处理:是在同一个处理器上同时做多件事。如下图所示:


并发、并行和分布式(Concurrent, Parallel, and Distributed)_第1张图片
并发处理

并行处理:在多个处理器上同时完成多个(可能相关的)任务。如下图所示:

并发、并行和分布式(Concurrent, Parallel, and Distributed)_第2张图片
并行处理

分布式处理:在同一个网络里面的多台机器上同时完成多个任务。如下图所示:

并发、并行和分布式(Concurrent, Parallel, and Distributed)_第3张图片
分布式处理


从内存上看

并行计算里,所有处理器采用共享内存来交换信息。

分布式计算里,每个处理器有自己的私有内存,通过消息传递机制(HTTP,RPC,消息队列等)来交换信息。

并发、并行和分布式(Concurrent, Parallel, and Distributed)_第4张图片
并行计算与分布式计算

上图中a, b为分布式系统,c为并行系统。

从目的上看

从目的上来区分:

并行系统,是为了使系统运行的更快而把系统分成了能同时运行的多个部分。比如把一个系统分成A,B,C三部分,A和B并行完成后,再处理C。如下图:


并发、并行和分布式(Concurrent, Parallel, and Distributed)_第5张图片

并发系统,本身就具有多个部分,而这些部分的设计目标是同时发生,并不是为了使系统更快。比如web服务器、数据库系统。如下图:


并发、并行和分布式(Concurrent, Parallel, and Distributed)_第6张图片

分布式系统,指的则是在物理上把一个系统分成了由计算机网络所连接的多个部分,这些部分同时运行共同表现为单个系统。

参考

1. Distributed Computing

2. Learning from Concurrent,Parallel, and Distributed Systems Design

3. Basics: Parallel, Concurrent,and Distributed

你可能感兴趣的:(并发、并行和分布式(Concurrent, Parallel, and Distributed))