Sentinel微服务保护

Sentinel

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。

特点

丰富的应用场景

阿里巴巴 10 年双十一积累的丰富流量场景,包括秒杀、双十一零点持续洪峰、热点商品探测、预热、消息队列削峰填谷等多样化的场景
*

易于使用,快速接入

简单易用,开源生态广泛,针对 Dubbo、Spring Cloud、gRPC、Zuul、Reactor、Quarkus 等框架只需要引入适配模块即可快速接入
*

多样化的流量控制

资源粒度、调用关系、指标类型、控制效果等多维度的流量控制
*

可视化的监控和规则管理

简单易用的 Sentinel 控制台

雪崩

所谓的雪崩指的是:微服务之间相互调用,调用链中某个微服务出现问题了,导致整个服务链的所有服务也跟着出问题,从而造成所有服务都不可用

解决方案

1.超时处理:是一种临时方针,即设置定时器,请求超过规定的时间就返回错误信息,不会无休止等待

缺点:在超时时间内,还未返回错误信息内,服务未处理完,请求激增,一样会导致后面的请求阻塞​

2.线程隔离:也叫舱壁模式,即限定每个业务能使用的线程数,避免耗尽整个tomcat的资源

缺点:会造成一定资源的浪费。明明服务已经不可用了,还占用固定数量的线程

3.熔断降级:

  • 熔断: 由"断路器"统计业务执行的异常比例,如果超出"阈值"则会熔断/暂停该业务,拦截访问该业务的一切请求,后续搞好了再开启。从而做到在流量过大时(或下游服务出现问题时),可以自动断开与下游服务的交互,并可以通过自我诊断下游系统的错误是否已经修正,或上游流量是否减少至正常水平来恢复自我恢复。熔断更像是自动化补救手段,可能发生在服务无法支撑大量请求或服务发生其他故障时,对请求进行限制处理,同时还可尝试性的进行恢复
  • 降级: 丢车保帅。针对非核心业务功能,核心业务超出预估峰值需要进行限流;所谓降级指的就是在预计流量峰值前提下,整体资源快不够了,忍痛将某些非核心服务先关掉,待渡过难关,再开启回来

4.限流: 也叫流量控制。指的是限制业务访问的QPS,避免服务因流量的突增而故障。是防御保护手段,从流量源头开始控制流量规避问题

  • 限流是对服务的保护,避免因瞬间高并发流量而导致服务故障,进而避免雪崩。是一种预防措施
  • 超时处理、线程隔离、降级熔断是在部分服务故障时,将故障控制在一定范围,避免雪崩。是一种补救措施

流控模式

在添加限流时,点击高级选项,可以选择三种流控模式:

  • 直接:统计当前资源的请求,触发阈值时对当前资源直接限流,也是默认的模式。
  • 关联:统计与当前资源相关的另一个资源,触发阈值时,对当前资源限流。
  • 链路:统计从指定链路访问到本资源的请求,触发阈值时,对指定链路限流。
1.关联模式

关联模式使用场景:比如用户支付时需要修改订单状态,同时用户要查询订单。查询和修改操作会争抢数据库锁,产生竞争。业务需求是优先支付和更新订单的业务,因此当修改订单业务触发阈值时,需要对查询订单业务限流。

2.链路模式

只针对从指定链路访问到本资源的请求做统计,判断是否超过阈值。

场景:有查询订单和创建订单业务,两者都需要查询商品。针对从查询订单进入到查询商品的请求统计,并设置限流。(使其不影响创建订单时的性能)

  • 直接模式:对当前资源限流
  • 关联模式:高优先级资源触发阈值,对低优先级资源限流
  • 链路模式:阈值统计时,只统计从指定资源进入当前资源的请求,是对请求来源的限流
相关推荐
热爱运维的小七6 分钟前
从数据透视到AI分析,用四层架构解决运维难题
运维·人工智能·架构
桂月二二40 分钟前
实时事件流处理架构的容错设计
架构·wpf
喵个咪2 小时前
开箱即用的GO后台管理系统 Kratos Admin - 定时任务
后端·微服务·消息队列
孪生质数-5 小时前
SQL server 2022和SSMS的使用案例1
网络·数据库·后端·科技·架构
強云6 小时前
界面架构 - MVVM (Qt)
qt·架构
努力的小Qin7 小时前
银河麒麟V10 aarch64架构安装mysql教程
数据库·mysql·架构
SimonKing7 小时前
因为不知道条件注解@Conditional,错失15K的Offer!
java·后端·架构
Lei活在当下7 小时前
【NowInAndroid架构拆解】(7)UI层解析——MainActivity构建过程
架构
Clank的游戏栈7 小时前
《全栈+双客户端Turnkey方案》架构设计图
架构