概述
在复杂的系统开发中,经常会遇到并发编程、高并发、并行计算、分布式系统、分布式计算、分布式存储这些词语,那么这些词背后的并发、并行、分布式到底有什么区别呢?
总的来说,这些概念有许多重叠,没有特别清晰的划分[1]。但是从它们最常见的含义上,可以从以下几个方面来区分。
从处理器上看
从处理器个数来区分
并发处理:是在同一个处理器上同时做多件事。如下图所示:

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

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

从内存上看
并行计算里,所有处理器采用共享内存来交换信息。
分布式计算里,每个处理器有自己的私有内存,通过消息传递机制(HTTP,RPC,消息队列等)来交换信息。

上图中a, b为分布式系统,c为并行系统。
从目的上看
从目的上来区分:
并行系统,是为了使系统运行的更快而把系统分成了能同时运行的多个部分。比如把一个系统分成A,B,C三部分,A和B并行完成后,再处理C。如下图:

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

分布式系统,指的则是在物理上把一个系统分成了由计算机网络所连接的多个部分,这些部分同时运行共同表现为单个系统。
参考
2. Learning from Concurrent,Parallel, and Distributed Systems Design
网友评论