1. 序言
使用SentinelCore
搭建一个简单的限流项目,用其中最核心的逻辑理解Sentinel
2. 工程搭建
2.1. 引入依赖
1 2 3 4 5 6
| <dependencies> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> </dependency> </dependencies>
|
只需要这一个依赖就够了
2.2. Java中使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| import com.alibaba.csp.sentinel.Entry; import com.alibaba.csp.sentinel.SphU; import com.alibaba.csp.sentinel.slots.block.BlockException; import com.alibaba.csp.sentinel.slots.block.RuleConstant; import com.alibaba.csp.sentinel.slots.block.flow.FlowRule; import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import java.util.ArrayList; import java.util.List;
public class SentinelJavaApp { public static void main(String[] args) { initFlowRules(); int count=0; while (count<100) { count++; try (Entry entry = SphU.entry("HelloWorld")) { System.out.println("hello world"); } catch (BlockException ex) { System.out.println("blocked!"); } } }
private static void initFlowRules(){ List<FlowRule> rules = new ArrayList<>(); FlowRule rule = new FlowRule(); rule.setResource("HelloWorld"); rule.setGrade(RuleConstant.FLOW_GRADE_QPS); rule.setCount(20); rules.add(rule); FlowRuleManager.loadRules(rules); } }
|
对于SphU
,这是流量控制器,翻译器翻译过来大致为
用于记录统计数据和执行资源规则检查的基本Sentinel API。从概念上讲,需要保护的物理或逻辑资源应该被条目包围。的如果满足任何条件,对该资源的请求将被阻止,例如。当任何规则的阈值被超过时。一旦被阻塞,就会抛出一个BlockException。为了配置标准,我们可以使用XxxRuleManager。loadRules()加载规则。如下代码为例,“abc”表示受保护资源的唯一名称
其方法主要是entry方法,用于获取流量限制
