多进程多线程虽然让多任务并行处理的性能大大提升,本质还是分时系统,并不能做到时间上真正的并行,目前解决方案:SMP(对称多处理器结构),NUMA(非一致存储结构),MPP(海量并行处理结构)
SMP
对称多处理器结构,是指服务器多个CPU对称工作,无主次或从属关系。各CPU共享相同的物理内存,每个CPU访问内存中的任何地址所需时间是相同。
系统中所有资源共享(cpu,内存,I/O),这种原因扩展能力有限。
对SMP服务器进行扩展的方式包括增加内存、使用更快的CPU、增加CPU、扩充I/O(槽口数与总线数)以及添加更多的外部设备(通常是磁盘存储)。
NUMA
具备多个cpu模块,每个cpu模块由多个cpu(4)组成,并且具有独立的本地内存,I/O槽口等。
由于其节点之间可以通过互联模块(Crossbar Switch)进行·连接和信息交互,因此每个CPU可以访问整个系统内存(NUMA系统与MPP系统的重要差别)。显然,访问本地内存速度将远远高于访问远地内存(系统内其它节点的内存)的速度,非一致存储访问NUMA的由来。
MPP
在MPP系统中,每个SMP节点也可以运行自己的操作系统、数据库等。但和NUMA不同的是,它不存在异地内存访问的问题。换言之,每个节点内的CPU不能访问另一个节点的内存。节点之间的信息交互是通过节点互联网络实现的,这个过程一般称为数据重分配(Data Redistribution)。
但是MPP服务器需要一种复杂的机制来调度和平衡各个节点的负载和并行处理过程。目前一些基于MPP技术的服务器往往通过系统级软件(如数据库)来屏蔽这种复杂性。举例来说,NCR的Teradata就是基于MPP技术的一个关系数据库软件,基于此数据库来开发应用时,不管后台服务器由多少个节点组成,开发人员所面对的都是同一个数据库系统,而不需要考虑如何调度其中某几个节点的负载。