2.1.2 并行计算
并行计算(Parallel Computing)是一种同时进行若干计算任务的计算方法[2],其原理如图2.2所示,大问题通常会分解成可以并行解决的小问题。它将传统串行计算的子任务及一些不需要前后关联的部分并排放到一起,通过一台服务器的多个CPU或多台服务器各自的CPU分别同时进行处理,最后对处理结果用某种方式进行汇总。
那么如何拆分这些子任务,如何将繁多的子任务的前后依赖关系分析清楚,通过什么方式编排和调度这些任务,以及如何将这些任务的结果进行有效汇总呢?这是分布式计算领域最为核心、关键的部分,后续章节将详细讲解。
图2.2 并行计算示意图
并行计算主要包括以下两种方式。
1.集群计算
集群计算(Cluster Computing)指的是一组相关联的计算机协同工作,如图2.3所示,集群计算是最传统的并行计算机制,很多超级计算机都以这种体系进行搭建。集群计算大多以共享内存的方式工作,服务器之间通过高速网络连接和通信。
这种机制将SMP架构扩展到多台服务器中,服务器之间通过RDMA(Remote Direct Memory Access,远程直接存储器访问)从一台服务器直接高速访问另一台服务器的内存,所有的机器看起来完全对等。
图2.3 集群计算
从本质上说,这种架构只能看作SMP架构的升级版,远远达不到本章所讲的分布式架构标准,毕竟RDMA的带宽和服务器扩展数量非常有限,不可能在几十台甚至上百台机器构建的通用服务器集群中运行。
2.网格计算
网格计算(Grid Computing)通过利用大量异构计算机(通常为台式机)的未用资源(CPU周期和磁盘存储),将其作为嵌入在分布式电信基础设施中的一个虚拟的计算机集群,为解决大规模的计算问题提供模型。网格计算的焦点在于支持跨管理域计算的能力,这是它与传统的计算机集群或传统的分布式计算的不同之处[3]。
如图2.4所示,与集群计算不同,网格计算强调的是计算资源之间的跨网络域,且服务器之间几乎不可能互相连接。
图2.4 网格计算
举个简单的例子,有一些学术单位会对外征集计算资源,将家用计算机冗余的CPU周期用于帮助学术单位进行科学计算就是一种网格计算。客户端通过小程序的后台运行,与学术单位的一个中控节点连接,当计算机休眠后会在后台启动,从中控节点下载任务进行计算,最后将结果返回给中控节点,继而下载另一个任务。
网格计算主要针对广域网环境,是需要大量计算资源进行协同工作的一种体系,这与当今的区块链有异曲同工之妙,在后续章节中将会具体介绍区块链与分布式数据库的联系。