分布式计算是什么?让多台计算机协同解决同一个问题
分布式计算(Distributed Computing)是让多台计算机协同工作、共同解决一个问题的方法。它让一个计算机网络看起来就像一台功能强大的计算机,能够提供大规模的资源来应对复杂的挑战。这个研究领域主要研究分布式系统如何进行计算。分布式系统是一组通过网络相互连接的计算机,它们通过传递消息来通信、协调各自的行为,共同实现一个目标。
为什么需要分布式计算
单台计算机的能力总是有限的:处理器的速度、内存的大小、硬盘的容量都有上限,而且单台机器一旦出了故障,服务就会中断。当需要处理的数据量或计算量远远超过一台机器的能力时,比如搜索引擎要索引整个互联网的网页、电商平台要在购物节期间同时处理海量的订单、要训练一个拥有数千亿参数的大模型,就需要把任务分配给许多台计算机共同完成。
分布式计算的优点
可扩展性:当计算需求增长时,只需增加更多的机器,就能提升整体的处理能力,这叫横向扩展,通常比购买一台更强大的机器更经济。容错性和高可用:数据和任务分布在多台机器上,并保存多个副本,即使其中一些机器出现故障,系统仍然可以继续运行。性能:把大任务拆分成许多小任务,在多台机器上并行处理,大大缩短完成时间。地理分布:可以把服务部署在离用户更近的地方,减少延迟。
面临的挑战
分布式系统比单机系统复杂得多:网络可能延迟、丢包或中断;机器随时可能出现故障;多台机器之间的数据如何保持一致;没有一个全局统一的时钟,很难判断事件发生的先后顺序。计算机科学家 Eric Brewer 提出的 CAP 定理指出,在网络可能出现分区故障的情况下,一个分布式系统无法同时保证数据的强一致性和服务的高可用性,必须在两者之间做出权衡。为了让多台机器对某个值达成一致,研究者提出了 Paxos、Raft 等共识算法。
典型的技术和应用
大数据处理:谷歌在 2004 年发表的 MapReduce 论文提出了一种简单的分布式编程模型,把计算分为“映射”和“归约”两个阶段,开源的 Hadoop 实现了这一思想,之后的 Spark 等框架进一步提高了处理速度。分布式存储和数据库:把海量数据分散存储在许多台机器上。云计算:云服务商的数据中心本身就是巨大的分布式系统。大模型训练:训练大模型需要成千上万块 GPU 协同工作,采用数据并行、张量并行、流水线并行等多种分布式策略,把数据和模型参数分布到不同的设备上,GPU 之间的高速互联是训练效率的关键。区块链也是一种分布式系统。