Sentinel限流

1、注意版本(springboot的版本要和sentinel的版本适配)
 

<dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        <version>2021.0.6.0</version>
</dependency>

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.15</version>

2、如果报错循环依赖

spring:
        cloud:
                sentinel:
                        filter:
                                enabled: false // 解决循环依赖报错
                        transport:
                                port: 8719
                        dashboard: localhost:8080

3、限流规则

public static void main(String[] args) {
        try {
            SpringApplication.run(PsychologyApplication.class, args);
            initSentinel();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

    /**
     * 定义限流规则
     */
    private static void initSentinel() {
        List<FlowRule> rules = new ArrayList<>();
        FlowRule rule = new FlowRule();
        rule.setResource("hello"); // 资源名称,限流接口注解中的value
        rule.setGrade(RuleConstant.FLOW_GRADE_QPS); // 根据 QPS 限流
        rule.setCount(1); // QPS 阈值【每秒只允许通过一个请求】
        rule.setStrategy(RuleConstant.STRATEGY_DIRECT); // 调用关系限流策略【非必须设置】
        rule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_DEFAULT); // 流控效果【非必须设置】
        rule.setClusterMode(false); // 是否集群限流【非必须设置,默认非集群】
        rules.add(rule);
        FlowRuleManager.loadRules(rules);
    }

4、限流接口

@GetMapping(value = "/hello/{name}")
    @SentinelResource(value = "hello", blockHandler = "exceptionHandler", fallback = "helloFallback")
    public String apiHello(@PathVariable String name) {
        return "hello";
    }

    // Fallback 函数,函数签名与原函数一致或加一个 Throwable 类型的参数.
    public String helloFallback(String s) {
        return String.format("Halooooo %s", s);
    }

    // Block 异常处理函数,参数最后多一个 BlockException,其余与原函数一致.
    public String exceptionHandler(String s, BlockException ex) {
        // Do some log here.
        ex.printStackTrace();
        return "Oops, error occurred at " + s;
    }

sentinel限流的实战中,我们可以通过以下步骤来实现: 1. 首先,了解sentinel的三大功能:限流、降级和系统保护。 2. 引入sentinel的依赖,并配置好项目的相关信息,如应用名称、端口等。 3. 在需要进行限流的代码块或方法上,使用sentinel提供的注解或API进行限流配置。可以设置限流的阈值、流控模式等。 4. 运行项目,并观察sentinel的日志,可以通过日志来查看运行过程中的限流状态,了解规则的详细作用。 总结起来,sentinel限流的实战包括引入依赖、配置相关信息,使用注解或API进行限流配置,观察日志来查看限流状态。通过这些步骤,我们可以实现对代码块或方法的限流控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Sentinel 实战-限流篇](https://blog.csdn.net/weixin_34194087/article/details/91439754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Sentinel限流应用实践](https://blog.csdn.net/m0_64736092/article/details/123213082)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值