Spring Cloud Alibaba Sentinel - - > 容错机制

news2024/10/2 22:21:41

文章目录

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

Sentinel 的作用

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


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

cd

服务可用性问题:

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

导致服务不可用的原因:

硬件原因:

  • 磁盘空间不足

  • 内存不足

激增流量:

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

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

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

不稳定服务依赖:

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

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

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

cd

服务雪崩示例图01

Sentinel - - > 容错机制

常见的容错机制

  • 超时机制

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


  • 服务限流

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

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

cd

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


  • 隔离

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

b)根据信号量进行隔离


  • 服务熔断

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

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

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

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

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


  • 服务降级

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

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



参考:

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

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

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

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

相关文章

单例模式的创建(饿汉模式懒汉模式)

目录 一.什么是单例模式 二.用static来创建单例模式 三.饿汉模式与懒汉模式 四.饿汉模式与懒汉模式的线程安全问题 五.New引发的指令重排序问题 六.小结 一.什么是单例模式 单例模式就是指某个类有且只有一个实例(instance) 这个是由需求决定的,有些需求场景就要求实例不…

关于mysql学习

1.索引 1.1 索引概述 Mysql官方对索引的定义是:索引(index)是帮助mysql高效获取数据的数据结构(有序)。在数据库之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某些方式引用(指向)数据,这样就可以在数据结构…

密码技术扫盲:对称加密

个人博客 🎯 密码技术扫盲:对称加密密码技术扫盲:非对称加密密码技术扫盲:认证 人类最较真、技艺最精湛的事业是军事,密码技术最大放异彩的地方也在军事,战争中需要通过无线电或其他手段来传达指令&#…

LeetCode刷题复盘笔记—一文搞懂动态规划之309. 最佳买卖股票时机含冷冻期问题(动态规划系列第二十四篇)

今日主要总结一下动态规划的一道题目,309. 最佳买卖股票时机含冷冻期 题目:309. 最佳买卖股票时机含冷冻期 Leetcode题目地址 题目描述: 给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算…

Python编程 函数的定义与参数

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.函数 1.函数例子 不会让代码重复的出现。CVout 2.函数介绍(熟悉) 3.…

如何在AdsPower中设置Oxylabs住宅代理和数据中心代理?

AdsPower是一款适用于Windows和Mac系统的浏览器管理工具,允许多用户登录。AdsPower的主要功能有多账户管理、浏览器指纹处理等。 集成操作流程 在官网(www.adspower.com/download)下载AdsPower并完成安装工作后,单击新建配置文件…

分布式文件系统之NFS

「分布式」是现在蛮流行的一个词,而其盛行,离不开底层网络通信能力的迅速发展。在文件系统这个领域,早期的分布式实现更多的是用来实现「共享」,而不是「容错」。传统的集中式文件系统允许单个系统中的多用户共享本地存储的文件&a…

SVG公众号排版 | GIF动图如何禁止循环播放?PS设置了也没用!

在SVG公众号排版中,我们经常使用到GIF动图,有些排版需求是想让GIF动图一直无限循环播放,也有其他排版需求是只想让GIF动图播放一次就停止了,这种情况我们可以通过Photoshop软件来设置GIF动图的播放次数,详见下图。 但是呢,也有一种情况,即使在Photoshop软件设置了GIF动图…

大话设计模型 Task02:策略、装饰、代理

目录一、简单工厂模式问题描述模式定义问题分析代码实现二、策略模式问题描述问题分析模式定义代码实现三、装饰模式问题描述问题分析模式定义代码实现四、代理模式问题描述问题分析模式定义代码实现五、工厂方法模式问题描述问题分析模式定义简单工厂 vs. 工厂方法代码实现一、…

上传项目代码到Github|Gitee

