FlowControl(流量控制)
FlowControl想要解决的问题是控制api访问次数,防止恶意调用api。支持分布式应用的使用。
spring boot 支持flowcontrol-spring-boot-starter
原理
拦截链接并计数,如果超过次数,返回错误信息,没有超过次数则通过。
使用了分布式锁来控制准确的拦截。
将访问数据保存到redis来保证分布式下的运用。
分布式下运用注意要redis访问的是同一个数据库
如何使用
- 配置流量控制信息
- 实现接口FlowControlConfigurer
public class CustomFlowControlConfigurer implements FlowControlConfigurer {/*** * 配置redis客户端 */@Overridepublic RedissonClient redissonClient() {Config config = new Config();config.useSingleServer().setAddress("redis://localhost:6379");RedissonClient redisson = Redisson.create(config);return redisson;}/*** * 配置拦截成功后-执行的动作 */@Overridepublic FlowCon