• 微服务保护-热点参数限流


    请添加图片描述
    个人名片:

    博主酒徒ᝰ.
    个人简介沉醉在酒中,借着一股酒劲,去拼搏一个未来。
    本篇励志三人行,必有我师焉。

    请添加图片描述
    本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

    【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

    二、流量控制

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

    5. 热点参数限流

    之前的限流是统计访问某个资源的所有请求,判断是否超过QPS阈值。而热点参数限流是分别统计参数值相同的请求,判断是否超过QPS阈值。

    1. 热点参数限流

    在实际开发中,可能部分商品是热点商品,例如秒杀商品,我们希望这部分商品的QPS限制与其它商品不一样,高一些。那就需要配置热点参数限流的高级选项

    1. 案例

    案例:给/order/{orderId}这个资源添加热点参数限流,规则如下:
    •默认的热点参数规则是每1秒请求量不超过2
    •给102这个参数设置例外:每1秒请求量不超过4
    •给103这个参数设置例外:每1秒请求量不超过10

    注意事项:热点参数限流对默认的SpringMVC资源无效,需要利用@SentinelResource注解标记资源

    1)标记资源

    给order-service中的OrderController中的/order/{orderId}资源添加注解:

    @SentinelResource("hot")
    @GetMapping("{orderId}")
    public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
        // 根据id查询订单并返回
        return orderService.queryOrderById(orderId);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2)热点参数限流规则

    访问该接口,可以看到我们标记的hot资源出现了:
    这里不要点击hot后面的按钮,页面有BUG
    点击左侧菜单中热点规则菜单:
    点击新增,填写表单:

    在这里插入图片描述

    3)Jmeter测试

    选择《热点参数限流 QPS1》:
    这里发起请求的QPS为5.
    包含3个http请求:

    QPS阈值为2,运行结果:

    在这里插入图片描述

    QPS阈值为4,运行结果:
    在这里插入图片描述

    QPS阈值为10,运行结果:

    在这里插入图片描述

  • 相关阅读:
    Compose预处理组件大比拼:性能、应用场景和可视化对比总结
    MySQL 数据库基础知识(系统化一篇入门)
    JavaMail连接Office 365使用XOAUTH2身份认证
    我对Linux的认识
    146. 通过 SAP UI5 ODataModel API 在 JavaScript 代码里访问 OData 元数据
    【c语言】字符函数和字符串函数(下)
    初识图学习
    百货商场数字化会员营销 购物中心私域流量运营系统
    Java设计模式七大原则-迪米特法则
    Redis:Redis的数据结构、key的操作命令
  • 原文地址:https://blog.csdn.net/m0_65144570/article/details/132948412