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