sentinel笔记就是代码第一份.照着笔记学习sentinel写代码

sentinel

sentinel 主要是 基于面板进行配置的sentinel. 后面会实现配置持久化.

使用

依赖

在这里插入图片描述
加上 sentinel 就可以直接使用了 . 但是后期可以和 fegin,restTemplate 进行整合

暴露端点

配合 actuator 可以看到 Sentinel 的状态. 这时候可以配置 actuator 开启 Sentinel 端点
actuator 可以看到 服务的端点. 但是sentinel 的端点是隐藏的. 这里可以 使用 配置暴露sentinel的端点
在这里插入图片描述

sentinel 控制台

使用可视化面板对 sentinel 进行配置
sentinel 是懒加载. 额 Ribbon 一样
Ribbon 可以配置饥饿加载

簇点链路

查看服务的API 以及 配置流控规则
在这里插入图片描述
在这里插入图片描述

流控规则

资源名:  API名称(唯一的名称)
针对来源: 服务名. 不区分为 default
阈值类型:
	QPS:
	线程数:
流控模式:
	直接: 
	关联: 关联资源. 当关联资源达到阈值,就限流自己.
		保护关联资源.例如: 一个资源即读又修改.
	链路: 配个 @SentinelSource 注解使用. 设置阈值或者线程数目.进行使用
流控效果:
	快速失败: 直接抛出异常
	warm Up: 预热.

在这里插入图片描述
warm up 使流量缓慢增加. 在经过 预热时长后才达到阈值在这里插入图片描述
原理分析的文章

排队等待: 只能设置阈值. 如果这个请求过了规定的超时时间,则直接丢弃.
	匀速排队. 请求排队. 

在这里插入图片描述
每秒一次 . 超时直接丢弃

降级规则

上一个讲解的是(流控)限流.这一个讲解的是降级(断路器模式)
在这里插入图片描述
RT: 平均响应时间
在这里插入图片描述

平均响应时间超出阈值 并且 在时间窗口内通过的请求 >= 5,则触发降级.
降级时间为 5秒.
1. sentinel 默认最大降级时间为 4900ms
2. 可通过 -Dcsp.sentinel.statistic.rt=xxx 修改任意值

异常比例
同上
异常数

异常数统计是分钟级别. 时间窗口 < 60 s 会出现异常
其他同上

热点规则

又叫热点参数限流规则
在这里插入图片描述
需要自己写代码实现

// 此字符串会出现在 sentinel 控制台中
@SentinelResource("\hot")

在这里插入图片描述
在这里插入图片描述
给第一个参数设置热点规则
在这里插入图片描述
对具体值进行限流
在这里插入图片描述

系统规则

Load
系统Load1超过阈值,切并发线程数超过系统容量时触发.
Linux 下查看 Load

uptime

在这里插入图片描述
系统容量

系统容量 = maxQPS * minRt

在这里插入图片描述
其他
在这里插入图片描述

授权规则

白名单

/shares/1 这个API 只允许 test 微服务 访问

在这里插入图片描述
黑名单
不允许 对应的微服务访问

代码配置规则

使用代码配置流程,降级,热点等规则
这里的代码配置规则是提供一个API,访问即可对 Sentinel 增加规则
参考:
慕课网
sentinel GitHub STEP 3. 定义规则
动态规则扩展

流控规则

具体配置这段代码即可
在这里插入图片描述
调用
在这里插入图片描述

Sentinel与控制台通信

Sentinel 注册到 Sentinel Console
定时发送心跳. 之后 Sentinel Console 定时发送请求获得微服务中的数据
具体可以看 actuator\sentinel 中的各项数据
在这里插入图片描述

相关源码

心跳

在这里插入图片描述

通信

在这里插入图片描述

Sentinel & Console 配置项

Sentinel

微服务中 Sentinel-Console 的配置项

spring:
  cloud:
    sentinel:
      transport:
        dashboard:
        client-ip:
        port: 8719
        heartbeat-interval-ms: 10000  

在 Sentinel 中配置 与 Sentinel-Console 通信的配置

Sentine-Console配置项

在启动 Sentinel.jar 时候可以指定的配置
在这里插入图片描述

这些配置在启动 sentinel-dashboard-1.6.2.jar 的时候指定 -DparamName=value 进行指定

在这里插入图片描述

Sentinel API

开启 Spring MVC 端点保护

sentinel:
  filter:
  	# 
  	enabled: false

Sphu.entry

// 名称随便写,保持唯一
Sphu.entry("test-sentinel-api");
// 业务逻辑开始
// 业务逻辑结束
catch(BlockException e){
	// 此API被保护或者降级,会触发此异常
}

在这里插入图片描述

异常统计

对于 额外的异常.
因为 Sphu.entry 只针对 BlockException 进行拦截
在这里插入图片描述
所以这里不拦截

针对来源

ContextUtil.enter(resourceName,“来源微服务名称”);
在这里插入图片描述

总结

Sphu: 定义资源,监控,保护资源
Tracer: 异常统计
ContextUtil: 调用来源,标记调用

@SentinelResource

手记 文章内有简单的记载.
慕课网
代码

在代码上加注解.
1. value="要保护的API名称".
2. blockHandler="资源被限流或降级触发的方法"

在这里插入图片描述
这里的block 的方法 返回值和参数和 @SentinelResource 标注的方法一致

在这里插入图片描述
@SentinelResource 注解可以区分限流和降级

fallback: 1.5 处理降级
	1.6 可以加 Throwable 参数.在 对应的fallback 方法上
	添加 Throwable 参数 去处理异常
