三种常见服务器架构:

  • SMP(Symmetric Multi-Processor),对称多处理结构。单主机架构。
  • NUMA(Non-Uniform Memory Access)非一致性内存访问。单主机架构。
  • MPP (Massive Parallel Processing)。海量并行处理结构。多主机架构。

SMP 架构

在 SMP 中所有的处理器都是对等的, 所有的 CPU 共享全部资源。它们通过总线连接共享同一块物理内存,这也就导致了系统中所有资源(CPU、内存、I/O 等)都是共享的。

当我们打开服务器的背板盖,如果发现有多个 CPU 的槽位,但是却连接到同一个内存插槽的位置,那一般就是 SMP 架构的服务器,日常中常见的 PC ,笔记本,手机还有一些老的服务器都是这个架构,其架构简单,但是拓展性能非常差。

对于 SMP 服务器而言,每一个共享的环节都可能造成 SMP 服务器扩展时的瓶颈,而最受限制的则是内存。由于每个 CPU 必须通过相同的内存总线访问相同的内存资源,因此随着 CPU 数量的增加,内存访问冲突将迅速增加,最终会造成 CPU 资源的浪费,使 CPU 性能的有效性大大降低。实验证明, SMP 服务器 CPU 利用率最好的情况是 2 至 4 个 CPU 。

NUMA 架构

NUMA 服务器的基本特征是具有多个 CPU 模块,每个 CPU 模块由多个 CPU( 如 4 个 ) 组成,并且具有独立的本地内存、 I/O 槽口等。由于其节点之间可以通过互联模块 ( 如称为 Crossbar Switch) 进行连接和信息交互,因此每个 CPU 可以访问整个系统的内存 ( 这是 NUMA 系统与 MPP 系统的重要差别 ) 。

显然,访问本地内存的速度将远远高于访问远地内存 ( 系统内其它节点的内存 ) 的速度,这也是非一致存储访问 NUMA 的由来。由于这个特点,为了更好地发挥系统性能,开发应用程序时需要尽量减少不同 CPU 模块之间的信息交互。

但 NUMA 技术同样有一定缺陷,由于访问远地内存的延时远远超过本地内存,因此当 CPU 数量增加时,系统性能无法线性增加。

MPP 架构

可以简单理解为刀片服务器,由多每个刀扇里的都是一台独立的 SMP 架构服务器,即由多台物理机组成。每个刀扇之间均有高性能的网络设备进行交互,保证了 SMP 服务器之间的数据传输性能。每个 SMP 服务器只访问本地的内存和存储,不会跨节点进行资源请求。而节点间的信息交互,称为数据重分配。

这样的架构提供了完全无共享系统结构,理论上可以无限扩展。但是 MPP 服务器需要一种复杂的机制来调度和平衡各个节点的负载和并行处理过程。常用的一种做法是添加一层系统级软件来隔离这种复杂度对开发人员的影响,如特定数据库系统。这样开发人员只需要与数据库系统交互,而由数据库系统实现后代 MPP 系统节点间的调度、并行。

相比 NUMA 来说更适合大规模的计算,唯一不足的是,当其中的 SMP 节点增多的情况下,与之对应的计算管理系统也需要相对应的提高。