上传项目代码到Github|Gitee 文章目录上传项目代码到Github|Gitee1、前置准备1.1 Git 安装1.2 在 Git 中设置用户名1.2.1 为计算机上的每个存储库设置 Git 用户名1.2.2 为一个仓库设置 Git 用户名1.3 SSH免密登录1.4 Github创建一个新的仓库2、上传项目2.1 初始化本地库2.2 添加…

蓝桥杯入门即劝退(十六)查找元素范围(双解法)

欢迎关注点赞评论,共同学习,共同进步! ------持续更新蓝桥杯入门系列算法实例-------- 如果你也喜欢Java和算法,欢迎订阅专栏共同学习交流! 你的点赞、关注、评论、是我创作的动力! -------希望我的文章…

什么是制造业数字化转型?制造业数字化转型的核心与意义

对于生产制造企业来讲,当下如果不进行数字化转型的话,很大概率会被时代所抛弃的。为什么这么讲?因为在未来的很长一段时间,你可以充分了解到,数字化转型已然成为了制造业向前的主旋律。既然数字化势在必行,…

可以赚钱的副业项目,简单易上手兼职副业推荐

在当前的经济环境下,对每个人来说,仅仅依靠那点薪水生活是非常紧张的。为了改善你的生活,你需要找到其他赚钱的方法,在互联网上做兼职是一个不错的选择。 今天推荐几个普通人可以做的兼职副业,希望对大家有所帮助。 一…

微信公众号的文章可以修改几次?修改的步骤有哪些

许多小伙伴们在运营微信公众号的时候,可能会遇到过这些难题,在发布微信公众号之前检查没有检查好,导致有错字或者是错句。有的时候可能配图还会配错! 今天伯乐网络传媒就给大家带来一些实用的东西,比如微信公众号可以…

深入理解 Python 的对象拷贝和内存布局

深入理解 Python 的对象拷贝和内存布局 前言 在本篇文章当中主要给大家介绍 python 当中的拷贝问题,话不多说我们直接看代码,你知道下面一些程序片段的输出结果吗? a [1, 2, 3, 4] b a print(f"{a } \t|\t {b }") a[0] 100…

微信小程序的自定义组件(1)

文章目录1. 自定义组件2. 组件样式3. 组件-数据、方法和属性4. 组件数据监听器5. 组件纯数据字段1. 自定义组件 Component(Object object) | 微信开放文档 (qq.com) 创建组件 在项目的根目录中,鼠标右键,创建components->test文件夹在新建的componen…

第十二章 计算学习理论

12.1 基础知识 计算学习理论研究的关于通过计算来进行学习的理论。即关于机器学习的理论基础,其目的是分析学习任务的困难本质,为学习算法提供理论保证,并根据分析结果指导算法设计。 12.2 PAC学习 计算学习理论中最基本的是概率近似正确&…

点击化学染料DBCO-PEG-CY7.5|Cyanine7.5-PEG-DBCO|花青素Cyanine7.5

​DBCO-PEG-CY7.5点击化学染料其中Cy7.5 (Cyanine 7.5) 是一种发近红外(NIR)荧光的花青素荧光染料。根据磺化与否,分为普通Cy7.5和磺化Cy7.5,但常常统称为Cy7.5。 Cy7.5的消光系数高,荧光也很亮,并且对pH不…

为什么很多人转行学习Web前端技术?

为什么很多人转行学习Web前端技术?不管你是工人阶层还是服务行业,是否想过转行IT,转行IT后肯定会选择一门编程语言进行深入学习,很多转行的人基础都不是太好,不是科班出身,甚至有的是专科乃至中专,前端的H…

cuda学习笔记3——cuda常用内存相关函数及其使用示例

cuda学习笔记3——cuda常用内存相关函数及其使用示例常用的GPU内存函数cudaMalloc()cudaMemcpy()cudaFree()代码示例常用的GPU内存函数 cuda程序将系统区分成host和device,二者有各自的memory。kernel可以操作device memory,为了能很好的控制device端内…