限流算法

一、6种限流方案
  1. 系统层:IP黑名单;(防爬虫、ddos)
  2. 代理层:tomcat最大连接数、nginx最大连接数和连接速率
  3. 业务层:时间窗口、沙漏算法、令牌桶
二、业务层限流
  1. 时间窗口:
    利用redis的zset,每次请求到来,清除60s前的请求,然后统计当前请求数量;
    缺点:百万并发数据量太大、非原子性不准
  2. 沙漏算法:
    利用redis4的redis-cell,由于获取令牌桶的速率被限制,实现分布式限流;
    利用固定容量的队列,当队列超出长度时,等待或者阻断,实现单机限流;
  3. 令牌桶:
    利用guaua令牌算法以恒定速率生成令牌,只有获取令牌成功才能执行业务逻辑,实现单机限流;
    利用redis4的redis-cell,由于获取令牌桶的速率被限制,实现分布式限流;
posted @ 2022-05-25 12:01  SArtOnline  阅读(29)  评论(0编辑  收藏  举报