基于Redis的限流系统的设计
基于Redis的限流系统的设计,主要会谈及限流系统中限流策略这个功能的设计;在实现方面,算法使用的是令牌桶算法来,访问Redis使用lua脚本。 1、概念 限流是对系统的出入流量进行控制,防止大流量出入,导致资源不足,系统不稳定。 限流系统是对资源访问的控制组件,控制主要的两个功能:限流策略和熔断策略,对于熔断策略,不同的系统有不同的熔断策略诉求,有的系统希望直接拒绝、有的系统希望排队等待、有的系统希望服务降级、有的系统会定制自己的熔断策略,很难一一列举,所以本文只针对限流策略这个功能做详细的设计。 针对限流策略这个功能,限流系统中有两个基础概念:资源和策略。 资源 :或者叫稀缺资源,被流量控制的对象;比如写接口、外部商户接口、大流量下的读接口 策略 :限流策略由限流算法和可调节的参数两部分组成 注:熔断策略:超出速率阈值的请求的处理策略,是我自己理解的一个叫法,不是业界主流的说法。 2、限流算法 限制瞬时并发数 限制时间窗最大请求数 令牌桶 2.1、限制瞬时并发数 定义:瞬时并发数,系统同时处理的请求/事务数量 优点:这个算法能够实现控制并发数的效果 缺点:使用场景比较单一,一般用来...





