一.概述
熔断:当满足某个特定条件的时候,触发熔断,在熔断的时间内,接收到的请求将不会得到处理,而是快速失败响应给客户端.
sentinel提供了熔断功能,且熔断策略有三种:RT、异常比例和异常数量.
二.sentinel的熔断
1.sentinel的熔断策略.
熔断策略 | 含义 |
---|---|
RT | 平均响应时间超出阈值且在时间窗口内通过的请求数量>=5,两个条件同时满足后触发降级,窗口期过后关闭断路器 |
异常比例(秒级统计比例) | qps>=5且异常比例(秒级统计)超过阈值时,触发断路器;时间窗口结束后,关闭断路器 |
异常数 | 异常数超过阈值时,触发断路器;时间窗口结束后,关闭断路器 |
2.sentinel熔断之控制台.
降级规则tab提供的就是熔断功能,只是sentinel文字描述个人觉得不是非常准确,只能说sentinel为自己的熔断功能也提供了降级功能,主功能在熔断.
3.sentinl熔断之RT策略.
(1).测试代码编写.
package com.ccm.server.user.controller;
import com.ccm.common.exception.result.ResultSet;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description sentinel熔断测试控制层
* @Author ccm
* @CreateTime 2020/07/29 10:17
*/
@RestController
@RequestMapping(value = "sentinelFusingTest")
@Api(tags = "sentinel熔断测试控制层")
public class SentinelFusingTestController {
@ApiOperation(value = "rt熔断策略")
@GetMapping(value = "test01")
public ResultSet test01() throws InterruptedException {
Thread.sleep(300L);
return ResultSet.success("笑脸");
}
}
(2).为测试接口配置rt策略的熔断.
配置的含义:在10秒钟内,如果请求数量大于5且请求的平均响应时间超过200毫秒,微服务在这个10秒钟的时间窗口开启断路器.10秒钟内,所有的请求不会访问到资源,会快速失败返回给客户端.断路器10秒之后自动关闭,允许客户端访问该资源.
(3).用jmeter压力测试,触发断路器打开.
10秒钟之内,发起20个请求.