限流算法
一、6种限流方案
- 系统层:IP黑名单;(防爬虫、ddos)
- 代理层:tomcat最大连接数、nginx最大连接数和连接速率
- 业务层:时间窗口、沙漏算法、令牌桶
二、业务层限流
- 时间窗口:
利用redis的zset,每次请求到来,清除60s前的请求,然后统计当前请求数量;
缺点:百万并发数据量太大、非原子性不准 - 沙漏算法:
利用redis4的redis-cell,由于获取令牌桶的速率被限制,实现分布式限流;
利用固定容量的队列,当队列超出长度时,等待或者阻断,实现单机限流; - 令牌桶:
利用guaua令牌算法以恒定速率生成令牌,只有获取令牌成功才能执行业务逻辑,实现单机限流;
利用redis4的redis-cell,由于获取令牌桶的速率被限制,实现分布式限流;
本文来自博客园,作者:SArtOnline,转载请注明原文链接:https://www.cnblogs.com/sartonline/p/16308869.html