二十五、Sentinel热点key限流+@SentinelResource

本文介绍了Sentinel热点参数限流的使用,通过@SentinelResource注解实现自定义降级处理。展示了如何配置规则,测试限流效果,以及在特定参数值下设置不同的限流阈值。此外,还讨论了服务熔断功能,包括Ribbon和Feign系列的实现,并探讨了规则持久化到Nacos的方法。
摘要由CSDN通过智能技术生成

Sentinel热点key限流

基本介绍

在这里插入图片描述

官网

https://github.com/alibaba/Sentinel/wiki/热点参数限流

@SentinelResource

兜底方法
分为系统默认和客户自定义,两种
之前的case,限流出问题后,都是用sentinel系统默认的提示
使用@SentinelResource,自定义降级方法

代码

 @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) {
        //int age = 10/0;
        return "------testHotKey";
    }

    //兜底方法
    public String deal_testHotKey(String p1, String p2, BlockException exception) {
        return "------deal_testHotKey,o(╥﹏╥)o";
    }

com.alibaba.csp.sentinel.slots.block.BlockException

配置

@SentinelResource(value = “testHotKey”)

在这里插入图片描述

@SentinelResource(value = “testHotKey”,blockHandler = “deal_testHotKey”)
在这里插入图片描述
方法testHostKey里面第一个参数只要QPS超过每秒1次,马上降级处理
用了我们自己定义的

测试

在这里插入图片描述
http://localhost:8401/testHotKey?p1=abc
在这里插入图片描述
http://localhost:8401/testHotKey?p1=abc&p2=33
在这里插入图片描述
http://localhost:8401/testHotKey?p2=abc
在这里插入图片描述

参数例外项

上述案例演示了第一个参数p1,当QPS超过1秒1次点击后马上被限流
特殊情况

普通:超过1秒钟一个后,达到阈值1后马上被限流

我们期望p1参数当它是某个特殊值时,它的限流值和平时不一样

特例:假如当p1的值等于5时,它的阈值可以达到200

配置

在这里插入图片描述

测试

http://localhost:8401/testHotKey?p1=5
在这里插入图片描述
http://localhost:8401/testHotKey?p1=3
在这里插入图片描述
当p1等于5的时候,阈值变为200,当p1不等于5的时候,阈值就是平常的1

前提条件

热点参数的注意点,参数必须是基本类型或者String

其他

添加异常
int i = 10/0;
在这里插入图片描述

系统规则

https://github.com/alibaba/Sentinel/wiki/%E7%B3%BB%E7%BB%9F%E8%87%AA%E9%80%82%E5%BA%94%E9%99%90%E6%B5%81

各项配置参数说明

在这里插入图片描述

配置全局QPS

在这里插入图片描述
在这里插入图片描述

@SentinelResource

按资源名称限流+后续处理

启动Nacos成功
启动Sentinel成功
Module

业务类RateLimitController

package com.liang.cloud.controller;

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.liang.model.CommonResult;
import com.liang.model.Payment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class RateLimitController {
    @GetMapping("/byResource")
    @SentinelResource(value = "byResource", blockHandler = "handleException")
    public CommonResult byResource()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值