集群模式下的热点参数,setDurationInSec不生效
- Dominant language
- Java
- Stars
- 23.1k
- Forks
- 8.1k
- PR merge metrics
- No merged PRs in 30d
Description
测试代码如下:
private void initParamFlowRules() {
List rules = new ArrayList<>();
ParamFlowRule ruleA = new ParamFlowRule();
ruleA.setResource("businessA"); // 资源名与注解一致
ruleA.setGrade(RuleConstant.FLOW_GRADE_QPS); // 限流维度(QPS/线程数)
ruleA.setDurationInSec(86400); // 统计窗口时间范围,例如设置为一天(86400秒)
ruleA.setCount(10); // 集群总配额为10 QPS
ruleA.setClusterMode(true); // 开启集群模式
ruleA.setParamIdx(0); // 参数索引,从0开始
// ruleA.setLimitApp("default");
ruleA.setClusterConfig(new ParamFlowClusterConfig()
.setFlowId(1001L) // 规则唯一ID(全局唯一)
.setThresholdType(ClusterRuleConstant.DEFAULT_CLUSTER_SAMPLE_COUNT) // 全局阈值模式
.setFallbackToLocalWhenFail(true) // Token Server 不可用时降级到本地
);
ParamFlowItem flowItemA = new ParamFlowItem().setObject("aaa").setCount(1).setClassType("java.lang.String");
ParamFlowItem flowItemB = new ParamFlowItem().setObject("bbb").setCount(3).setClassType("java.lang.String");
ruleA.setParamFlowItemList(Arrays.asList(flowItemA, flowItemB));
rules.add(ruleA);
ParamFlowRuleManager.loadRules(rules);
}
时间窗口是按照默认1s来计算的,setClusterMode()为false时,DurationInSec是生效的,请问有知道这个原因的吗?
如果ParamFlowClusterConfig加了tWindowIntervalMs,只有aaa生效,其它的值都不生效
版本:1.8.6
Contributor guide
Assessment
This issue has not been assessed yet.