分布式计算——一个高大上的名词,是计算机软件中人民群众喜闻乐见的“逼格满满”、“不明觉厉”的几个名词之一。人们常常把分布式计算自然而然的和并行计算联系起来。然而这并不正确。实际上,分布式计算并不一定是并行的,举个简单的例子就能理解——
某软件功能如下:
(1)提示用户输入两个数 A 和 B
(2)在内部,对 A 和 B 执行某数学运算,获得 C
(3)输出 C
很简单吧,这三个步骤是无法并行的。它们需要被依次执行。但是这个软件依然可以被改为分布式的,方法就是把步骤 (2) 的计算过程移动到另外一台计算机上完成。如果我们从整个系统的观点来看,并没有什么并行。整个过程都是顺序执行的。只不过执行时出现了“跨设备”的现象而已。可见,分布式计算本身就只如其字面意思所指,指的仅仅是从结构角度的分散而已。再比如,我们浏览网页、通过搜索引擎查询、利用导航软件进行导航等,都是通过访问互联网上的服务器实现的,都是分布式计算的一种表现形式。
现实世界中,我们更多的时候钟情于分布式,还是因为它与并行之间可以相互配合,实现既是分布同时也是并行的系统,其带来的好处也是显而易见的:
(1)节约时间和成本:理论上来讲,在一个任务上投入更多的资源有利于缩短其完成时间,从而降低成本;并行计算机可以由大量廉价的单机构成,从而节约成本。
(2)解决更大规模更复杂的问题:很多问题的规模和复杂度使得其难以在一个单机上面完成,例如网页搜索引擎/数据库每秒处理百万级别的吞吐量,再比如模拟核爆、宇宙大爆炸、生物进化等超大型科学仿真计算问题。
(3)提供并发性:单个计算资源某个时间段只能做一件事情,而多计算资源则可以同时做多件事情,特别是可以更好的利