当前位置: 首页 > news >正文

为什么要选择Spring cloud Sentinel

为什么要选择Spring cloud Sentinel

  • 🍎对比Hystrix
    • 🍂雪崩问题及解决方案
      • 🍂雪崩问题
      • 🍂.超时处理
      • 🍂仓壁模式
      • 🍂断路器
      • 🍂限流
      • 🍂总结

🍎对比Hystrix

在SpringCloud当中支持多种服务保护技术:

  • Netfix Hystrix
  • Sentinel
  • Resilience4J

早期比较流行的是Hystrix框架,但目前国内实用最广泛的还是阿里巴巴的Sentinel框架,这里我们做下对比:

SentinelHystrixResilience4J
隔离策略信号量隔离线程池隔离/信号量隔离信号量隔离
熔断降级策略基于慢调用比例或异常比例基于失败比率基于异常比例,响应时间
实时指标实现滑动窗口滑动窗口(基于 RxJava)Ring Bit Buffer
规则配置支持多种数据源支持多种数据源有限支持
扩展性多个扩展点 丰富的SPI接口插件的形式接口形式
基于注解的支持支持支持支持
限流基于 QPS,支持基于调用关系的限流有限的支持Rate Limiter
流量整形支持慢启动、匀速排队模式不支持简单的Rate Limiter 模式
系统自适应保护支持不支持不支持
控制台开箱即用,可配置规则、查看秒级监控、机器发现等不完善不提供控制台,可对接其它监控系统
常见框架的适配Servlet、Spring Cloud、Dubbo、gRPC 等Servlet、Spring Cloud NetflixServlet、Spring Cloud Netflix
开源社区状态活跃停止维护较活跃

从这张对比图可以看到Sentinel 所占的优势

🍂雪崩问题及解决方案

🍂雪崩问题

微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。

在这里插入图片描述

如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时,其它不依赖于服务I的业务似乎不受影响。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但是,依赖服务I的业务请求被阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞:

在这里插入图片描述

服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,那么当前服务也就不可用了。

那么,依赖于当前服务的其它服务随着时间的推移,最终也都会变的不可用,形成级联失败,雪崩就发生了:

在这里插入图片描述

🍂.超时处理

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

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

在这里插入图片描述

🍂仓壁模式

方案2:仓壁模式

仓壁模式来源于船舱的设计:

在这里插入图片描述

船舱都会被隔板分离为多个独立空间,当船体破损时,只会导致部分空间进入,将故障控制在一定范围内,避免整个船体都被淹没。

于此类似,我们可以限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。

在这里插入图片描述

🍂断路器

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

断路器会统计访问某个服务的请求数量,异常比例:

在这里插入图片描述

当发现访问服务D的请求异常比例过高时,认为服务D有导致雪崩的风险,会拦截访问服务D的一切请求,形成熔断:

在这里插入图片描述

🍂限流

流量控制:限制业务访问的QPS,避免服务因流量的突增而故障。

在这里插入图片描述

🍂总结

什么是雪崩问题?

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

可以认为:

限流是对服务的保护,避免因瞬间高并发流量而导致服务故障,进而避免雪崩。是一种预防措施。

超时处理、线程隔离、降级熔断是在部分服务故障时,将故障控制在一定范围,避免雪崩。是一种补救措施。

相关文章:

为什么要选择Spring cloud Sentinel

为什么要选择Spring cloud Sentinel 🍎对比Hystrix🍂雪崩问题及解决方案🍂雪崩问题🍂.超时处理🍂仓壁模式🍂断路器🍂限流🍂总结 🍎对比Hystrix 在SpringCloud当中支持多…...

第八天:gec6818arm开发板和Ubuntu中安装并且编译移植mysql驱动连接QT执行程序

一、Ubuntu18.04中安装并且编译移植mysql驱动程序连接qt执行程序 1 、安装Mysql sudo apt-get install mysql-serverapt-get isntall mysql-clientsudo apt-get install libmysqlclient-d2、查看是否安装成功,即查看MySQL版本 mysql --version 3、MySQL启动…...

使用JavaScript实现图片的自动轮播

介绍 在网站开发中,经常会遇到需要展示多张图片并自动切换的需求,这就需要使用JavaScript来实现图片的自动轮播功能。本文将通过一个简单的例子,演示如何用JavaScript实现图片的自动轮播。 实现步骤: HTML结构: 首先…...

React 如何拿时间戳计算得到开始和结束时间戳

