一句话总结:分布式是架构 / 部署模式,并行是计算执行模式;分布式可以做并行,并行不一定需要分布式。
1. 概念定义
并行计算(Parallel Computing)
同一台机器内部,把一个大任务拆成多个子任务,同时执行,共用内存。
硬件:单台计算机,多核 CPU、多 CPU,共享内存
特征:多个进程 / 线程同时跑,内存互通,CPU 之间通信极快
目标:缩短单任务计算时间,把大计算拆开同时算
例子:OpenMP 多线程、CPU 多核同时运算、GPU 多流计算
并行重点:计算怎么跑(执行方式)
分布式结构(Distributed Architecture)
多台独立计算机(节点)通过网络组成集群,节点各自拥有独立内存,通过网络通信协同工作。
硬件:多台物理机器,各有自己 CPU、内存、磁盘,靠网络交互
特征:节点内存不共享,数据、消息靠网络传输,通信开销大
目标:扩容算力、存储,容错高,突破单机上限
例子:Hadoop、Spark 集群、微服务集群、K8s 集群
分布式重点:系统怎么组织(架构部署)
2. 关键维度对比表
3. 四种组合关系(非常重要)
单机并行(非分布式) 一台机器多核,多线程同时计算,没有多节点,只有并行,没有分布式。
例:本地 Python 多进程做数值计算
分布式 + 并行(最常见大数据场景) 多台机器,每台机器内部又做多核并行,节点之间网络交互。
例:Spark:集群多节点是分布式;每个 Executor 内部多线程是并行计算。
分布式但不并行 多台机器分工,任务串行流转,没有同时计算。
例:简单链式微服务 A→B→C,依次调用,没有同时算,只是部署在多台机器。
并行但非分布式:单机多核并发运算,上面已经举例。
4. 通俗比喻
并行计算:一个大工程,同一间办公室里很多工人一起干活,大家共用一张大办公桌(共享内存),互相传递东西伸手就到。
分布式结构:多个独立办公室,每个办公室有自己的桌子,办公室之间靠打电话传消息(网络)。每个办公室内部,工人也可以多人同时干活(内部并行)。
5. 容易混淆的点
分布式不等于并行:分布式只是把系统拆到多机,任务不一定同时跑;
并行不等于分布式:并行只关心同时计算,可以完全跑在一台机器;
大数据框架(Spark/Flink):底层是分布式架构,利用并行计算提升单节点算力。
补充拓展
并行计算常见两类模型:共享内存模型 (OpenMP)、消息传递模型 (MPI,MPI 既可以单机并行,也可以跨机器变成分布式并行)
分布式天然面对:网络延迟、数据一致性、节点故障;并行主要面对:锁竞争、内存冲突。
本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。
原文链接
欢迎访问 小易撩挨踢