业务的需求:服务器垂直还是水平扩展?

标签:技术前沿服务器存储CPU

访客:91853  发表于:2012-07-05 13:54:49

尽管最近面临的经济困难,仍然有一些小型企业表现良好并不断成长。许多这样的企业会觉得有必要扩大或向外扩展他们的应用基础设施,以跟上需求的步伐。


    许多企业早有先见之明,在基础设施创建之初就考虑到了既要满足当前的需要,又可以允许在未来有适度的扩展(或可伸缩性)。然而,随着业务的不断增长,他们往往会达到既有的数据库的能力不敷使用的时候。


    这是一个很典型的问题。它确实需要重新评估服务器硬件,并确定一个提升系统以处理更多的负载的计划。这里有几个不同的选择:垂直扩展或水平扩展。在你做决定的时候,需要考虑下述的一些问题。


    垂直扩展


    简单说来,垂直扩展就是升级原有的服务器或更换为更强大的硬件。这是比较直接的方法,比如说内存不足时就增加更多的内容。或者,花费一大笔钱为一个大型主机服务器增加存储吞吐量和/或计算能力。


    这种方法的优点是,购买更多内存是进行扩展的最便宜的方式之一。其缺点是,每台服务器所能支持的可扩展内存量都有一个上限。一旦现有的服务器达到这一上限,那么是时候更新到新服务了。


    如果主要问题是处理能力不足,一种有效的扩展方式是,升级到较新版本的双CPU服务器或四CPU服务器。一个小企业的预算可能不足以负担从四插槽到八插槽的升级,幸运的是,一般说来企业应用没有必要使用(八槽CPU)这样的计算能力。


    或许,性能上的瓶颈是缺乏足够的存储吞吐量。要实现更快的系统吞吐量,可能需要采取以下几种措施的组合或对某种方法加以适当变化:


    -在直接连接存储设备上增加更多的本地存储-这种方法便宜,但对多台主机的连接能力效果有限。


    -切换到存储区域网络(SAN)方法-这种方法比较昂贵,但在进一步扩展时有较大的灵活性。


    -购买固态硬盘(SSD)存储-这种方法非常快速也非常灵活,但是花费昂贵。

水平扩展


    水平扩展指的是通过增加更多的服务器来分散负载,从而实现存储能力和计算能力的扩展。这可以通过增加本地的刀片服务器(虽然有些人认为增加刀片服务器是一种垂直扩展形式),或者增加云端的虚拟机和服务器。决定采用什么类型的“水平扩展”时,需要考虑以下这些问题:


    -你是否想实现两个服务器同时写数据到同一个数据库中去,这样,所有的变更都立即复制到整个系统的服务器中去?在需要实时数据同步的应用中,这种方法具有优势。


    -通过负载均衡来实现的多服务器的数据读取能力是否能够满足您的要求?这种方法可以非常有效地处理高容量的查询,并且成本极低。


    -松散耦合互连的做法是业务的优势还是劣势?实现组件和流程的分开,对于减少互动和隔离故障有好处,但当你需要一个高层次的同步时,它就没那么大的好处了。


    -你是否在使用开源软件?这对水平扩展的软件许可费用和垂直扩展的硬件成本的比较会产生极大的影响。


    -如果切换到多台服务器,是否严重影响我们的应用的工作方式,或这对网络连接的要求有着显着的变化?类似这样的一些因素很容易就会使得IT资源的额外开支大幅上升。


    有时,水平扩展的方法不仅仅限于增加更多的服务器,也包括改变所用服务器的类型。例如,SQL服务器可能对某种类型的数据的存储和处理非常有效,但对另外一种类型的数据,可能并不是最好的解决方案。用于销售和物流的客户数据的组织方式,可能和用于其它业务流程内部数据的处理方式完全不同。


    很重要的一点是认真分析所存储的数据类型,数据是如何被使用的,以及数据相互之间的连接关系。这些因素将有助于确定是否切换或混合服务器。如果能在给定的IT预算下获得更好的性能和更高的效率,那么这样的分析还是物超所值的。


    在考虑水平扩展的时候,也可以考虑外包。对于那些IT人员较少和较缺乏的小企业,这一点尤为重要。服务器水平扩展的许多管理流程可以很容易地实现自动化。但仍然还有很多的管理工作要做,以免由于“变化的地方”和脚本太多造成项目的失败。


    在选择数据库和支持平台时,平台即服务(PaaS)和基础设施即服务(IaaS)也是很好的选择。事实上,一些小企业几乎摒弃了所有的本地服务器硬件,他们所有的数据库要求全部都通过云端来满足。


    第三种选择


    赚钱不易,花钱更需谨慎。在垂直或水平扩展之前,务必要仔细考虑:如果现有的基础设施并没有被有效地利用,那么,购买更多的空间和计算能力也不会从根本上改变现状。你能做的最好的一个方法就是,彻底的审查和调整在这服务器上运行的代码。软件方面的投资,可以避免当前不必要的硬件采购,即便在硬件扩展势在必行时,也可以提高新购硬件的效率。

评论(0)

您可以在评论框内@您的好友一起参与讨论!

<--script type="text/javascript">BAIDU_CLB_fillSlot("927898");