削峰填谷
瞬时集中突发性的流量在系统中是很常见的问题,在系统的架构中需要针对相关的业务场景做良好的设计;不仅维护系统的稳定,还能很好的解决业务问题,提高并发性能。削峰填谷是在应对突发性流量的时候最常用的设计思想。
问题分析:体现在应用的处理请求的能力是有限的,但是请求的数量不是均衡的,通常具有瞬时性,时段性;什么意思呢,就是在某个时间端,请求的流量会突增,甚至超过系统所能处理的请求,之后可能又突降,系统空闲资源多;就形成了基于系统负载能力上下的流量高峰低谷。显然这会造成系统的不稳定,甚至系统的雪崩,所以在系统架构设计的时候需要考虑这点。
案例:秒杀业务,上游业务发起下单请求,下游业务执行秒杀业务(库存检查,库存冻结,余额冻结,生成订单等等),下游业务处理的逻辑是相当负载的,并发能力是有限的,如果上游服务不做限流策略,瞬时可能把下游服务压垮,甚至造成雪崩,服务不可用。
策略:通常我们会在网关层做流量的限制,就是通常说的限流;同时会部署更多的下游服务实例,来分担流量压力,就是通常说的负载均衡;但这是不够的,在实际业务场景中我们很可能没有足够的服务器资源,或者说为了某个场景使用大量服