博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloudAlibaba--Sentinel热点参数限流
阅读量:2444 次
发布时间:2019-05-10

本文共 1072 字,大约阅读时间需要 3 分钟。

Sentinel热点参数限流

在这里插入图片描述

何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如:

  • 商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制
  • 用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制

热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。

示例

//热点限流    @GetMapping("/testHotKey")    @SentinelResource(value = "testHotKey", blockHandler = "deal_testHotKey")    public String testHotKey(@RequestParam(value = "p1", required = false) String p1,                             @RequestParam(value = "p2", required = false) String p2) {
return "*****testHotKey"; } public String deal_testHotKey (String p1, String p2, BlockException exception) {
return "****deal_testHotKey"; }

配置:索引为第0个的参数(p1)阈值为1

在这里插入图片描述

  • 携带p1参数快速多次访问:

    在这里插入图片描述
    超过1秒一次的限制,触发blockHandler方法。

  • 携带p2参数快速访问多次:

    在这里插入图片描述
    一切正常。

  • 同时携带p1和p2参数快速访问:

    在这里插入图片描述
    触发blockHandler方法。

参数例外项

在这里插入图片描述

上述案例在访问超过1秒1个后马上被限流。但是,我们希望p1参数当它时某个特殊值时,它的限流值和平时不一样。

比如:当p1=5时,它的阈值可以达到200;其它值仍然为1

在这里插入图片描述

  • 携带p1=5快速多次访问:正常

    在这里插入图片描述

  • 携带p1=3快速多次访问:触发blockHandler方法

    在这里插入图片描述

注意:

  • @SentinelResource处理的是Sentinel控制台配置的违规情况,有blockHandler方法配置的兜底处理;
  • 如果逻辑代码中出现其它RuntimeException,@SentinelResource是不管的。

转载地址:http://mppqb.baihongyu.com/

你可能感兴趣的文章
Bootstrap没有的Foundation 5功能
查看>>
Sublime Text和Emmet –加快HTML开发
查看>>
web应用程序的身份验证_向任何应用程序添加身份验证的最简单方法
查看>>
构建meteor应用程序_从头开始学习Meteor.js:构建一个轮询应用程序
查看>>
将Angular 1.x升级到Angular 2的无缝方法
查看>>
polymer ajax_使用Polymer创建自定义音频播放器元素
查看>>
angularjs css_使用AngularJS和NgHref动态获取CSS
查看>>
使用Bootstrap和AngularJS构建类似Chrome的标签页
查看>>
angular 克隆_使用Angular和Stamplay构建Etsy克隆(第3部分)
查看>>
萨斯病毒感染情况_审美萨斯1:建筑与风格组织
查看>>
angular删除节点_节点和Angular To-Do应用程序:控制器和服务
查看>>
angular 克隆_使用Angular和Stamplay构建Etsy克隆(第2部分)
查看>>
视屏剪辑背景音乐_文本背景和带有背景剪辑的渐变
查看>>
使用Mongoose轻松开发Node.js和MongoDB应用
查看>>
做无用之事读无用之书_如何从现有的基础上创建一个无用的基础框
查看>>
ionic4创建应用命令_使用AngularJS和Ionic创建您的第一个移动应用
查看>>
emmet :_使用Emmet快速编写HTML Crazy Fast:交互式指南
查看>>
flux react_使用React.js和Flux创建一个简单的购物车
查看>>
idea 创建todo_创建具有节点和角度的单页Todo应用
查看>>
angularjs路由_具有AngularJS路由和模板的单页应用
查看>>