站在巨人的肩膀上,实现一个限流组件。 「闲来无事,主要用于学习~」
参考: ratelimiter4j kk-anti-reptile
rate-limiter是一个高度容错,低延迟,高性能的限流开发库/框架,提供了对HTTP接口的访问限流功能。其特点:
- 提供了各种灵活的配置方式,同时支持零配置纯编程使用模式
- 支持yaml, json等多种限流规则配置格式
- 丰富的限流维度,ip、api全局、ua、uid、自定义唯一标识
- 支持本地文件配置限流规则、注解、或者远程配置中心方式
- 使用SPI插件式开发模式,支持自定义限流规则格式,限流算法等
- 提供了基于内存的单机限流算法和基于Redis的分布式限流算法
- 丰富的限流算法,计数器固定窗口算法、计数器滑动窗口算法、漏桶算法、令牌桶算法...
- 支持黑白名单和鉴权功能
- 丰富的拦截器功能,如监控
- 高度容错,限流框架的任何异常都不会影响业务接口
- 低延迟,限流框架较小影响业务接口响应时间
- 支持不同粒度的接口限流,支持接口中包含restful url template variables
- 支持限流运行模式配置(监控模式|拦截模式)
- 丰富的限流后置操作,支持空处理、抛出异常、跳转到指定页面、返回json报文、返回验证码
- 灵活的集成方式,方便集成SpringBoot开发框架
功能 | 备注 | 进度 |
---|---|---|
丰富限流规则本地文件的配置 | 如支持自定义本地文件存储 | done |
丰富限流规则配置源 | 如apollo,配置源url | 未开发 |
优化环境配置支持 | 如整合SpringBoot配置、支持自定义配置文件路径 | 未开发 |
限流规则支持注解配置 | 未开发 | |
支持限流后置操作 | 如空处理、抛出异常、跳转到指定页面、返回json报文、返回验证码、监控报警... | 未开发 |
支持限流运行模式 | 如监控模式(只记录数据做监控,不限制)、拦截模式 | 未开发 |
支持更复杂的规则表达式 | api、时间单位、限制量、超时参数(旨在不影响业务性能)... | 未开发 |
整合成SpringBoot Starter包 | 方便使用方集成 | 未开发 |
支持作为一个独立服务系统部署 | 业务系统通过调用接口形式查看限流情况再决策 | 未开发 |
分布式限流算法支持redis集群 | 未开发 | |
appId改造为可选 | 未开发 | |
支持线程并发限制 | 未开发 | |
限流规则支持GET/POST等 schema | 未开发 | |
支持更多的限流算法 | 如计数器固定窗口算法、计数器滑动窗口算法、漏桶算法、令牌桶算法等 | 未开发 |
支持黑白名单和鉴权功能 | 未开发 | |
支持更加通用的限流 | 如db,自定义业务等,dubbo等 | 未开发 |
添加更加完善的拦截器 | 如监控拦截器等 | 未开发 |
丰富限流维度 | 如ip、ua、uid、自定义维度 | 未开发 |