刚开始学习sentinel时,感觉阿里的sentinel是真的爽,但是学着学着发现,当你的服务重启后,配置的规则全都没了;这样一来,重启一次服务配置一次规则,肯定头大,更别说要在生产环境中使用了。
搜集了很多sentinel持久化规则的资料,发现大部分资料介绍持久化有 拉模式, 再就是推模式,优点也有,缺点也有,个人觉得不是特别的友好,生产环境的话,先不说优缺点,改动的地方就特别多,所以不是那么 贴近生产环境。
好在阿里云的AHAS服务,可以托管我们的sentinel配置规则(当然不仅仅这些),接下来简单的介绍下如何接入AHAS服务
登录阿里云AHAS服务
访问 https://www.aliyun.com/product/ahas 并登录
点击开通免费版 并进入控制台
免费版先玩玩吧 哈哈哈
配置应用防护
进入应用
选择公网
查看你的License
接入服务
查看教程
在pom中添加依赖
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>spring-boot-starter-ahas-sentinel-client</artifactId>
<version>1.6.4</version>
</dependency>
注意 如果引入过sentinel的starter,删除sentinel-starter依赖
添加yml
ahas:
license: 你的license
namespace: default
project:
name: ${spring.application.name} ##自定义,我这里是用的微服务名称
不过,要把之前的sentinel的配置全部注释或者删除
启动你的服务,访问一次你的接口,查看应用防护
点进去,是是监控面板
点击左侧 规则设置,就是我们熟悉的界面了
添加一个流控规则测试下
注意!! 接口名称填写 @SentinelResource
的value值才能生效 自定义的 blockHandler和fallbackHandler
我写的接口
@GetMapping("/testA")
@SentinelResource(value = "testA", blockHandler = "testAHandler")
public String testA() {
return "----testA" ;
}
//自定义blockHandler 一定要传入 BlockException 否则不起效
public String testAHandler(BlockException blockException){
return "testA blockException-----" ;
}
当访问我写的接口,QPS > 1时
blockHandler
生效,配置完毕
关于fallbackHandler配置不在赘述,再就是降级规则,热点规则,系统规则等,都跟sentinel控制台配置规则差不多,也不在演示了
总之,在生产环境中使用sentinel,把规则托管在阿里云的AHAS服务,效率高也比较方便😄