另一种类型的多处理器系统是一个集群系统,它汇集了多个CPU。集群系统不同于1.3.2节中描述的多处理器系统,因为它们是由两个或多个单独的系统-----或者节点连接在一起;每个节点通常是一个多核系统。这样的系统被认为是松散耦合的。我们应该注意到,集群的定义不是具体的;许多商业和开源的软件包都在努力定义集群系统是什么,以及为什么一种形式比另一种更好。普遍接受的定义是集群计算机共享存储并通过局域网(如第19章所述)或更快的互连(如InfiniBand)紧密连接。

集群通常用于提供高可用性服务,即即使集群中的一个或多个系统发生故障也将继续提供服务。通常,我们通过在系统中添加冗余级别来获得高可用性。一层集群软件在集群节点上运行。每个节点可以监视其他节点中的一个或多个(通过网络)。如果被监视的机器发生故障,监视机器可以拥有其存储所有权,并重新启动在故障机器上运行的应用程序。应用程序的用户和客户端只看到服务的短暂中断。

高可用性提供了更高的可靠性,这在许多应用程序中是至关重要的。继续按幸存硬件的级别提供服务的能力称为优雅降级[graceful degradation]。一些系统超越了优雅降级,则被称为容错[fault tolerant],因为它们可能遭受任何单个组件的失败,并且仍然继续运行。容错需要一种机制,允许失败可以被检测到,诊断,如果可能的话,对失败进行纠正。

集群可以是不对称的,也可以是对称的。在非对称集群中,一台机器处于热备用模式,而另一台机器正在运行应用程序。热备份主机只监视活动服务器。如果该服务器失败,热备份主机将成为活动服务器。在对称集群中,两个或多个主机正在运行应用程序并相互监视。这种结构显然更高效,因为可以利用所有可用的硬件。但是,它确实需要有超过一个的程序正常运行。

由于集群由几个通过网络连接的计算机系统组成,集群也可以用来提供高性能计算【high-performance computing】环境。这样的系统可以提供比单处理器甚至SMP系统更大的计算能力,因为它们可以在集群中的所有计算机上同时运行应用程序。但是,应用程序必须是专门为充分利用集群而编写的。这涉及一种称为并行化【parallelization】的技术,该技术将程序划分为独立的组件,这些组件在计算机或集群中的计算机的各个核心上并行运行。通常,设计这些应用程序的目的是,一旦集群中的每个计算节点解决了问题的一部分,那么所有节点的结果将被合并为最终解决方案。

其他形式的集群包括并行集群和广域网(WAN)上的集群(如第19章所述)。并行集群允许多个主机在共享存储上访问相同的数据。由于大多数操作系统都不支持多主机同时访问数据,因此并行集群通常需要使用特殊版本的软件和应用程序的特殊版本。例如,Oracle Real Application Cluster是Oracle数据库的一个版本,它被设计为在一个并行集群上运行。每台机器运行Oracle,软件的一个层跟踪对共享磁盘的访问。每台机器都可以完全访问数据库中的所有数据。为了提供这种共享访问,系统还必须提供访问控制和锁定,以确保不会发生冲突操作。这个功能,通常称为分布式锁管理器【distributed lock manager】(DLM),包含在一些集群技术中。

集群技术正在迅速变化。一些集群产品支持集群中容纳数千个系统,以及以英里为间隔的集群节点。如第11.7.4节所述,存储区域网络(SANs)使许多这些改进成为可能,它允许许多系统附加到存储池中。如果应用程序及其数据存储在SAN上,那么集群软件可以将应用程序分配到任何连接到SAN的主机上运行。如果主机失败,那么任何其他主机都可以接管。在数据库集群中,数十台主机可以共享相同的数据库,极大地提高了性能和可靠性。图1.11描述了集群系统的一般结构。

下面一起看一下桌面PC的主板与处理器插座示意图:

一旦它的插槽被填充,这个板子是一个功能齐全的电脑。它由包含一个CPU的处理器插座、DRAM插座、PCIe总线槽和各种类型的I/O连接器组成。即使是成本最低的通用CPU也包含多个内核。一些主板包含多个处理器插座。更先进的计算机允许多个系统板,创建NUMA系统。

results matching ""

    No results matching ""