1.在github上下载Sentinel Dashboard
2.目录下执行java -jar XXX启动
3.登录localhost:8080 显示界面即启动成功
新建module添加依赖
修改yml
spring:
application:
name: sentinel-payment
cloud:
nacos:
discovery:
server-addr: localhost:8500
sentinel:
transport:
dashboard: localhost:8080
port: 8719
启动即可
sentinel使用的是懒加载模式
当服务被访问后才能在sentinel dashboard中看见
服务控制
流控模式
关联:当与A关联的资源B达到阈值时,就限流自己
预热 :冷启动,防止服务低访问时突然大量访问拖垮服务 --预热 让阈值逐渐增加(逐渐升到设定阈值)
服务 降级
低访问量直接抛出错误问题
热点限流
对某个参数的请求进行流控
@RequestMapping("/test3")
@ResponseBody
@SentinelResource(value = "test3",blockHandler = "test2Handler")
public String test2(@RequestParam(value = "p1",required = false) String p1){
return "test3";
}
public String test2Handler(String p1, BlockException exception){
return "intenal error!";
}
系统规则: 根据电脑负载情况自动调节系统整体流量
SentinelResource注解 blockHandler只会在违背流控配置时调用,不会处理运行时异常,fallback 运行时异常时调用
@SentinelResource(value = "test3",blockHandler = "test2Handler")
解决业务代码与降级方法的耦合—fallback 的用法一样
1.将降级方法放在一个类中
public class CustomBlockHandler {
public static String test4Handler(BlockException exception){
return "custom handler for intenal error!";
}
}
2.修改注解
@RequestMapping("test4")
@ResponseBody
@SentinelResource(value = "test4",blockHandlerClass = CustomBlockHandler.class,blockHandler = "test4Handler")
public String test4(){
return "test4";
}
配置不捕获的异常
整合feign
配置对sentinel的支持
feign:
sentinel:
enabled: true
启动类添加注解@EnableFeignClient
。。。然后就是feign的操作
配置持久化,保存到nacos中
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
sentinel:
transport:
dashboard: 127.0.0.1:8080
port: 8719
datasource:
ds1:
nacos:
server-addr: localhost:8500
dataId: payment-sentinel
groupId: DEFAULT_GRUOP
data-type: json
rule-type: flow
在nacos配置中心中添加配置,dataId为yml配置的id