开发者学堂课程【企业级互联网分布式系统应用架构学习:应用层横向扩展——负载均衡】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/369/detail/4391
应用层横向扩展——负载均衡
内容介绍
一、调整架构
二、需求场景
三、应对策略
四、配置过程
五、具体效果
如何提高应用并发度。
第一,如何使得应用能够更好的横向扩展。
第二,要更好地利用应用层的缓存。
第三,同步转异步。把大的并发请求同步接触下来后快速地转成异步处理。
第四,对数据库层做读写分离,提高数据库层的io能力。
进行应用横向扩展要在架构上进行调整。过去单台服务器对客户进行服务,无法进行横向扩展。
一、调整架构
需要在 web 服务器或应用服务器之前搭建负载均衡服务。通过负载均衡服务可以把用户的访问请求分发到后台的 web 服务器上。
(1)阿里云的负载均衡服务可以进行四层或者七层负载。
应用若是 tcpip 协议,可以通过四层负载来进行流量的分发和均衡。若应用的是 web基于 htp 的服务,可以通过七层负载进行流量分发。具备负载均衡基础后,就可以动态地扩容应用服务器或 web 服务器。
二、需求场景
1、比如在游戏客户的场景里,通常在中午十二点时服务器的压力会比较大。用户忙了一上午后中午休息,可能玩游戏打怪,这时服务器的压力就会很大。这个场景中需要进行定时的扩展,使得应用服务器和 web 服务器能得以扩容,以承载更大的压力。
2、对于电商平台来说,如阿里巴巴的双十一,这一天的压力会很大。平常可能十台服务器就可以支撑访问,但在秒杀或促销的过程中,可能需要一百台服务器。负载突然增大,需要及时对服务器进行扩容。
三、应对策略
1、超配资源。预测峰值需要多少服务器,若电商一个网站的峰值需要一百台服务器,那就超配资源,按照一百台的经济规模来进行配置。这样做风险最低,但会造成资源的大量浪费。因为在正常访问流量的情况下,只需要十台服务器。
2、进行人工输出。通过运维人员来进行资源的调度和分配。通过观察到的监控指标如 CPU 或 io,超过警戒线后,再进行资源的分配。这种方式可以在一定程度上减少资源的浪费。但其中隐藏着巨大的风险。当人工判断资源即将耗尽时,若临时加资源的操作耗时过长,可能会导致整个系统的雪崩。如十台服务器要加到十一台或十二台,但在预定时间内没有配置完成,前面十台就要承载巨大的压力,甚至其中某一台可能会出现故障。这时候只有九台来承载压力,更加承载不住,会导致整体的系统雪崩。
3、最好的模式是由自动的平台判断什么时候弹性地增加资源。阿里云有弹性伸缩服务,可以根据用户的业务需求或时间策略自动调整计算资源的数量。
比如在图中,可以设定一个条件。当几台服务器的 CPU 平均值大于百分之八十时新增加一系列的服务器;
当 CPU 的平均负载持续一段时间小于百分之三十时,减少一些服务器。
通过这样的方式可以使整个架构更加弹性,能够更大程度支撑用户的访问。
除了像 CPU, IO 这样值的判断外,也可以定时。比如打怪,用户十二点打怪,可以在十一点半动态地增加计算。
四、配置过程
原理分析比较简单,实际上需要很多技术配合。产生的新服务器的配置,一定要与原来已经部署好的服务器的配置相同。应用也要提前配置好。
这些技术在阿里云都是通过自动化的方式来实现的。例如,先把弹性资源即部署好的内容做成镜像。需要产生的动态资源都基于镜像产生。同时,负载均衡服务也能够感知到新的资源的产生,之后把流量分发到这些资源上。配置过程实际上非常简单,设定触发资源扩张或资源扩容的条件,再设定扩容的规模即可。
五、具体效果
1、实际测试。
这个场景中,预先配置好两个服务器来支撑正常的用户访问。当用户的访问突然增大时,机器的 CPU 处于非常高的位置,触发了预设的条件。另外的服务器自动地产生,并且加入到服务的集群里。
当压力情况缓解后,从图上观测到 CPU 已经持续下降,这时刚才新加的两台机器就可以退出服务。最终整体的架构又恢复到两台的状况。
总结
通过云计算技术,可以非常好地进行横向的扩容。但需要具备多项技术的支撑,如负载均衡服务、云服务器资源能够做成镜像、快速弹性地部署等。