限流策略:
1.利用redis过期时间来限流(集群模式)
2.google (单机模式)
RateLimiter.create(100);
if (!generateverifycodeRateLimiter.tryAcquire()) { return "手速太慢"; }
3.阿里巴巴sentinel(集群模式)
sentinel持久化模式
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-zookeeper</artifactId> </dependency>
<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
@Bean public void loadRules() { final String remoteAddress = "192.168.25.11:2181"; final String path = "/limit/sentinel-flow-rules"; ReadableDataSource<String, List<FlowRule>> flowRuleDataSource = new ZookeeperDataSource<>(remoteAddress, path, source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {})); FlowRuleManager.register2Property(flowRuleDataSource.getProperty()); }
启动sentinel-dashboard即可完成限流操作