限流解决方案

限流解决方案

  • 背景
  • 限流常用的算法
  • 基于guava限流实现
  • 基于sentinel限流实现
  • 代码

背景

因为互联网系统通常都要面对大并发大流量的请求,在突发情况下(最常见的场景就是秒杀、抢购),瞬时大流量会直接将系统打垮,无法对外提供服务。那为了防止出现这种情况最常见的解决方案之一就是限流,当请求达到一定的并发数或速率,就进行等待、排队、降级、拒绝服务等。
例如,12306购票系统,在面对高并发的情况下,就是采用了限流。 在流量高峰期间经常会出现提示语;"当前排队人数较多,请稍后再试!

限流常用的算法

  • 令牌桶算法

令牌桶算法是目前应用最为广泛的限流算法,顾名思义,它有以下两个关键角色:

令牌 :获取到令牌的Request才会被处理,其他Requests要么排队要么被直接丢弃;
桶 :用来装令牌的地方,所有Request都从这个桶里面获取令牌

限流解决方案_第1张图片

你可能感兴趣的:(微服务解决方案,java,服务器,数据库)