只需要复制数据和功能就可以快速扩展事务。为成功做好计划,把系统设计为能够横向扩展的。不要让自己陷入如此困境:要进行纵向扩展时,却发现已经没钱购买更快更大的系统了。
当你发现系统中的客户和事务在快速增长,而系统却不能扩展到多个服务器上时,你会怎么做?理想情况下,应该研究你有哪些选择。是购买更大的服务器,还是花费更多的编程时间使软件能在多个服务器上运行。让应用程序或数据库能够在多个服务器上运行,就是所谓的横向扩展。继续让系统在更大的硬件上运行,则称为纵向扩展。在分析过程中,通过ROI计算,结论可能会是购买更大的硬件比花费技术资源来修改应用程序更便宜。虽然我们支持得出这种结论的分析方法,但对于超高速发展的公司和产品来说,这个结论可能是错误的。原因在于它可能没有考虑长期成本。把具有两个64位双核处理器的服务器换成具有四个处理器的服务器,其成本与从中得到的新增计算资源是成比例的(约2倍)。当我们继续购买具有更多处理器的大型服务器时,谬误就出现了。计算处理能力的成本曲线是条幂次定律曲线,其中成本的增长与更大的服务器提供的处理能力的增长不再成比例l假设你的公司在持续地成功与增长,那么你购买更大系统的成本就会随着曲线一直增长。虽然你可能已经为技术更新做了预算,但是仍可能会不得不用高得离谱的价格去购买新系统。而如果你的系统是能够横向扩展的,那么购买的系统就会便宜得多。整体说来,你总的成本支出会大大增加。当然,随着代码库的增大以及系统复杂度的增加,用于解决问题的编程资源的成本也会增加,但这种增长是线性的。因此,在本章开头的分析应该得出的结论是:尽早花时间修改代码进行横向扩展。
7个配置(内存和硬盘等)几乎完全相同的服务器的成本,唯一不同的是处理器的数量和每个处理器的核数量。图中采用的是一家大型服务器供应商的在线报价和配置。无可否认,两个双核处理器的计算资源与一个四核处理器的计算资源并不相等,但从成本上对比,它们的成本非常接近。请注意快速增长的曲线。
根据我们为上百个客户服务的经验,这种分析产生的结论几乎都是修改代码或数据库以进行横向扩展。这就是为f什么AKF Partners认定纵向扩展总是失败的原因所在。最终你总会遇到两种情况之一,即成本不合算了,或者没有更大型的硬件设备可用了。例如,我们有过这样一位客户,在把自己的顾客群分布到不同系统之后,他们依然有能力一直扩展数据库的硬件。最后,当采用了硬件供应商所提供的6台最大型的服务器后,达到了极限。每台这样的服务器需要花费300多万美金,硬件的整体花费接近2000万。由于顾客数量还在增长,所以他们还是要竭力扩展,于是他们同意了对数据库进行横向扩展的项目。他们选择用4台较小的服务器替换每1台大型的服务器。每台小服务器的成本是35万美金。最终,他们不仅成功实现了顾客增长所需的扩展,还节约了将近100万美金的成本。后来,这家公司一直在使用这些旧系统,直到最后这些系统过时,才采用低成本、更小的新系统。
大多数系统从最初设计时就能够在多台服务器上运行,或者能够被很容易地改为具有这种功能。对于大多数SaaS应用来说,只要把代码复制到多个应用服务器上,然后把应用服务器放在负载均衡器上,就可以实现这一点。应用服务器之间不需要互相通信,哪个服务器处理哪个请求是由负载均衡器决定的。如果某个应用需要记录状态,那么可以用负载均衡器的会话 cookie维护客户浏览器和特定的应用服务器之间的关联关系。一旦客户发起了最初请求,那么响应该请求的服务器就会一直处理该客户的请求,直到会话结束。横向扩展数据库通常需要更多的计划和编程工作,但就像本章开头解释的,这种投人是值得的。我们介绍了扩展应用程序或数据库的三种方法。它们在AKF扩展立方上被标识为X轴、Y轴和Z轴,分别对应于复制(克隆)拆分不同的东西(服务)和拆分相近的东西(客户)
“等等!”你可能会大喊,“Intel的创始人之一戈登?摩尔在1965年预言过,集成电路上的晶体管数目,每两年就会翻一番!”不错,近50年来,摩尔定律一直是对的,这点令人惊叹。问题是,这个“定律”并不是永恒的真理,戈登·摩尔在2005年的访谈中也承认了这一点。此外,如果你的公司真是一个超高速发展的网站建设公司,那么你的客户数或业务量不会每两年只翻一番,很可能每个季度就翻一番。如果依据摩尔定律扩展你的系统,那么无论是扩展应用程序还是扩展数据库,都可能会导致失败。
本文地址://www.xrqsnxx.com//article/3459.html