获取需要的时间戳(开始 and 结束时间戳) 调用如下方法就行: function getWantTimestamp(props) {//当前时间const nowDate parseInt((new Date().getTime() / 1000).toString()); //当前时间switch (props) {// 当前时间时间戳case "nowData": {return n…...

leetcode114 二叉树展开为链表

题目 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 输…...

Linux系统上使用SQLite

1. 安装SQLite 在Linux上安装SQLite非常简单。可以使用包管理器(如apt、yum)直接从官方软件源安装SQLite。例如,在Ubuntu上使用以下命令安装SQLite: sudo apt-get install sqlite32. 打开或创建数据库 要打开或创建一个SQLite数…...

实现一个超级简单的string类(基于c++)

简单的string仅仅需要构造函数&#xff0c;拷贝构造,移动构造和移动赋值&#xff0c;operator&#xff0c;析构函数等。如下&#xff1a; #include<iostream> #include<assert.h> using namespace std; namespace qyy {class string{public:friend ostream& …...

uniapp存值和取值,获取登录凭证 code方法

Uniapp 的存值和取值 Uniapp 的存值和取值方法可以使用Vue.js的数据绑定方式&#xff0c;也可以使用uni.setStorageSync() 和 uni.getStorageSync() 方法。 使用Vue.js的数据绑定方式&#xff1a; 在Vue组件中定义一个data属性&#xff0c;然后将需要存储的值赋给该属性。例…...

【SpringCloud微服务全家桶学习笔记-服务调用Ribbon/openFeign】

SpringCloud微服务全家桶学习笔记 内容&#xff1a;SpringCloud SpringCloud alibaba 技术栈&#xff1a;Java8mavengit&#xff0c;githubNginxRabbitMQSpringBoot2.0 仓库&#xff1a;链接 服务调用Ribbon 是什么&#xff1f; Ribbon是Netflix发布的开源项目&#xff…...

Qt使用I.MX6U开发板上的按键(原理:将电脑键盘方向键↓在Qt中的枚举值与开发板中按键定义的枚举值一致,这样电脑端测试效果就与开发板的一致)

在上篇介绍了Qt点亮I.MX6U开发板的一个LED&#xff0c;对于Qt控制I.MX6U开发板的一个蜂鸣器原理也是一样的&#xff0c;就不做详细介绍&#xff0c;具体可参考Qt控制I.MX6U开发板的一个蜂鸣器&#xff0c;本篇介绍Qt使用I.MX6U开发板上的按键的相关内容。 文章目录 1. 开发板硬…...

C++ RAII在HotSpot VM中的重要应用

RAII&#xff08;Resource Acquisition Is Initialization&#xff09;&#xff0c;也称为“资源获取就是初始化”&#xff0c;是C语言的一种管理资源、避免泄漏的惯用法。C标准保证任何情况下&#xff0c;已构造的对象最终会销毁&#xff0c;即它的析构函数最终会被调用。简单…...

python随手小练

题目&#xff1a; 使用python做一个简单的英雄联盟商城登录界面 具体操作&#xff1a; print("英雄联盟商城登录界面") print("~ * "*15 "~") #找其规律 a "1、用户登录" b "2、新用户注册" c "3、退出系统&quo…...

MySQL——函数和流程控制

2023.9.21 函数 含义&#xff1a;一组预先编译好的SQL语句的集合&#xff0c;理解成批处理语句。 提高代码的重用性简化操作减少了编译次数并且减少了和数据库服务器的连接次数&#xff0c;提高了效率 与存储过程的区别&#xff1a; 存储过程&#xff1a;可以有0个返回&am…...

【Vue3 源码讲解】nextTick

nextTick 是 Vue 3 中用于异步执行回调函数的函数&#xff0c;它会将回调函数延迟到下一个微任务队列中执行。其中&#xff0c;Vue 更新 DOM 是异步的。下面是对 nextTick 函数的详细解释&#xff1a; export function nextTick<T void, R void>(this: T,fn?: (this:…...

什么是ATR,在聚宽量化平台如何计算ATR

海龟们使用两种资金管理方法。首先&#xff0c;我们把头寸分成一个个小块。这样&#xff0c;即使一笔交易赔了钱&#xff0c;我们损失的也只是一个头寸的一部分。里奇和比尔把这些小块称作头寸单位。其次&#xff0c;我们使用里奇和比尔发明的一种创新性的头寸规模决定方法。这…...

Python 爬虫实战之爬淘宝商品并做数据分析

前言 是这样的&#xff0c;之前接了一个金主的单子&#xff0c;他想在淘宝开个小鱼零食的网店&#xff0c;想对目前这个市场上的商品做一些分析&#xff0c;本来手动去做统计和分析也是可以的&#xff0c;这些信息都是对外展示的&#xff0c;只是手动比较麻烦&#xff0c;所以…...

Python爬虫-requests.exceptions.SSLError: HTTPSConnectionPool疑难杂症解决(1)

前言 本文是该专栏的第7篇,后面会持续分享python爬虫案例干货,记得关注。 在爬虫项目开发中,偶尔可能会遇到SSL验证问题“requests.exceptions.SSLError: HTTPSConnectionPool(host=www.xxxxxx.com, port=443): Max retries exceeded with url ...”。亦或是验证之后的提示…...

12:STM32---RTC实时时钟

目录 一:时间相关 1:Unix时间戳 2: UTC/GMT 3:时间戳转化 二:BKP 1:简历 2:基本结构 三: RTC 1:简历 2: 框图 3:RTC基本结构 4:RTC操作注意 四:案例 A:读写备份寄存器 1:连接图 2: 步骤 3: 代码 B:实时时钟 1:连接图 2:函数介绍 3:代码 一:时间相关 1:Un…...

【动态规划刷题 16】最长等差数列 (有难度) 等差数列划分 II - 子序列

1027. 最长等差数列 https://leetcode.cn/problems/longest-arithmetic-subsequence/ 给你一个整数数组 nums&#xff0c;返回 nums 中最长等差子序列的长度。 回想一下&#xff0c;nums 的子序列是一个列表 nums[i1], nums[i2], …, nums[ik] &#xff0c;且 0 < i1 <…...

【postgresql】替换 mysql 中的ifnull()

数据库由mysql 迁移到postgresql&#xff0c;程序在执行查询时候报错。 HINT: No function matches the given name and argument types. You might need to add explicit type casts. CONTEXT: referenced column: ifnull 具体SQL: SELECT ifnull(phone,) FROM c_user p…...

百度网盘提取码智能获取工具:提升资源访问效率的技术方案

百度网盘提取码智能获取工具&#xff1a;提升资源访问效率的技术方案 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 核心价值&#xff1a;重新定义资源访问效率 &#x1f680; 在信息快速流转的今天&#xff0c;获取网络资源…...

技术揭秘:深入解析Universal-IFR-Extractor固件逆向工程工具

技术揭秘&#xff1a;深入解析Universal-IFR-Extractor固件逆向工程工具 【免费下载链接】Universal-IFR-Extractor Utility that can extract the internal forms represenation from both EFI and UEFI modules. 项目地址: https://gitcode.com/gh_mirrors/un/Universal-IF…...

计算机毕业设计springboot彝族民族文化宣传网站 基于SpringBoot的彝族非物质文化遗产数字化展示平台 SpringBoot框架下彝族传统风俗文化传播系统

计算机毕业设计springboot彝族民族文化宣传网站l36tn9 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09;本套源码可以先看具体功能演示视频领取&#xff0c;文末有联xi 可分享 在当今数字化浪潮席卷全球的背景下&#xff0c;少数民族文化的保护与传承面临着前所未有…...

Docker镜像的制作

什么是Docker镜像&#xff1f; Docker镜像是一个轻量级、独立的可执行软件包&#xff0c;包含运行应用程序所需的一切&#xff1a;代码、运行时、系统工具、系统库和设置。镜像是容器的基础&#xff0c;容器是镜像的运行实例。 准备工作 安装Docker 首先确保你的系统已安装D…...

RWKV7-1.5B-g1a多场景落地:HR部门用它自动生成岗位JD要点与面试问题清单

RWKV7-1.5B-g1a多场景落地&#xff1a;HR部门用它自动生成岗位JD要点与面试问题清单 1. 为什么HR部门需要AI助手 招聘工作中有大量重复性文案工作&#xff0c;比如&#xff1a; 为不同岗位编写职位描述(JD)设计结构化面试问题整理岗位核心能力要求制作候选人评估标准 传统方…...

终极ThinkPad风扇控制指南:如何让你的笔记本更安静更高效?

终极ThinkPad风扇控制指南&#xff1a;如何让你的笔记本更安静更高效&#xff1f; 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 你是否曾经被ThinkPad风扇的噪音困扰…...

跨境服务数字化转型 JAVA 国际版打手俱乐部陪玩系统完整开发教程

以下是基于JAVA开发国际版打手俱乐部陪玩系统的完整开发教程&#xff0c;涵盖技术选型、核心功能实现、安全合规及部署方案&#xff1a;一、技术选型与架构设计后端框架&#xff1a;Spring Boot 3.2 Spring Cloud Alibaba&#xff1a;提供微服务拆分能力&#xff0c;支持Nacos…...

追踪Elsevier审稿进度:开源工具如何提升学术投稿效率

追踪Elsevier审稿进度&#xff1a;开源工具如何提升学术投稿效率 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 学术出版流程中&#xff0c;审稿进度的不确定性常给研究者带来困扰。Elsevier作为全球领先的学术出版…...

Windows下用Rclone挂载WebDAV的完整指南:从安装到开机自启(含常见问题解决)

Windows系统下Rclone挂载WebDAV全流程实战手册 引言&#xff1a;为什么选择Rclone挂载WebDAV&#xff1f; 在日常办公和团队协作中&#xff0c;我们经常需要访问云端存储的文件。WebDAV作为一种基于HTTP协议的文件管理标准&#xff0c;被Nextcloud、OwnCloud等主流网盘广泛支…...

毕业生就业新趋势:央国企成首选“避风港”

据教育部数据显示&#xff0c;2024届全国普通高校毕业生规模预计达到1179万人&#xff0c;创历史新高。在宏观经济环境面临挑战、部分行业竞争加剧的背景下&#xff0c;庞大的毕业生群体面临着前所未有的就业压力。与此同时&#xff0c;一个显著的趋势正在显现&#xff1a;中央…...