Sentinel简单概述

什么是Sentinel


Sentinel是Spring Cloud Alibaba的组件

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

为什么需要Sentinel


为了保证服务器运行的稳定性,在请求数到达设计最高值时,将过剩的请求限流,保证在设计的请求数内的请求能够稳定完成处理

QPS与并发线程数


  • QPS:是每秒请求数

单纯的限制在一秒内有多少个请求访问控制器方法

  • 并发线程数:是当前正在使用服务器资源请求线程的数量

限制的是使用当前服务器的线程数

Sentinel两种重要注解内方法


首先 上面提到了Sentinel 有两种保护方法 一种降级 一种限流 那么不得不提到一个注解

@SentinelResource

该方法主要作用

  1. 让Sentinel发现该控制层

  1. 配置降级熔断方法

第一种 限流 也就是说 当访问量到达满级时 该做的方法 或者说该向用户所抛出的异常 或是其他所作方法

@SentinelResource(value = "方法1",blockHandler = "blockError")

blockHandler内配置的为 降级方法名称 此方法名称必须对应该类方法 否则无效

注意事项: 1.访问修饰符必须是public 2.返回值类型必须和控制器方法一致 3.方法名必须和对应的限流控制器方法定义的blockHandler属性值一致 4.方法的参数列表必须和控制器一致,而且还要额外添加BlockException类型的参数

例如:

@SentinelResource(value = "方法1",blockHandler = "blockError")
public JsonResult reduceCommodityCount(Integer i){
    return JsonResult.ok("已执行");
}

//下面为 限流方法
public JsonResult blockError(Integer i,BlockException e){
    // 运行这个方法就是被限流了,直接返回被限流的提示即可
    return JsonResult.failed("服务器忙,请稍后再试");
}

那么当遇到控制器层可能出现异常时,我们则定义降级方法,也就是当控制器层某个方法出现报错,为防止业务流程打断出现的未知情况,所执行的方法,将损失降到最小.

@SentinelResource(value = "方法1",blockHandler = "blockError",fallback = "fallbackError")
public JsonResult reduceCommodityCount(Integer i){
    return JsonResult.ok("已执行");
}

//下面为 限流方法
public JsonResult blockError(Integer i,BlockException e){
    // 运行这个方法就是被限流了,直接返回被限流的提示即可
    return JsonResult.failed("服务器忙,请稍后再试");
}

//下面为 降级方法
// 降级方法:上面@SentinelResource中fallback指定的降级方法
// 声明格式:和限流方法基本相同,方法参数不需要添加异常类型
// 当控制器方法发生异常时,Sentinel会自动调用这个方法
// 在实际业务中,可以是运行新版本代码的过程中发送异常后,转而运行老版本代码的机制
public JsonResult fallbackError(Integer i){
    // 因为没有老版本代码,所以这里是输出降级提示
    return JsonResult.failed("运行发生异常,服务降级");
}

当发生随机异常时,就运行降级方法

当没有发生随机异常时,就正常运行

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值