Sentinel微服务保护

Sentinel

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

特点

丰富的应用场景

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

易于使用,快速接入

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

多样化的流量控制

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

可视化的监控和规则管理

简单易用的 Sentinel 控制台

雪崩

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

解决方案

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

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

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

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

3.熔断降级:

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

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

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

流控模式

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

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

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

2.链路模式

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

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

  • 直接模式:对当前资源限流
  • 关联模式:高优先级资源触发阈值,对低优先级资源限流
  • 链路模式:阈值统计时,只统计从指定资源进入当前资源的请求,是对请求来源的限流
相关推荐
九河云20 小时前
数字化转型中的网络安全风险与零信任架构实践
运维·科技·安全·web安全·架构
木木子999920 小时前
业务架构、应用架构、数据架构、技术架构
java·开发语言·架构
鼓掌MVP1 天前
Java框架的发展历程体现了软件工程思想的持续进化
java·spring·架构
小马哥编程1 天前
【软考架构】案例分析-Web应用设计(应用服务器概念)
前端·架构
花姐夫Jun1 天前
在 Ubuntu ARM 架构系统中安装并使用花生壳实现内网穿透
arm开发·ubuntu·架构
Wang's Blog1 天前
Nestjs框架: 微服务事件驱动通信与超时处理机制优化基于Event-Based 通信及异常捕获实践
微服务·云原生·架构·nestjs
brzhang1 天前
读懂 MiniMax Agent 的设计逻辑,然后我复刻了一个MiniMax Agent
前端·后端·架构
YXWik61 天前
新版若依微服务增强swagger增强集成knife4j
微服务·云原生·架构
Wang's Blog1 天前
Nestjs框架: 微服务断路器实现原理与OPOSSUM库实践
运维·微服务·nestjs
深思慎考1 天前
微服务即时通讯系统(服务端)——文件存储模块全链路设计与实现(3)
linux·微服务·架构·c++项目·聊天系统