目录

[TOC]

背景

基于限流的控制在很多程序中都有需要.

  1. 请求流量控制,防止过量订单同时到达拖垮服务器
  2. 下游系统为了平稳运行,对上游系统流量控制

定时key (string)

  1. 每次请求调用key +1
  2. 达到阀值,返回请求失败
  3. 触发阀值 请求失败 修改服务状态 此时请求不再恢复

令牌桶

  1. 定时持续的线程输入令牌至于 到达水位线后不再添加
  2. 请求作为消费者消费令牌
  3. 如果令牌数=1,触发风控, 停止交易. (风控生效记录状态需要手动矫正)

基于时间戳切片 set 通过scoore统计

  1. 在set中创建对应秒切片
  2. 每次请求对响应秒切片+1
  3. redis score统计华东窗口时间内的流量总数
  4. 触发阀值 请求失败 此时请求不再恢复