首先在根目录下开启cmd黑窗口启用jar文件
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar xxxxx.jar
1.添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
2.书写配置文件
3.代码
4.
运行成功后
在sentinel的界面上就会看到如下图所示,点击流控
点击新增之后,继续访问页面同时点击多次就会出现熔断,这个垄断是我们在后台写的
blockHandlerMethod方法里
点击降级
降级是通常是为异常设置的,设置好降级之后,一般我们要删除流控设置的东西。要不然时间间隔效果看不出来。设置id为1的时候出现异常
多次访问id为1就会出现下图所示
设置id为2的不是异常,没过间隔30秒访问id为2也会出现
过了30秒之后才会成功访问
程序运行自动设置限流或者降级
RestTemplate支持 ,只要是用到RestTemplate类,sentinel会自动加到簇点链路上
和下图对应
步骤如下:
1.创建ExceptionUtil类
注意:不要导错包,容易找不到类
package com.yh.util;
import com.alibaba.cloud.sentinel.rest.SentinelClientHttpResponse;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.fastjson.JSON;
import com.yh.entry.ShopProduct;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.stereotype.Component;
/**
* @program: springcloud-parent
* @description: s
*
* @create: 2021-07-15 16:26
**/
@Component
public class ExceptionUtil {
public static ClientHttpResponse fallback(HttpRequest request, byte[] body, ClientHttpRequestExecution execution, BlockException exception){
return new SentinelClientHttpResponse(JSON.toJSONString(
new ShopProduct(1l,"服务流量控制兜底的数据",5555.0,1000l)));
}
public static ClientHttpResponse handlerException(HttpRequest request,byte[] body, ClientHttpRequestExecution execution, BlockException exception){
return new SentinelClientHttpResponse(JSON.toJSONString(
new ShopProduct(1l,"熔断降级控制兜底的数据",5555.0,1000l)));
}
}
在主启动类上加上注解,方法名要和创建的 ExceptionUti的方法名字一致
openfeign的支持
在配置里多加3行代码,是openfeign让sentinel管理所需要的
创建一个实现类继承所需要的openfeign的方法
openfeign的接口
实现类
运行成功后如下图所示
当设置降级或者流控之后进行操作如下图所示