Sentinel笔记——本地搭建

构建springboot项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

引入sentinel-core依赖

在pom.xml中引入sentinel-core的依赖

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-core</artifactId>
    <version>1.8.0</version>
</dependency>

编写代码

  1. 定义限流规则
    限流规则分四步:

    • 创建存放限流规则的集合
    • 创建限流规则
    • 将限流规则存放到集合中
    • 加载限流规则

    具体代码实现如下:

    //定义限流规则
    //@PostConstruct  当前类的构造函数执行之后执行有该注解的方法
    @PostConstruct
    public void initFlowRules() {
        //1. 创建存放限流规则的集合
        List<FlowRule> rules = new ArrayList<>();
        //2. 创建限流规则
        FlowRule rule = new FlowRule();
        //定义资源,资源就是限流规则会对那个资源生效
        rule.setResource("Hello");
        //定义限流规则类型,RuleConstant.FLOW_GRADE_QPS表示QPS限流类型
        rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
        //定义QPS每秒能通过的请求个数
        rule.setCount(2);
        //3. 将限流规则存放到集合中
        rules.add(rule);
        //4. 加载限流规则
        FlowRuleManager.loadRules(rules);
    }
    
  2. 使用限流规则

    @GetMapping("hello")
    public String hello() {
        //使用限流规则
        try(Entry entry = SphU.entry("Hello")) {//限流入口
            return "hello Sentinel";//被保护的资源
        } catch (BlockException e) {
            return "系统繁忙,请稍后";//被限流或者被降级的操作处理
        }
    }
    

测试

启动上述项目
如果项目启动成功,并且出现如下的INFO,则说明Sentinel限流规则已生效。
在这里插入图片描述

在这里我的端口号默认是8080,所以直接在浏览器中输入
localhost:8080/hello
在这里插入图片描述
点击刷新得到的结果也是正常的hello Sentinel,如果快速点击刷新则会显示如下:
在这里插入图片描述
此时说明被限流了,因为我们上述代码中设置了rule.setCount(2);

在上述运行成功后控制台输出的INFO中输出的路径就是日志所在的路径,
也就是上述控制台信息图标蓝的url就是本地的Sentinel的日志,日志如下(日志较多,查看时间最近的名字最长的那个):
在这里插入图片描述
在这里插入图片描述

启动Sentinel控制台

  1. 下载Sentinel控制台jar包(最新下载地址:https://github.com/alibaba/Sentinel/releases)
  2. 运行jar包:
    java -Dserver.port=9000 -jar sentinel-dashboard-1.8.0.jar
    
    注意上述9000是自定义的控制台的端口号,运行的jar注意是自己下载的那个jar
    运行成功后在浏览器输入localhost:9000即可进入Sentinel控制台
    登录账号和密码都是默认sentinel
    在这里插入图片描述
    注意,本地应用还没有接入到本地的控制台,所以我们还需要继续进行配置。

本地应用接入到本地控制台

引入依赖

	<!--本地应用接入到本地控制台的依赖-->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-transport-simple-http</artifactId>
            <version>1.7.2</version>
        </dependency>

配置本地应用的JVM参数

在这里插入图片描述
在这里插入图片描述

-Dcsp.sentinel.dashboard.server=localhost:9000 -Dproject.name=SentinelQuickStart

-Dcsp.sentinel.dashboard.server=localhost:9000 :设置Sentinel控制台的主机地址和端口号,这里就是我们本机地址和之前设置的端口号9000
-Dproject.name=SentinelQuickStart :设置本地应用在Sentinel控制台中的名称

测试

上述配置完成后,重新启动web项目

启动成功后在浏览器先访问一次localhost:8080/hello然后刷新Sentinel控制台才会出现如下:
在这里插入图片描述


版权声明:本文为qq_43524048原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。