微服务框架 SpringCloud微服务架构 微服务保护 30 初识Sentinel 30.1 雪崩问题及解决方案

news2024/9/24 7:24:25

微服务框架

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】

微服务保护

文章目录

      • 微服务框架
      • 微服务保护
      • 30 初识Sentinel
        • 30.1 雪崩问题及解决方案
          • 30.1.1 雪崩问题
          • 30.1.2 总结

30 初识Sentinel

30.1 雪崩问题及解决方案

30.1.1 雪崩问题

【先来看一个场景】

在这里插入图片描述

当前有这么一些个微服务,A、B、C、D,各个服务之间都可能存在有依赖关系,

在这里插入图片描述

比如说现在就有服务A 的有一个业务依赖于服务B, 还有个业务依赖于服务D

在这里插入图片描述

现在服务D 出现 了故障

在这里插入图片描述

现在服务A 中依赖于服务D 的业务就不能正常工作了

等待阻塞越来越多时

在这里插入图片描述

会导致服务A的Tomcat 资源耗尽,现在就算请求不是访问服务D 的,也不能正常工作了,

粗略地就可以认为,服务A 也出现故障了

在这里插入图片描述

这就形成了 一个服务故障,导致依赖于它的一个服务也跟着故障了的情况

【而且,这只是一个简单的调用关系】

在实际的微服务中,一定会更加 复杂

在这里插入图片描述

在这里插入图片描述

因为这样的原因,一个拖垮一个,故障的服务越来越多,这就会导致整个微服务群,都不可用了

【雪崩问题】微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。

【解决雪崩问题的常见方式有四种】

① 超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待

在这里插入图片描述

超过时间后, 它会立即结束请求,返回给用户信息,而不是 阻塞在那里【这样请求就释放了,不会一直占用Tomcat 的资源】

但是这种方式并不能真正解决问题,只能是说“缓解”,因为这个等待时间总会有可能没有请求的速度快

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

在这里插入图片描述

船中 这样的设计就能在一定程度上加强船 的“容灾能力”。在程序设计中

在这里插入图片描述

将服务A 中的资源划分成一个个独立的线程池,给每个业务分配一个线程池,

这样就可以避免整个Tomcat 的资源耗尽的问题情况

【但是这样也存在着资源浪费的问题,

在这里插入图片描述

明明服务C已经挂掉了,但是还是让来的 请求尝试去访问 服务C】

③ 熔断降级:由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。

举个栗子

在这里插入图片描述

这是最先前的服务阻塞 导致服务Tomcat 资源耗尽的情况

【熔断】

在这里插入图片描述

熔断会去统计服务A 中的业务,比如来了几个请求

在这里插入图片描述

现在的统计情况就是一共三个请求,故障了俩,故障率63%,如果说阈值是50%,那就超出阈值了

这个时候就会直接熔断

在这里插入图片描述

一旦出现熔断,服务A 依赖于服务D 的业务就再也不能执行 了【被拦截】

在这里插入图片描述

【快速失败 → 资源快速释放】

④ 流量控制:限制业务访问的QPS【每秒钟处理请求的数量】,避免服务因流量的突增而故障。

【举个栗子】

在这里插入图片描述

现在有一个微服务,它能承受最大的QPS = 2( 即每秒钟最多处理两个请求)

为了避免业务请求真的来了很多,引入Sentinel

在这里插入图片描述

Sentinel 可以按照这个服务可以承受的频率,去释放请求【预防雪崩,而前面三种是已经出现故障 了,如何避免故障传递】

30.1.2 总结

什么是雪崩问题?

  • 微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。

如何避免因瞬间高并发流量而导致服务故障?

  • 流量控制

如何避免因服务故障引起的雪崩问题?

  • 超时处理
  • 线程隔离
  • 降级熔断

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/79045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

类别不平衡Class-imbalance解决方法

类别不平衡是指分类任务中不同类别的训练样例数目差别很大的情况。 1、扩大数据集 2、欠采样 欠采样(under-sampling):对大类的数据样本进行采样来减少该类数据样本的个数,使其与其他类数目接近,然后再进行学习。 随…

第十四届蓝桥杯集训——JavaC组第九篇——位运算符

第十四届蓝桥杯集训——JavaC组第九篇——位运算符 目录 第十四届蓝桥杯集训——JavaC组第九篇——位运算符 值交换 异或值交换 其它位移符号&#xff1a; 这个稍微难度大一些&#xff0c;基础的有【&与、|或、^异或、<<左位移、>>右位移】。 我们一个一个…

游戏开发43课 移动游戏性能优化2

2. 资源优化 病从口入&#xff0c;资源好比是入口&#xff0c;它们若出现问题&#xff0c;会引发一连串性能问题。相反&#xff0c;资源若是优化得好&#xff0c;后面所有章节的性能都可受益。这也是把资源优化的章节提到最前的原因。 2.1 纹理优化 纹理优化的目的是让它们占…

多锦鑫能:低碳化、智能化、无人化矿山运营时代来临

全球气候变暖已经成为人类社会必须面对的重大课题&#xff0c;国际社会在推动节能减排、实现碳中和大目标上也已经达成一致意见。中国作为全球第二大经济体和负责任的大国&#xff0c;也明确向国际社会承诺&#xff0c;将在2030年实现碳达峰、2060年前实现碳中和目标。 围绕这…

