alibaba / alibaba/Sentinel

集群模式下的热点参数,setDurationInSec不生效

Open
#3,524 2 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.