Sentinel使用代码实现流控熔断降级规则

官方文档地址

以代码的方式实现在官方文档中都有详细的介绍,本小节主要就是以代码的方式实现流控规则和熔断降低规则。其他的可以参考官方文档。

Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard。Dashboard就是Sentinel提供的web管理界面,核心库不依赖 Dashboard,但是结合 Dashboard 可以取得最好的效果。

Sentinel核心库就是我们java代码中需要引入的,我们可以不依靠Dashboard仅仅使用核心库来设置sentinel的一些规则。

使用 Sentinel 来进行资源保护,主要分为几个步骤:

  1. 定义资源
  2. 定义规则
  3. 检验规则是否生效

先把可能需要保护的资源定义好(埋点),之后再配置规则。

也可以理解为,只要有了资源,我们就可以在任何时候灵活地定义各种流量控制规则。在编码的时候,只需要考虑这个代码是否需要保护,如果需要保护,就将之定义为一个资源。

流控规则

第一步,引入maven坐标,如果单纯是使用sentinel核心库的话,是不需要依赖SpringCloud alibaba的,可以直接依赖spring-boot-starter-parent

因为它可以在分布式架构使用,并不一定是要在微服务架构中使用

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-core</artifactId>
</dependency>

第二步,创建controller层接口,并为该接口配置流控规则

sentinel所有的操作都是针对资源的,一个Rest接口其实就是对应的一个资源

package com.hs.springcloud.controller;

import com.alibaba.csp.sentinel.Entry;
import com.alibaba.csp.sentinel.SphU;
import com.alibaba.csp.sentinel.Tracer;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.RuleConstant;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;

/**
 * @Description:
 * @Author 胡尚
 * @Date: 2022/6/20 18:49
 * @Version 1.0
 */
@Slf4j
@RestController
@RequestMapping("/demo")
public class HelloController {
   

    // 定义一个资源名
    private static final String RESOURCE_NAME = "hello";

    /**
     * 定义sentinel流控规则
     * @return 。
     */
    @RequestMapping("/hello")
    public String hello(){
   

        Entry entry = null;
        try{
   
            // 1. sentinel针对资源进行限制的,定义一个资源名称
            entry = SphU.entry(RESOURCE_NAME);

            // 被保护的业务逻辑
            String str = "hello world";
            log.info("-----{}-----", str);
            return str;
        } catch (BlockException e) {
   
            // 资源访问阻止,被限流或被降级,进行相应的处理操作
       
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值