• Sentinel 流量控制快速入门


    流量控制

    雪崩问题虽然有四种方案,但是限流是避免服务因突发的流量而发生故障,是对微服务雪崩问题的预防。

    能预防最好,所以我们下面先介绍一下流量控制:

    1.簇点链路

    当请求进入微服务时,首先会访问DispatcherServlet(前置控制器),然后进入Controller、Service、Mapper,这样的一个调用链就叫做簇[cù]点链路

    簇点链路中被监控的每一个接口就是一个资源

    默认情况下sentinel会监控SpringMVC的每一个端点(Endpoint,也就是controller中的方法),因此SpringMVC的每一个端点(Endpoint)就是调用链路中的一个资源。

    小扩展:DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。

    DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。

    例如,我们访问的order-service中的OrderController中的端点:/order/{orderId}

    在Sentinel控制台中就会有显示(没有第一次访问,请求不会在这里显示)
    image-20220723150005659

    流控、熔断等都是针对簇点链路中的资源来设置的,因此我们可以点击对应资源后面的按钮来设置规则:

    规则说明
    流控流量控制
    降级降级熔断
    热点热点参数限流,是限流的一种
    授权请求的权限控制

    我们先来一个快速入门,再对每一个规则进行详细讲解配置

    2.快速入门

    2.1.示例

    点击资源/order/{orderId}后面的流控按钮,就可以弹出表单。

    image-20220723150005659

    表单中可以填写限流规则,如下:

    image-20220723150226536

    其含义是限制 /order/{orderId}这个资源的单机QPS为1,即每秒只允许1次请求,超出的请求会被拦截并报错。

    image-20220723150246671

    如果咱么请求太快的话,他就会进行流量控制,显示访问,例如下面在浏览器中玩命访问,就会返回错误信息

    image-20220723150335510

    2.2.练习:

    需求:给 /order/{orderId}这个资源设置流控规则,QPS不能超过 5,然后测试。

    1)首先在sentinel控制台添加限流规则

    image-20210715192455429
    2)利用jmeter测试

    开启20个线程访问20次

    image-20220723150924577

    设置请求信息

    image-20220723150857878

    20个用户,2秒内运行完,QPS是10,超过了5.

    运行测试

    注意,不要点击菜单中的执行按钮来运行。

    结果:

    image-20220723150806800

    可以看到,成功的请求每次只有5个

  • 相关阅读:
    【每日一题Day33】LC799香槟塔 | 动态规划
    ArcGis课程设计
    【C++笔记】C++ list类模拟实现
    Vue安装和环境配置
    SpringBoot 事务与AOP
    35岁了,月薪还不足2W,辞职又怕找不到工作,该何去何从?
    git everything up-to-date解决方法
    C++:详细的说明智能指针的使用以及底层实现,以及删除器和包装器的使用
    mongo实际业务场景实战
    漏洞发现-API接口服务之漏洞探针类型利用修复(45)
  • 原文地址:https://blog.csdn.net/weixin_45525272/article/details/125948236