SpringCloudAlibabaSentinel笔记

Sentinel思路:
1.针对怎样的流量
2.采取怎样的治理策略
3.触发策略后的行为

特性:
控制台:主管实时监控、规则配置、机器发现
控制维度:
1.流量控制
2.速率控制(流控-排队等待、流控-预热)
3.调用关系限流 (流控-关联、流控链路)
4.线程隔离
5.集群限流
6.热点限流
7.慢调用降级
8.异常熔断
9.削峰填谷
10.调用链路
11.自适应保护
12.来源访问控制
解决问题
1.服务雪崩:因微服务外散形调用,当其中一个微服务出现响应过长不可用,且没有保底机制的时候会造成前级服务资源占用导致连续崩溃,拖垮全局。
1.1 服务降级:下级微服务采用托底方案直接返回。
1.2 服务熔断:不调用下级微服务直接在上级采用托底方案,半开启状态(限制部分请求可达下级微服务)。
1.3 服务限流:采取限流算法将请求平滑化。
1.4 服务隔离:将错误局限在某个微服务模块内不干涉其他模块。
1.5 服务超时:设置最大指定时间。
使用:
1 流控模块:监控QPS流量或并发线程数指标,达到阈值会进行流控,保证服务的高可靠。
1.1 阈值类型:QPS、并发线程数
1.2 流控模式:直接、关联、链路
1.2.1 直接:达到阈值直接开始控流。
1.2.2 关联:设定相关资源达到阈值后限流自己。
1.2.3 链路:针对不同链路的请求进行限流。@SentinelResource(资源名)
1.3 流控效果:快速失败、WarmUp、排队等待
1.3.1 快速失败:直接失败抛出异常
1.3.2 预热WarmUp: 阈值除以冷却因子为初始因子,预热时长过后阈值提高到设定值。
1.3.3 排队等待: 处理周期性高流量方式,请求排队在后续空闲时间进行处理。超时直接失败。
2 熔断模块:
2.1 熔断策略:慢调用比例、异常比例、异常数
2.1.1 慢调用比例:
2.1.1.1 RT慢调用阈值时间。
2.1.1.2 统计时长:统计周期时长。
2.1.1.3 最小请求数:周期时间内超过该数值。
2.1.1.4 熔断时长:暂停服务时长。
2.1.1.5 比例:统计后阈值。
2.1.1.6 恢复:熔断时长结束后再次进行检测计算,如依旧达到比例阈值继续熔断。
2.1.2 异常比例:整体实现与慢调用相似,慢调用改为异常触发
2.1.2.1 统计时长:统计周期时长。
2.1.2.2 最小请求数:周期时间内超过该数值。
2.1.2.3 熔断时长:暂停服务时长。
2.1.2.4 比例:统计后阈值。
2.1.2.5 恢复:熔断时长结束后再次进行检测计算,如依旧达到比例阈值继续熔断
2.1.3 异常数:
2.1.3.1 统计时长:统计周期时长。
2.1.3.2 最小请求数:周期时间内超过该数值。
2.1.3.3 熔断时长:暂停服务时长。
2.1.3.4 数量:统计后阈值。
2.1.3.5 恢复:熔断时长结束后再次进行检测计算,如依旧达到阈值继续熔断
3 热点模块:场景 通过模块ID限流
3.1 根据参数QPS进行限制。
3.2 通过LRU算法计算热点参数。
3.3 参数索引:接口或资源标定的方法的第几个参数 从0开始算
3.4 阈值:统计窗口内触发阈值,参数通过算法得到
3.5 参数特定值:当参数等于设定值时,采用另设定阈值处理;
4 授权规则:类似白名单黑名单
4.1 实现RequestOriginParser接口 重写其parserOrigin方法。
4.2 请求通过RequestOriginParser.parserOrigin方法后返回值与配置值一致时,做控制处理。

注解
@SentinelResource 适用于Method Type上 与REST 相比 可深入到指定资源方法 而非仅对接口处理。同时可以自定义限流返回。
value:标定防护资源
entryType:绑定模式 默认是OUT
resourceType:资源分类
blockHandler:处理BlockException函数名称 //限流导致的中断中断兜底 与fallback不冲突
1.要求 public
2. 返回类型及参数一致
3.默认同类中,其他类需指定
blockHandlerClass:静态修饰处理函数
fallback:异常抛出处理逻辑,exceptionsToIgnore(排除部分异常) //异常导致的中断兜底 与blockHandler不冲突
1.返回类型一致。
2.参数匹配。
3.默认同类中,其他类需指定
exceptionToTrace :需要trace的异常
exceptionsToIgnore:排除的异常

配置:
1.web-context-unify:false controller方法对service方法的调用不认为是同一根链路
2. 配置持久化到Nacos
2.1 pom引入 sentinel-datasource-nacos
2.2 sentinel.datasource.${dataSourceName}.nacos
2.2.1 server-addr:nocos地址
2.2.2 dataId:微服务名
2.2.3 groupId:设定groupId
2.2.4 data-type:json 数据格式
2.2.5 rule-type:flow 规则类型
2.2.5.1 FLOW 流控规则
2.2.5.2 DEGRADE熔断规则
2.2.5.3 AUTHORITY访问控制规则
2.2.5.4 SYSTEM系统保护规则
2.2.5.5 PARAM_FLOW热点规则
3.nacos新建指定配置 (控制台修改不持久化,Nacos修改才能持久化)
3.1 resource:资源名称
3.2 limitApp:来源应用
3.3 grade:阈值类型
3.4 count:单机阈值
3.5 startegy:流控模式
3.6 controlBehavior:流控效果
3.7 clusterMode:是否集群
…其他
4.与openFeigh 集成实现服务降级
4.1 配置文件 feigh.sentinel.enable=true
5.与Gateway继承实现服务限流
5.1 引入sentinel-transport-simple-http \sentinel-spring-cloud-gateway-adapter
5.2 需配置CateWayConfiguration 包含 SentinelGatewayBlockExceptionHandler SentinelGatewayFilter 即可

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值