一、简单介绍
由于业务应用系统的负载能力有限,为了防止非预期的请求对系统压力过大而拖垮业务应用系统,必须采取流量控制措施。
服务接口的流量控制策略:分流、降级、限流
分流:扩容机器、单元化通道
降级:关闭非核心接口,保证核心接口链路的正常运行
限流:NG限流、业务系统限流、数据库限流
二、常用的限流算法
常见的限流算法有:令牌桶、漏桶、Redis计数器。
令牌桶算法(Token Bucket)
令牌桶大小固定,系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,则拒绝服务。如果令牌不被消耗,或者被消耗的速度小于产生的速度,令牌就会不断地增多,直到把桶填满。后面再产生的令牌就会从桶中溢出。最后桶中可以保存的最大令牌数永远不会超过桶的大小。
令牌桶的另外一个好处是可以方便的改变速度.