• Sentinel的快速入门,三分钟带你体验流量控制


    什么是流量控制

    流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel
    作为一个调配器,可以根据需要把随机的请求调整成合适的形状,如下图所示:

    在这里插入图片描述

    流量控制设计理念

    流量控制有以下几个角度:

    资源的调用关系,例如资源的调用链路,资源和资源之间的关系;

    运行指标,例如 QPS、线程池、系统负载等;

    控制的效果,例如直接限流、冷启动、排队等。

    Sentinel 的设计理念是让您自由选择控制的角度,并进行灵活组合,从而达到想要的效果。

    上面介绍完了,下面带大家来快速体验一下sentinel,查看一下他的效果。

    第一步,创建一个springboot工程

    在这里插入图片描述

    第二步,引入sentinel依赖

     		<dependency>
                <groupId>com.alibaba.csp</groupId>
                <artifactId>sentinel-core</artifactId>
                <version>1.7.2</version>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    第三步,编写TestController类

    在这里插入图片描述

    第四步,编写sentinel的相关方法

     @PostConstruct
        public void initFlowRules() {
    
            List<FlowRule> rules = new ArrayList<>();
    
            FlowRule flowRule = new FlowRule();
    
            flowRule.setResource("testSentinel");
    
            flowRule.setGrade(RuleConstant.FLOW_GRADE_QPS);
    
            //限流一秒钟超过两次
            flowRule.setCount(2);
    
            rules.add(flowRule);
    
            FlowRuleManager.loadRules(rules);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述
    @PostConstruct这个注解的作用就是在这个TestController类被实例化的时候调用这个方法,

    flowRule.setCount(2);
    
    • 1

    这里的意思就是控制一次请求在一秒内只能调用两次

    第五步,编写测试方法

      @GetMapping("/hello")
        public String hello() {
    
            try(Entry entry =  SphU.entry("testSentinel")) {
                return "hello sentinel";
            } catch (BlockException e) {
                e.printStackTrace();
                return "系统繁忙";
            }
    
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    第六步,测试我们的方法

    如果我们正常调用:
    在这里插入图片描述
    如果我们一次点击超过一秒内两次:
    在这里插入图片描述
    仓库地址:

    https://gitee.com/WangFuGui-Ma/sentinel-quickstart

  • 相关阅读:
    写在冬日的第一天--一个女程序员第十九年工作总结
    css3中有哪些伪选择器?
    JAVA计算机毕业设计程序设计类课程的课堂教学效果评价系统Mybatis+系统+数据库+调试部署
    一次简单的SQL注入靶场练习
    idea 模板参数注释 {@link}
    精准营销服务平台设计-基于大数据和AI的商业智能平台
    MySQL InnoDB数据存储结构
    【黑马程序员】机器学习
    FreeRTOS基础七:资源管理
    PyTorch中的CUDA操作
  • 原文地址:https://blog.csdn.net/csdnerM/article/details/125202612