微服务-API网关-限流

限流介绍

我们在API网关中已经介绍了,限流是保护网关的手段之一,和身份认证以及鉴权一起组成安全防御大闸。其目的是对并发请求进行限速或限制一个时间窗口内请求的数量, 一旦达到阈值就排队等待或降级甚至拒绝服务。

为啥要做限流

  • 在API网关接受的请求量超过了最大处理能力后,网关就会出现问题,不能在正常提供服务,所以要限流。
  • 为了防止其他人通过DDOS恶意攻击网关。
  • 某些API处理时很消耗系统资源,频繁的调用会造成系统瘫痪,所以要控制这些API接口的调用频率。
  • 在API网关是面对公司外部使用的情况下,通过限制API调用频率来减少不必要的资源浪费。
  • 根据重要性给客户端用户划分不同的级别,级别越低,流量限制越严格。

限流的几种实现方式

根据上面列出的原因,我们自然知道限流该怎么限制法,但是具体要怎么实现呢?也就是该怎么设计算法来实现呢?

计数器

网关每接受到一个请求,计数器就增加1,每处理完一个请求,计数器就减少1,计数器有最大值和最小值,最小值是0,最大值根据需要来设定,最大值相当于缓冲区,超过这个缓冲区,网关将不再接受请求。

由于请求会由不同的线程或者协程处理,所以计数器需要放在可以共享的地方,比如说内存数据库Redis里面。

进一步的,如果我们想细粒度的控制流量,就需要设置多个不同的计数器,比如,某些特定的API需要设置特定的计数器,不同的客户端要设置不同的计数器。除此以外网

你可能感兴趣的:(微服务,网关,api网关,微服务,限流)