限流组件设计

1. 要求

设计一个限流组件,要求qps达到百万级别,精确度99.9%

2. 设计

限流器做成一个中间键还是在后台服务中写?

架构若是微服务架构,在设计中包含了一个API网关来执行认证、IP白名单等,你可以在API网关上添加一个速率限制器。

如何创建速率限制规则?这些规则储存在哪里?

写在配置文件中,限流服务可以读取配置生成限流规则并初始化。后续再分配到各个网关服务的限流配合。

百万级qps怎么承载?

redis可以承载百万qps =>redis模型结构?

限流组件设计_第1张图片

做一个分布式限流服务,限流规则写在配置文件中,并缓存。请求过来,去访问redis,查看是否被限流。

限流组件设计_第2张图片

redis本身是可以支持百万qps的。进一步为了缓解redis压力,每个限流服务节点,都会缓存可以使用的qps大小,后续定时去更新缓存的qps大小。

3. 参考

系统设计:设计一个分布式限流器 | 精灵王

如何设计一个分布式限流器(distributed rate limiter)

你可能感兴趣的:(系统架构,redis)