blockHandler: 

具体请看上面那篇手记
指定静态方法

blockHandlerClass = xxx
fallbackClass = xxx.class

在这里插入图片描述

blockHandlerClass

可以将 处理 block 的东西写到单独的类中,在指定它

相关源码

在这里插入图片描述

Sentinel 整合 RestTemplate

使用 @SentinelRestTemplate 注解即可
在这里插入图片描述
注解开关

resttemplate:
  sentinel:
   # 关闭 @SentinelTempalte 注解
   enabled: false//ture

相关源码

在这里插入图片描述

Fegin 整合 Sentinel

fegin:
  sentinel:
    enabled: true

异常处理

在这里插入图片描述

定义一个class,实现 UserCenterFeginClient. 重写方法即可

获取异常

使用 fallBackFacotory ,可以获得异常
fallBack 和 fallBackFactory 二选一
在这里插入图片描述

Sentinel 暂时性总结

因为后面还有别的内容
在这里插入图片描述

规则持久化

sentinel console 规则是在内存中的
持久化,保证规则不丢失

拉模式

慕课网手记
console 推动规则给 微服务. 微服务写入到缓存中,定时持久化到 文件中
步骤

1. 依赖

在这里插入图片描述

2. 代码

请看慕课网手记

推模式

慕课网手记
具体请查看慕课网手记
Nacos 作配置中心

console 将规则推送到 Nacos. 
Nacos 内规则变化时,sentinel 微服务从 Nacos 获取更新后的配置

步骤

1. 依赖

在这里插入图片描述

2. 配置
	添加数据源

在这里插入图片描述

3. 控制台改造
1. 依赖

在这里插入图片描述

2. 目录拷贝

在这里插入图片描述

懒人包-其他规则改造

慕课网手记最后即可看到

生产环境中的Sentinel

视频
在这里插入图片描述

集群流控

集群流控慕课网版本没有对应学习资料.请自学

引入新的组件: TokenServer. 微服务和 TokenServer通信. 进而实现集群流控

独立模式

嵌入模式

Sentinel错误页优化

UrlBlockHandler

对错误进行处理的接口

public abstract class MyUrlBlockHandler implements UrlBlockHandler{
	@Override
	public void blocked(HttpServletRequest request,HttpServletResponse response){
		// 逻辑
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

区分来源

Sentinel 提供了区分来源的接口. RequestOriginParser

@Component
class MyRequestOriginParser implements RequestOriginParser{
	@Override
	public String parseOrigin(HttpServlerRequest request){
	// 逻辑		
	}
}

代码
在这里插入图片描述

使用
在这里插入图片描述

Sentinel 支持 RestfulUrl

sentinel 扩展,支持 fegin Url

UrlCleaner

@Component
public class myUrlClenaer implements UrlCleaner{
	@Override
	public String clean(String originUrl){
		return originUrl;
	}
}

手动实现,fegin 请求的url 具体值
在这里插入图片描述

CommonFilter

可以对 CommonFilter 进行修改.

1. 首先,关闭 Sentinel Filter 过滤器.
sentinel:
	filter:
		enabled: false

配置项总结

慕课网手记

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sentinel是一个分布式系统的高可用性监控和自动化平台。它提供了实时监控、告警、自动化决策、统计和可视化等功能,以帮助用户快速定位和解决系统问题。 Sentinel的核心功能包括: 1. 流量控制和熔断:提供实时的流量控制和熔断机制,防止系统因为异常流量而崩溃。 2. 负载均衡和容错:提供负载均衡和容错机制,让系统能够更好地应对高并发和故障。 3. 实时监控和告警:提供实时的监控和告警功能,让用户能够及时发现系统问题并进行处理。 4. 自动化决策和处理:提供自动化的决策和处理功能,可以自动化地处理一些常见的问题,从而减少人工干预的时间和成本。 Sentinel的架构: Sentinel的架构分为三层:应用层、控制层和数据层。 1. 应用层:负责收集和处理应用程序的数据,包括请求和响应数据、日志和异常信息等。 2. 控制层:负责对应用程序进行监控和管理,包括流量控制、熔断、负载均衡、容错和告警等。 3. 数据层:负责存储和管理应用程序的数据,包括配置信息、监控数据和告警日志等。 Sentinel的工作流程: 1. 收集数据:Sentinel会收集应用程序的请求和响应数据、日志和异常信息等。 2. 统计分析:Sentinel会对收集到的数据进行统计和分析,得出系统的性能指标和问题。 3. 流量控制:如果系统的流量过大,Sentinel会根据配置的规则对流量进行控制,以保证系统的稳定性和可用性。 4. 熔断:如果系统出现了异常,Sentinel会根据配置的规则对服务进行熔断,以避免系统崩溃。 5. 负载均衡和容错:如果系统出现了故障,Sentinel会根据配置的规则进行负载均衡和容错处理,以保证系统的可靠性和可用性。 6. 告警:如果系统出现了问题,Sentinel会根据配置的规则进行告警处理,通知管理员及时处理问题。 Sentinel的优点: 1. 高可用性:Sentinel可以提供高可用性的监控和管理功能,保证系统的稳定性和可用性。 2. 实时性:Sentinel可以实时地监控系统的性能和问题,能够及时发现和处理问题。 3. 灵活性:Sentinel提供了丰富的配置选项,可以根据实际需求进行定制和调整。 4. 易扩展:Sentinel支持分布式部署和扩展,能够满足不同场景下的监控和管理需求。 5. 开源:Sentinel是一个开源的项目,能够充分利用社区的力量和资源,不断提升和完善自身的功能和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值