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


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

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

    请添加图片描述
    本项目基于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,运行结果:

    在这里插入图片描述

  • 相关阅读:
    MySQL InnoDB数据存储结构
    Linux用户空间与内核空间通信(Netlink通信机制)
    解决react使用css module无法重写bootstrap样式的问题
    谈谈我的「数字文具盒」 - 生产力工具(下)
    std::string_view概念原理及应用
    visual设置
    Java集合--Collection、Map、List、Set、Iterator、Collections工具类
    【LeetCode】42. 接雨水 - Go 语言题解
    两招提升硬盘存储数据的写入效率
    <一>关于运算符重载
  • 原文地址:https://blog.csdn.net/m0_65144570/article/details/132948412