DefaultController#canPass
public boolean canPass(Node node, int acquireCount, boolean prioritized) { //判断是限流还是限制并发数量,然后获取流量或并发数量 int curCount = avgUsedTokens(node); //如果两者相加大于限定的并发数 if (curCount + acquireCount > count) { ... return false; } return true; }这里首先调用avgUsedTokens,根据grade判断当前的规则是QPS限流还是线程数限流,如果两者之和大于count,那么返回false。
返回false之后会回到FlowRuleChecker的checkFlow方法,抛出FlowException异常。
到这里Sentinel的主流程就分析完毕了。