代码拉取完成,页面将自动刷新
同步操作将从 wkiny/RateLimiter 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
FlowControl想要解决的问题是控制api访问次数,防止恶意调用api。支持分布式应用的使用。
spring boot 支持flowcontrol-spring-boot-starter
拦截链接并计数,如果超过次数,返回错误信息,没有超过次数则通过。
使用了分布式锁来控制准确的拦截。
将访问数据保存到redis来保证分布式下的运用。
分布式下运用注意要redis访问的是同一个数据库
public class CustomFlowControlConfigurer implements FlowControlConfigurer {
/***
* 配置redis客户端
*/
@Override
public RedissonClient redissonClient() {
Config config = new Config();
config.useSingleServer().setAddress("redis://localhost:6379");
RedissonClient redisson = Redisson.create(config);
return redisson;
}
/***
* 配置拦截成功后-执行的动作
*/
@Override
public FlowControlInterceptAction flowControlInterceptAction() {
return new DefaultFlowControlInterceptAction();
}
/***
* 配置拦截数据来源
*/
@Override
public FlowControlDao flowControlDao() {
return new InMemoryFlowControlDao();
}
/***
* 配置redis key的命名策略
*/
@Override
public RedisKeyNameStrategy redisKeyNameStrategy() {
return new DefaultRedisKeyNameStrategy();
}
}
@Configuration
public class SpringMvcConfig extends WebMvcConfigurerAdapter {
@Autowired
private CustomFlowControlConfigurer flowControlConfigurer;
/***
* 使用servlet的filter
*
* @return
*/
@Bean
public FilterRegistrationBean testFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new FlowControlFilter(flowControlConfigurer));
registration.addUrlPatterns("/*");
registration.setName("flowControlFilter");
registration.setOrder(1);
return registration;
}
}
@Configuration
public class SpringMvcConfig extends WebMvcConfigurerAdapter {
@Autowired
private CustomFlowControlConfigurer flowControlConfigurer;
/***
* 使用springmvc的interceptor
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
FlowControlHandlerInterceptor flowControlHandlerInterceptor = new FlowControlHandlerInterceptor(
flowControlConfigurer);
registry.addInterceptor(flowControlHandlerInterceptor).addPathPatterns("/**");
super.addInterceptors(registry);
}
}
Flow Control is Open Source software released under the Apache 2.0 license
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。