互联网技术架构——水平扩展

在实践中,我们发现,“向上扩展注定会失败”。这是因为,在超高速增长的环境里,公司计划以水平方式扩展(又称为向外扩展)至关重要。而大多数的水平扩展都是通过对跨越多个系统工作负荷的拆分或者复制完成的。


水平扩展

水平扩展是通过复制或拆分服务或数据库而分散事务负载的方法,与此相对的是向上扩展,即通过购买更大的硬件而实现的扩展。

向上扩展最终会停在一个点,要么是成本太高,要么是没有更大的硬件。而且四个八核处理器的计算资源也不等于两个八核处理器的两倍,因为还要耗费时间和资源优化可以并行的解决方案。

服务器上的水平扩展

大多数的SaaS应用可以通过简单地复制代码到多个应用服务器,然后把它们配置在负载均衡器的后面来实现。应用服务器彼此之间不必相互通知,从负载均衡器发来的请求可以由任何一个服务器来处理。如果应用必须跟踪状态,一个可能的解决方案是负载均衡器允许使用会话cookie,以维持客户的浏览器和特定的应用服务器之间的关系。一旦客户提交了初始请求,相应的服务器继续服务该客户直到会话结束。

数据库上的水平扩展

对数据库的扩展往往需要更多的规划和技术工作,可以使用复制数据库,拆分服务,拆分用户的方式实现数据库上的水平扩展。详细内容请参见链接


使用商品化系统

在生产环境中远离那些庞大的系统,尽可能采用小型廉价的系统。这样可以实现快速和低成本的增长,只采购必要的容量,而不浪费在尚未明确的容量需求上。

  • 设备供应商利润最高的产品往往是处理器最多的最大的产品。
  • 与有同等数量处理器的较小系统相比,这些更大更快的机器并非真正能够做更多的工作。
    • 以CPU为例,由于多处理器调度算法的低效率、内存总线访问速度冲突、结构障碍、数据障碍等原因,在添加CPU时,每个CPU的工作量比单个CPU的系统少。而在虚拟化环境中,管理虚拟机的开销随着物理机规模的增加而增加,效率最佳似乎是两个CPU或4个CPU的物理主机。
  • 考虑更大的系统可能会消耗更少的电力并降低成本。在电力成本的增加和系统成本的降低之间寻找一个合适的规模,可以最优化电力消耗、系统成本和计算能力。
  • 大型的系统投入了大量的资金,因此需要时间来维护和修复;而小型的系统非常便宜,如果坏掉,我们可能会轻松地丢弃它们,而不是投入大量的时间来修复。

使用托管方案扩展

把系统部署到三个或更多活的数据中心,以降低总体成本、增加可用性并实现灾难恢复。数据中心可以是自有设施、托管或云计算(IaaS或PaaS)实例。

避免拥有自己的数据中心,除非公司的规模大到可以通过建设和运行自己的数据中心来节省成本。

以三个数据中心为例。将完整的数据拆分为三部分,数据集A,B,C。每个数据中心包含一个数据集,而且每个数据集都有一半的数据被复制到其他的数据中心。这样,我们只需要至少两个数据中心存活,整个系统就能正常运作,而且在系统发生故障时,每个数据中心只需要具备150%的容量就可以运行100%的流量,而数据库永远需要200%的存储。

三数据中心配置的一个很大的好处是能够利用空闲容量创建测试区(如负载和性能测试),以及在需求高峰期利用这些闲置资源的能力。但是由于每个数据中心都在发挥作用,所以也带来了一些额外的操作复杂性。


使用云扩展

我们要有目的地利用云技术按需扩展。当需求是临时的、突增的、偶发的,响应时间不是产品的核心问题。要将其当成是“租用风险”——新产品对未来需求的不确定性,需要在快速改变或放弃投资间抉择。当公司从双活向三活数据中心迁移时,云可以作为第三数据中心。

  • 采用第三方云环境应对临时需求,如季节性业务变动、大的批处理任务或者是测试中需要的QA环境。
  • 当用户请求超过某个峰值时,把应用设计成可以从第三方云环境对外提供服务。扩展云以应对高峰期,然后再把活跃的节点数减少到基本水平。

在云环境中配置硬件只需要几分钟,但是在自己托管设施配置物理服务器需要几天甚至几周。所以当临时使用时,云的成本效益非常高。

  • 租赁有风险产品的系统容量更有意义,因为如果有风险就可以轻松地抛弃它,而不需要消耗硬件的费用。
  • 通常有些组件,诸如批量处理、测试环境或峰值容量,把它们放在云环境更有意义。因为云环境允许根据需要在非常短的时间范围内实现按需扩展。

提前做好扩展计划,以便在需求出现时可以轻松地拆分系统。扩展系统和数据中心,依靠廉价的商品化硬件,利用云来处理意外需求,为超高速成长做好准备。


想了解更多关于互联网技术架构:互联网技术架构专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值