Sentinel简单入门

sentinel基础教程

芋道 Spring Boot 服务容错 Sentinel 入门

发现 sentinel 可以很好的协助 gateway 实现防止恶意访问接口的问题

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。

Hystrix 已经不再维护了。

实例

本例子是基于 SpringCloud 实现的

>> 依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependencyManagement>
    <dependencies>
        <!--整合spring cloud-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--引入spring cloud alibaba-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

>> 实现

@GetMapping("/demo")
@SentinelResource(value = "demo",blockHandler = "exceptionHandler",fallback = "fallbackHandler")
public String demo(String str) throws InterruptedException {
    Thread.sleep(2000000L);
    return str;
}

//BlockHandler 处理函数,参数最后多一个 BlockException,其余与原函数一致
public String exceptionHandler(String str,BlockException ex){
    return "访问过于频繁";
}

//fallback 处理函数,参数最后多一个 BlockException,其余与原函数一致
public String fallbackHandler(String str,BlockException ex){
    return "请求长时间无法响应";
}

解释说明:

@SentinelResouce 用于定义资源,并提供可选的异常处理和 fallback 配置项。@SentinelResouce 常用注解包含以下属性:

  • value: 资源名称,必填
  • blockHandlerblockHandlerClass :
    • blockHandler对应处理 BlockException 的函数名称,可选项。
    • blockHandler 函数访问范围需要是 public
    • 返回类型需要与原方法相匹配,参数类型需要和原方法相匹配并且最后加一个额外的参数,类型为 BlockException
    • blockHandler 函数默认需要和原方法在同一个类中。若希望使用其他类的函数,则可以指定 blockHandlerClass 为对应的类的 Class 对象,注意对应的函数必需为 static 函数,否则无法解析。
  • fallback :fallback 函数名称,可选项,用于在抛出异常的时候提供 fallback 处理逻辑。

>> 配置

簇点链路

281

流控规则

在这里设置了 qps = 1,即每秒中只允许 1 个请求

282

>> 结果

283

todo :fallback 实现

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值