一、限流的作用
能够避免系统被瞬间的流量访问压垮
二、限流方案的选择
1、自定义令牌桶算法
2、Google的guava
3、线程池隔离+线程池的动态管理
4、Redis计数器 + 拦截器
5、Nacos+sentinel
我们这边采用的是sentinel,其他的用户可以根据自己业务自行选择。
三、sentinel的热点参数限流
能够根据请求参数进行流量控制。例如用户账号、IP
1、引入依赖
2、热点参数限流
注意:
若 entry 的时候传入了热点参数,那么 exit 的时候也一定要带上对应的参数(exit(count, args)),否则可能会有统计错误。
3、通过 ParamFlowRuleManager 的 loadRules 方法更新热点参数规则
需要代码可以去这里GitHub 或 这里gitee 找