文章目录

  • Sentinel 的作用
  • 分布式微服务系统遇到的问题
  • 导致服务不可用的原因:
  • Sentinel - - > 容错机制
  • 参考:

Sentinel 的作用

  Sentinel 主要用来解决微服务架构中出现的一些可用性问题,从而实现系统的高可用。系统在运行过程中不可能不出现问题,我们需要做的是在系统出现问题的时候,通过容错机制来避免系统长时间处于不可用状态 (对于失败的请求可以通过定时任务做补偿)。

分布式微服务系统遇到的问题

服务可用性问题:

  • 缺乏高可用防护 / 容错机制
  • 缓存穿透
  • 缓存雪崩:
  • 服务雪崩:某个服务不可用,引起其它服务的不可用,最后造成整个服务调用链路不可用,从而导致整个微服务系统的服务雪崩。(因服务提供者的不可用,导致服务调用者的不可用,并将不可用逐渐放大的过程,被称为服务雪崩效应)
  • 负载不均:由于对服务器的容量评估不准确,高估了服务器的性能,在负载均衡时,给某台服务器设置的权重过大,分配的流量过多,导致服务器挂掉。
  • 服务器容量评估不准确
  • 缺乏依赖隔离
  • 缺乏容错机制
  • 激增流量
  • CPU / Load飙高
  • 单点故障
  • DB超时
  • 未处理异常

导致服务不可用的原因:

硬件原因:

  • 磁盘空间不足

  • 内存不足

激增流量:

  • 激增流量导致系统 CPU / Load飙高,无法正常处理请求。

  • 激增流量打垮冷系统 (数据库未连接、缓存未预热)。

  • 消息投递速度过快,导致消息堆积。

不稳定服务依赖:

  • 慢 SQL 查询卡爆数据库连接池。

  • 第三方服务不响应,线程池爆满。

  • 业务调用持续出现异常,异常未得到处理。

服务雪崩示例图01

Sentinel - - > 容错机制

常见的容错机制

  • 超时机制

在不做任何处理的情况下,服务提供者不可用,会导致消费者请求线程强制等待,造成系统资源耗尽。加入超时机制,一旦超时 (返回请求超时,请稍后重试),就释放资源。由于释放资源速度较快,一定程度上可以抑制资源耗尽的问题。

  • 服务限流

服务器每秒能承受的请求次数是有限的,如果某个服务的访问量达到它所能承受的临界值,就可能挤爆这台服务器,这就需要对其进行限流。

如下图:事先对服务器进行压力测试,得到其临界值,如500。然后提前设置每秒最大访问量为
500,当每秒请求的并发数为800时,其中300就会进行限流,返回“稍后重试”或者直拒绝处理。

QPS (Queries Per Second) 每秒请求数,就是说服务器在一秒的时间内处理了多少个请求。

  • 隔离

a)根据线程数量进行隔离 ( 对每个服务限制一个可访问的线程数量 ):,用户请求不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池满了,就会进行降级处理 ( 返回当前服务不可用 ),用户的请求不会被阻塞,至少可以看到一个执行结果 ( 例如返回xxx服务不可用此类友好的提示信息,后续可以通过定时任务做补偿 ),而不是无休止的等待或者看到系统崩溃。

b)根据信号量进行隔离:

  • 服务熔断

熔断概念最早出现电力中的保险丝,当电路电流异常就会将保险丝熔断,防止电路被烧毁。

服务熔断是指:远程服务不稳定 或者 网络抖动时,暂时关闭该服务。

当依赖的服务有大量超时请求时,再让新的请求去访问根本没有意义,只会平白消耗现有资源。比如我们设置的超时时间为1s,如果短时间内有大量请求在1s内得不到响应,就意味着这个服务出现了异常,此时就没有必要再让其他请求去访问这个依赖的服务了,这个时候应该使用断路器来避免资源浪费。

如下情况,当某个服务挂掉之后,就可能导致整个调用链路出现级联故障,进而引起整个调用链路的不可用,最后造成整个系统出现服务雪崩。这个时候可以在服务消费端设置服务熔断机制,当服务消费者调用服务提供者,服务提供者一直没有响应或者出现持续异常的时候,就可以针对这个服务提供者进行熔断 (也就是暂停对这个服务提供者的访问,等到这个服务提供者修复之后,再恢复正常使用,否则继续熔断)。

那么在服务熔断 至 服务修复期间,我们需要一个兜底的方案 ( 总不能什么都不做吧 ! ),通常是对服务进行降级。

  • 服务降级

服务降级是指:在服务熔断后,服务修复期间,提供的兜底方案/备用方案。有服务熔断,必然要有服务降级。

所谓降级,就是当某个服务熔断后,服务将不再被调用,此时客户端可以自己准备一个fallback(回退)回调,返回一个缺省值。例如:(备用接口 / 缓存 / mock数据)。这样做,虽然服务水平下降,但好歹还是可用的,比直接挂掉要强,当然这也要看具体的业务场景。