[附源码]计算机毕业设计基于Vuejs的中国名茶销售平台Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

作者推荐 | 【分布式技术专题】「架构设计方案」图解学习法总结集群模式下的各种软负载均衡策略实现及原理分析

背景介绍 在分布式系统中&#xff0c;负载均衡是非常重要的环节&#xff0c;通过负载均衡将请求派发到网络中的一个或多个节点上进行处理。 通常来说&#xff0c;负载均衡分为硬件负载均衡及软件负载均衡。硬件负载均衡&#xff0c;顾名思义&#xff0c;在服务器节点之间安装专…

功能安全软件架构

已剪辑自: https://mp.weixin.qq.com/s/pCenGTqg2Xi_t7b8ebNHMA 1. E-GAS 安全架构思想 汽车功能安全旨在把电子电气系统失效而导致的人身危害风险控制在合理范围内。下图是常见的电子电气系统硬件构成图&#xff0c;一个电子电气系统的构成要素&#xff0c;除了图中可见的硬…

均值坐标参数化(MVC Parameterization)

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 均值坐标定义 均值坐标定义 v0是多边形v1v2v3...vn内的一点v_0是多边形v_1v_2v_3...v_n内的一点v0​是多边形v1​v2​v3​...vn​内的一点 就会存在均值坐标ϕi(v0)ω…

腾讯云服务器CVM快速配置购买教程,新手上云必备!

腾讯云服务器快速配置购买教程是新手必备的上云教程。主机教程网在本文中以腾讯云服务器为例&#xff0c;给大家带来一个完整的、手把手教学的服务器购买流程。助力快速完成服务器的购买、配置、以及网站的搭建&#xff0c;给新手节省宝贵的时间&#xff0c;避免采坑&#xff0…

线程相关学习记录(1)

认识线程 什么是线程 进程&#xff1a; 正常电脑中启动的某个程序应用&#xff0c;并且会获得计算机分配的资源&#xff08;cpu&#xff0c;内存&#xff0c;硬件设备&#xff09; 线程&#xff1a; 进程中为了完成某个功能&#xff0c;内部划分出的不同的资源分配单位。通常…

[附源码]Python计算机毕业设计SSM基于框架的旅游管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

MyBatis详细学习笔记

一、MyBatis简介 MyBatis是ORM框架&#xff0c;即对象关系映射框架。 二、搭建MyBatis 不同的MySQL版本使用的JDBC不同 com.mysql.jdbc.Driver // MySQL 5 com.mysql.cj.jdbc.Driver // MySQL 8不同版本的MySQL的url也不同 jdbc:mysql://localhost:3306/ssm // MySQL 5 jd…

神仙级Python办公自动化教程(非常详细),从零基础入门到精通,轻松玩转Excel,从看这篇开始

Excel是Office办公中使用非常频繁的一个表格制作、数据分析与图表制作的组件。随着现在数据处理量越来越大&#xff0c;日常办公中很多重复性工作耗费了广大办公人员越来越多的时间&#xff0c;那么如何才能化繁为简&#xff0c;提高办公自动化水平呢&#xff1f;借助Python中的…

【小程序】小程序中插槽使用

&#x1f4ad;&#x1f4ad; ✨&#xff1a;小程序插槽   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;: 没关系 天空越黑星星越亮&#x1f49c;&#x1f49c;   &#x1f338;: 如有错误或不足之处&#xff0c;希望可以指正&#xff0c;非常感谢&#x1f60…

大学生个人网站作业 超简单DIV CSS个人网页成品 简单个人网站作业模板 HTML个人网页设计下载 简约黑白色个人主页

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

Redis大key多key拆分方案

业务场景中经常会有各种大key多key的情况&#xff0c; 比如&#xff1a; 1&#xff1a;单个简单的key存储的value很大 2&#xff1a;hash&#xff0c; set&#xff0c;zset&#xff0c;list 中存储过多的元素&#xff08;以万为单位&#xff09; 3&#xff1a;一个集群存储了…

Java脚本化编程实践整理 ScriptEngineManager万字详解

文章目录认识Java支持脚本语言的意义Java对JavaScript的支持Rhino/Nashorn概述Nashorn的目的实践操作HelloWorld执行脚本文件代码脚本语言使用Java的变量执行脚本方法/函数脚本语言使用Java的类对象脚本语言实现Java的接口脚本的多个作用域脚本语言使用Java的数据类型创建java对…

[附源码]计算机毕业设计基于Web的软考题库平台Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

CSS固定定位与粘性定位4大企业级案例

前面两篇文章为大家详细讲解了相对定位与绝对定位的应用场景和案例。如果想了解的可以在公众号里面查看去看。本小节我们学习下固定定位与粘性定位的应用场景和案例。 属性值 描述 relative 相对定位 相对于自身正常位置进行位置的调整 absolute 绝对定位 相对于其最近的定…

如何用实时数据分析辅助企业智能决策,这个高效的解决方案了解下?

随着产业互联网的发展&#xff0c;企业数字化能力的边界也在不断拓展&#xff0c;除了对海量数据的获取、处理及应用需求以外&#xff0c;更快地获取实时数据也开始成为大数据时代各行各业的共同目标。 在企业的业务经营中&#xff0c;实时数据是营销、运维、决策的重要支撑&am…