流量削峰方案

百度百科定义:

如果观看抽奖或秒杀系统的请求监控曲线,你就会发现这类系统在活动开放的时间段内会出现一个波峰,而在活动未开放时,系统的请求量、机器负载一般都是比较平稳的。为了节省机器资源,我们不可能时时都提供最大化的资源能力来支持短时间的高峰请求。所以需要使用一些技术手段,来削弱瞬时的请求高峰,让系统吞吐量在高峰请求下保持可控。

流量削峰方案:

无损方案:排队、验证、分层过滤,不会损失用户发出的请求。

有损方案:限流、熔断,会损失用户发出的请求。

排队

用消息队列来缓冲瞬时流量,把同步的直接调用转换成异步的间接推送,中间通过一个队列在一端承接瞬时的流量洪峰,在另一端平滑地将消息推送出去。

常见的消息中间有RocketMQ、Kafka、RabbitMQ等。

验证

对请求加以验证,增加请求的复杂度,延缓请求。同时也可以防止恶意请求和攻击。

比如:图形验证码、滑动验证码、短信验证码等。

分层过滤

采用“漏斗”式设计来处理请求,在不同的层次尽可能地过滤掉无效请求,让“漏斗”最末端的才是有效请求。

限流

常见的限流算法有滑动窗口、令牌桶、漏桶、计数器。

限流的方式有接口限流、用户限流、IP限流、服务整体请求量限流。

可以动态限流,创建容器监控,然后监听容器CPU、内存等指标运行情况,达到阈值启用限流。也可以放行核心请求,限制非核心请求。

熔断

线程池隔离:根据线上的生产情况对某个接口在高峰期的QPS进行合理的预估之后,对接口根据预估值给定一个合理的线程数,如果出了故障,那么接口所在的服务器最多分配的线程数会被限制在这个数量之内,这样不会导致系统资源被耗尽,同时,当高峰期接口被调用的时候,hystrix可以通过设置降级策略对请求返回。

猜你喜欢

转载自blog.csdn.net/Anenan/article/details/114978342
今日推荐