cale Out 按字面意思是超过尺寸范围,而Scale Up则是按比例增高。即使用靠增加处理器来提升运算能力和增加独立服务器来增加运算能力。从IT架构的角度来说:Scale out代表分布式计算的,Scale up代表以主机或机箱式为主的扩展CPU或内存存储的。

   

    对于服务器体系来说必须要考虑的一点就是可扩展性(Scalability)。除非业务永不增长,否则随着使用人数不断增多,服务器就一定会很快达到性能和并发极限。解决这个问题,通常只有两个办法:即代表分布式计算的Scale out和以主机或机箱式为主的Scale up。

    Scale Out(向外扩展):就是指企业可以根据需求增加不同的服务器应用,依靠多部服务器协同运算,借负载平衡及容错等功能来提高运算能力及可靠度。

    Scale Up(向上扩展):指企业后端大型服务器以增加处理器等运算资源进行升级以获得对应用性能的要求。

    在现今这两种技术已经没有明显的区别,各个提供商不仅提供用于分布式计算的UnixWindows平台,还提供用于集中式计算的UnixWindows平台。甚至传统的集中式计算大型机也正具有分布式计算的性质——如在IBM zSeries服务器上使用Linux和z/VM的虚拟性能,就是其中的证明。

    但是更大更强的服务器同时也是更昂贵的,往往成本会大于部署大量相对便宜的服务器来实现性能的提升。而且服务器性能所能提高的程度也有一定的上限(分布式的部署相对来说性能提高的上限更高些)。所以一种呼声是应该使用向外扩展(Scale Out)来实现可扩展性,同时可以让使用者得以保留通过增加服务器以提升系统能力的后路。

    但是在实现中也有很多困难需要解决:

    首先,要想成功地实现向外扩展架构必须解决复杂的分布式计算问题(相对来说Scale Up方案不需要考虑这个问题),而这个问题的解决往往需要很复杂的技术和相对多的资金(

 

比如说我就没有这个技术和这些钱......)。大型站点如Google、Yahoo和Amazon.com,都自行研发大量相关技术。

    其次,Scale Out方案还需要对原先是用的软件进行大量的重写工作,以保证系统能在分布式服务器上运行(Scale Up方案则对现有软件几乎没有改动要求)。这一步往往是每个公司的开发人员的噩梦。一个不好会使开发人员的所有工作白费。

    再者,Scale Out方案始终面临着数据集中的问题,即拆分过的数据在服务器逻辑体系中仍然是各自相对集中的而非无限随意拆分。如果大量的逻辑放在数据库服务器一端,数据库服务器将会使得系统失去Scale out的能力和可能。因此,要保证Scale out的能力就必须保证数据库只处理实质性的数据提交和不可避免的数据查询,对于能够避免的数据查询和非实质性数据提交都应该想办法予以避免。而具体的策略和方案相对没有最优的方法。

    现在的大多数平台都提供了系统扩展方面的支持,但没有任何一种平台技术能够解决所有的问题。