常见的限流方式

前言

        最近几年,随着微服务的流行,服务和服务之间的依赖越来越强,调用关系越来越复杂,服务和服务之间的稳定性越来越重要。在遇到突发的请求量激增,恶意的用户访问,亦或请求频率过高给下游服务带来较大压力时,我们常常需要通过缓存、限流、熔断降级、负载均衡等多种方式保证服务的稳定性。其中限流是不可或缺的一环,这篇文章介绍限流相关知识。

限流是一种用于控制服务访问频率或请求并发量的技术,目的是保护服务免受滥用、恶意攻击或意外流量波动的影响。以下是一些常见的限流方式:

  1. 固定时间窗口限流: 将单位时间划分为固定的时间窗口,例如1秒,然后限制在该时间窗口内的请求次数。

  2. 滑动时间窗口限流: 类似于固定时间窗口,但窗口不断滑动,使其能够更灵活地适应流量的变化。

  3. 令牌桶算法: 请求以固定的速率向令牌桶中放入令牌,每次请求需要消耗一个令牌。当令牌桶中没有足够的令牌时,请求被拒绝或排队。

  4. 漏桶算法: 类似于令牌桶,但是请求以恒定速率流出,而不是按需消耗令牌。如果桶已满,请求将被拒绝或排队。

  5. 最大并发连接数限制: 设置服务能够处理的最大并发连接数,超过这个数目的请求将被拒绝或排队。

  6. 队列限流: 将请求放入队列中,然后按照处理能力逐个处理队列中的请求,超过队列容量的请求将被拒绝。

  7. 基于 IP 的限流: 对来自单个 IP 地址的请求进行限流,防止某个 IP 发起过多请求。

  8. 基于用户身份的限流: 根据用户身份、角色或其他标识进行限流,以确保每个用户的访问在合理范围内。

  9. 动态限流: 根据系统当前负载、响应时间等动态调整限流策略,以适应流量的变化。

  10. 熔断机制: 当服务出现故障或超过一定错误率时,暂时中断对服务的请求,防止故障扩散或雪崩效应。

这些限流方式可以单独使用,也可以结合使用,具体的选择取决于应用场景和需求。

你可能感兴趣的:(架构,网络,面试问题,限流,微服务限流)