• 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个

  • 相关阅读:
    APP软件外包开发流程
    Redis过期键的删除策略即持久化机制
    mac通过docker一键部署Jenkins
    【PAT(甲级)】1065 A+B and C (64bit)[相加时关于编译器的错误]
    Java知识点笔记
    基于SSM的电动车上牌管理系统(有报告)。Javaee项目。
    golang工程管理实现简单计算器
    【算法|动态规划No.25】leetcode LCR 020. 回文子串
    Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制
    国内表格软件-FineReport Count函数
  • 原文地址:https://blog.csdn.net/weixin_45525272/article/details/125948236