在使用sentinel前,大家首先要了解sentinel有什么用,在什么场景下用
首先sentinel作为面向分布式服务框架的轻量级流量控制框架,主要是以流量为切入点,从流量控制,熔断降级,系统负载保护等多个维度来维护系统的稳定性。通俗点讲就是用来维护系统的稳定性,举个例子假如你的系统疯狂受到不明来源的访问导致服务器资源不足,这是我们可以利用sentinel的功能来进行接口访问时间的限制。
Sentinel 提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理、监控(单机和集群),规则管理和推送的功能。还有鉴权功能也是必不可少的
监控:簇点链路中会显示刚刚调用过的资源(单机实时),实时监控 汇总资源信息(集群聚合),实时监控仅存储5分钟以内的数据,如果需要持久化,需要通过调用实时监控接口定制
规则管理和推送主要是统一管理推送规则,可以实时更改规则
Sentinel 的特性
- 多样化的流量控制
- 熔断降级
- 系统负载保护
- 实时监控和控制台
Sentinel 的实现
首先我们需要导入Sentinel的jar包
<!--加入sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
然后我们在配置文件中配置Sentinel的地址及其端口号
cloud:
sentinel:
transport:
dashboard: localhost:8089
再配置完成后进入Sentinel的官网进行服务的下载
服务下载完成后在jar包所在文件目录打开cmd命令输入java -Dserver.port=8089 -Dcsp.sentinel.dashboard.server=localhost:8082 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.2.jar这句启动代码-Dserver.port指向Sentinel开启服务端口号,-Dcsp.sentinel.dashboard.server指向我们需要管控服务的地址,-jar sentinel-dashboard-1.8.2.jar为我们下载Sentinel的jar的全称,然后地址+端口号进行访问,上面cmd的执行代码未设置账号密码所以账号密码均为Sentinel ,如果想设置账号密码应把cmd语句换为java -Dserver.port=8089 -Dcsp.sentinel.dashboard.server=localhost:8082 -Dproject.name=sentinel-dashboard -Dsentinel.dashboard.auth.username=sentinel -Dsentinel.dashboard.auth.password=123456 -jar sentinel-dashboard-1.8.2.jar
然后再把我们的本地业务服务跑起来即可在设置页面进行相关接口的设置。
- 流控的操作
打开sentinel的控制页面我们选择流控模块将我们的接口地址和限制条件输入无误后确定即可生效
生效后我们的控制台操作就完了,接着我们转战我们的业务代码
我们可以通过try{}catch(BlockException block){}方法来识别接口是否被流控
Entry entry = null;
try {
entry = SphU.entry("名称");
// 被保护的业务逻辑
String str = "hello world";
log.info("====="+str);
return str;
} catch (BlockException blockException) {
// 资源访问阻止,被限流或被降级
//进行相应的处理操作
log.info("blockException !");
}catch (Exception ex) {
// 若需要配置降级规则,需要通过这种方式记录业务异常
Tracer.traceEntry(ex, entry);
return new BgBlog();
}finally {
if (entry != null)
entry.exit();
}
- 配置降级规则
在Sentinel Dashboard控制台,点击左边菜单【簇点链路】就可以为API端点设置降级规则,如下图所示:
- 注意资源名称需和上面指定的名称一致
降级操作到此就结束。
以上就是我总结的sentinel部分功能,谢谢大家观看