参考:

一个http请求就是一个线程吗,java的服务是每收到一个请求就新开一个线程来处理吗

java的服务是每收到一个请求就新开一个线程来处理吗?tomcat呢?

Spring Cloud Alibaba Sentinel - - > 容错机制相关推荐

  1. Spring Cloud Alibaba —— Sentinel 详细使用

    导航 引言 一.Sentinel的两个基本概念 二.流控规则 2.1 基本选项 2.2 高级选项 三.熔断(降级)规则 四.热点规则 五.授权规则(了解) 六.系统规则(了解) 七.自定义异常返回 八 ...

  2. 【java_wxid项目】【第十六章】【Spring Cloud Alibaba Sentinel集成】

    主项目链接:https://gitee.com/java_wxid/java_wxid 项目架构及博文总结: 点击:[使用Spring Boot快速构建应用] 点击:[使用Spring Cloud O ...

  3. Spring Cloud Alibaba - Sentinel入门案例(四)(热点规则 )

    Spring Cloud Alibaba - Sentinel入门案例(四)(热点规则 ) 回溯 什么是Sentinel? 正文 环境准备 简单使用 复杂使用 注意事项 回溯 什么是Sentinel? ...

  4. spring cloud alibaba sentinel 学习

    sentinel 学习 介绍(官方文档) 流量控制设计理念 熔断降级 Hystrix Sentinel 系统自适应保护 spring cloud alibaba sentinel sentinel.d ...

  5. Spring Cloud Alibaba | Sentinel: 服务限流高级篇

    Spring Cloud Alibaba | Sentinel: 服务限流高级篇 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如无特殊说明 ...

  6. spring cloud Alibaba Sentinel中文文档

    spring cloud Alibaba Sentinel中文文档 github中的中文文档:https://github.com/alibaba/Sentinel/wiki/介绍

  7. 【SpringCloud】Spring cloud Alibaba Sentinel 降级规则

    文章目录 1.概述 2.服务降级 2.1 RT 2.2 异常比例 2.3 异常数 1.概述 本章是接着上一章讲解:[SpringCloud]Spring cloud Alibaba Sentinel ...

  8. 深度思考 Spring Cloud + Alibaba Sentinel 源码原理

    随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性. 作者 | 向寒 / 孙玄 来源 | 架构之美 ...

  9. Spring Cloud Alibaba —— Sentinel 入门

    导航 一.什么是Sentinel 1.1 Sentinel 的优点 二.整合 Sentinel 演示 三.Sentinel控制台与微服务通信的原理 四.Sentinel 流控演示 一.什么是Senti ...

最新文章

  1. Php使用selenium爬虫,selenium,python爬虫_使用selenium爬取网站时输出结果不正确,selenium,python爬虫 - phpStudy...
  2. 2013-12-7 在超市给思杨买东西-思杨踢球
  3. tensorflow 入门经典实例
  4. html中after伪类原理,css伪类before跟after原理与使用(原)
  5. 入坑emacs之配置文件 .emas.d/init.el -v1.0
  6. Android Intent解析
  7. 机器学习实战-决策树-22
  8. 05 Linux快速安装 Oracle11g
  9. 微信自动抢红包软件被判赔 475 万;日本科学家打破网速全球纪录;JavaScript蝉联最受欢迎编程语言|极客头条...
  10. 【图像加密】基于matlab Logistic混沌+Arnold置乱图像加密解密【含Matlab源码 1281期】
  11. c语言编写游戏冒险,C语言-趣味游戏编写
  12. x5内核html5,X5内核+HTML5应用 Q立方浏览器预览版
  13. Java学习资料的汇总
  14. 电商公司ERP管理软件与旺店通、第三方仓库以及云仓的贯通解决方案
  15. 于佳宁担任BCF理事
  16. java实体类中的枚举类型_Java枚举类的使用
  17. 2012考研数学二第(21)题——中值定理:零点定理+数列极限:单调有界准则
  18. QGraphicsView 如何实现百度地图按照鼠标点进行放大缩小效果
  19. 6.1. Inserting Data
  20. Python爬虫:逆向分析某酷音乐请求参数

热门文章

  1. Shell 编程 ~ 从入门到入坑。
  2. 四大国际快递时效、优势对比
  3. SkyLight 添加LightingChannelMask功能
  4. 用户运营指标体系建设实践 by 千冰仪
  5. 金融反作弊中的设备指纹
  6. 信息系统项目管理师必背核心考点(四十九)合同法
  7. 二级域名配置以及nginx解析二级域名到html页面
  8. HTML5汽车赛道飙车游戏,死亡赛道飙车
  9. PPT中如何修改插入的图片为透明色
  10. 谈谈结果导向的做事方式