Sentinel(理论版)

news2024/11/17 16:44:58

Sentinel

1.什么是Sentinel

Sentinel 是一个开源的流量控制组件,它主要用于在分布式系统中实现稳定性与可靠性,如流量控制、熔断降级、系统负载保护等功能。简单来说,Sentinel 就像是一个交通警察,它可以根据系统的实时流量(请求)和系统的健康状况,动态地调整系统的流量规则,避免系统因为突发的高流量而崩溃,保证系统的稳定运行。

例如,假设你有一个在线商城的系统,在大促销活动期间,系统可能会突然接收到大量的访问请求,如果处理不当,系统可能会因为负载过高而变得响应缓慢甚至崩溃。这时,Sentinel 就可以发挥作用了,它可以限制访问速率,只允许一定数量的用户请求在同一时间进行,超过限制的请求可以被排队或直接拒绝,以此来保护系统不被过载。

总的来说,Sentinel 的目的是通过实时监控系统的流量和状态,动态地进行流量控制和服务降级,从而保证系统的高可用性和稳定性。

2.Sentinel的主要功能

1.流量控制
说明:就像是水坝控制水流一样,Sentinel 可以控制系统的请求流量,确保系统不会因为流量过大而崩溃。
场景:比如双十一期间,电商平台的订单系统可能会接收到海量订单请求,通过流量控制,Sentinel 可以限制每秒处理的订单数量,避免系统崩溃。

2.熔断降级
说明:当系统某部分出现问题,可能会拖垮整个系统。熔断降级就像是紧急刹车,暂时停用某些功能,保证系统的主体还能正常运行。
场景:如果一个在线视频网站的推荐服务出现故障,Sentinel 可以暂时关闭推荐功能,而不是让整个视频网站瘫痪,用户仍然可以搜索和观看视频。

3.系统负载保护
说明:保护系统不会因为过载(如CPU使用率过高)而崩溃,类似于电路中的过载保护器。
场景:在一个天气预报应用中,如果因为极端天气导致查询请求激增,超出了服务器的处理能力,Sentinel 可以限制请求量,保护系统不被过载。

4.热点参数限流
说明:对于频繁访问的“热点数据”,可以进行特别的流量控制,就像超市的促销区会特别安排工作人员维持秩序。
场景:在电商平台上,对于某个热门商品的购买请求可能会集中爆发,Sentinel 可以对这个商品的购买请求进行特别限流,保证服务器稳定。

5.授权规则
说明:根据请求来源(如IP地址)决定是否允许请求,类似于门卫根据身份决定是否让人进入。
场景:一个公司内部的管理系统,可以设置仅允许公司内部网络的请求访问,外部的任何请求都不允许,保证系统安全。

3.为什么需要Sentinel

1.防止雪崩效应:当某个服务器故障的时候,传统的做法是让请求一直等待,直到服务恢复正常,然而,这可能导致请求积压,进而导致其他服务也出现故障,最终形成雪崩效应,Sentinel可以通过熔断机制,及时返回错误信息,避免连锁故障。
2.流量控制:在高并发场景下,如果系统突然收到大量请求,可能会导致系统过载,影响正常的服务,Sentinel可以通过流量控制机制,限制并发请求的数量,确保系统的可用性和稳定性。
3.保护系统稳定性:在微服务架构中,多个服务之间互相依赖,一个服务的故障可能导致整个系统的崩溃,Sentinel可以对请求进行流量控制和熔断,避免由于某个服务器的故障导致整个系统不可用。

4.Sentinel基本概念

4.1什么是流量控制

流量控制是指对系统中的流量进行限制和请求,以确保在承受能力范围内正常运行

4.2流量控制算法

  1. 计数器流量控制算法
    解释:这个算法就像是超市入口的计数器,限定在一定时间内只允许一定数量的顾客进入。每当有顾客进入时,计数器就加一;时间到了后,计数器清零重新开始。
    例子:一个网站设置了每分钟只能处理100个请求。如果这一分钟有101个请求,当第101个请求在同一分钟内到来时,系统会拒绝这个请求,直到下一分钟开始;如果不到100个请求的话,这一分钟时间到了之后,计数器就清零,然后重新计数。
  2. 漏桶流量控制算法
    解释:想象一个水桶有一个固定速度的漏洞,无论向桶内倒水的速度多快,桶里的水只能通过漏洞以固定的速度流出。这个算法用于平滑流量,使得处理请求的速率保持恒定。
    例子:一个服务器被设置为每秒只能发送10个数据包。即使在某一刻服务器收到了一大批数据包,它也只会以每秒10个包的速率发送这些数据包,多余的数据包会在“桶”里排队等待处理。
  3. 令牌桶流量控制算法
    解释:令牌桶算法更加灵活。系统会以恒定的速度往桶里添加令牌,每个请求处理前都需要从桶里取出一个令牌。如果桶里没有令牌,请求就需要等待。但是,桶里可以存储令牌,允许短时间内处理大量请求,只要有足够的令牌。
    例子:一个API限制每秒可处理10个请求,但是它可以处理突发的20个请求,只要之前有足够的令牌积累在桶里。如果有一瞬间来了20个请求,系统可以处理这20个请求,但之后在没有足够令牌的情况下,新的请求就需要等待令牌的生成。

4.3流量控制角度

Sentinel流量控制主要有以下几个角度:
1.资源的调用关系,例如资源的调用链路,资源和资源之间的关系
2.运行指标,例如(QPS—每秒查询数)、线程池、系统负载等。
3.控制的效果:例如直接限流、冷启动、排队等
Sentinsl的设计理念是这三个角度自由选择,根据需求灵活的组合,来达到想要的目的
在这里插入图片描述
流控效果如下:
1.快速失败:这种方式是默认的流量控制方式,比如QPS超过任意规则的阈值之后,新的请求就会被立即拒绝,拒绝方式为抛出FlowException。这种方式适用于对系统处理能力确切已知的情况下,比如通过压测确定了系统的准确水位的时候。
2.Warm up :此项叫做预热/冷启动 方式,此模式主要是防止流量突然增加时,直接把系统的流量拉升到一个很高的程度,直接让系统垮了,通过冷启动,让通过的流量缓慢的增加,在一定的时间内逐渐增加到阈值上限,给系统一个预热的时间,避免直接被压垮。
3.排队等待(也叫匀速通过):排队等待会严格控制请求通过的间隔时间,让请求稳定且匀速的通过,可以用来处理间隔性突发的高流量。比如抢票软件,在某一秒内有大量的请求到来,而接下来的一段时间里处于空闲状态,我们希望在接下来的空闲时间里也能出去这些请求,而不是直接拒绝,让他们排队等待。在设置排队等待的时候,需要填写超时时间。

4.3什么是熔断

Sentinel 熔断是指在分布式系统中,为了防止系统雪崩,当某个微服务的错误率或响应时间超过预设的阈值时,自动停止对该服务的调用的机制。Sentinel 是阿里巴巴开源的面向分布式服务架构的高可用性保障组件,主要功能包括流量控制、熔断降级和系统负载保护等。
在微服务架构中,服务间的依赖错综复杂,任何一个服务的不稳定或失败都可能引起连锁反应,导致整个系统的不可用。熔断机制的引入,就是为了避免这种连锁反应,当检测到调用服务的失败率或延迟超过一定的阈值时,自动切断对该服务的调用,触发熔断,同时可能会提供一个备用方案(如返回一个默认值或调用一个备用服务),直到该服务恢复正常。

Sentinel 实现熔断主要有以下几种策略:
在这里插入图片描述

1.慢调用比例策略:当资源的平均响应时间超过阈值(如200ms),并且在一段时间内(如最近1分钟)的慢调用比例超过设定的比例(如50%),则对该资源进行熔断。
2.异常比例策略:当资源在一段时间内的异常比例超过设定的阈值(如50%),则对该资源进行熔断。
3.异常数策略:当资源在一段时间内的异常数超过设定的阈值,则对该资源进行熔断。
Sentinel 熔断的目的是通过对不稳定服务的及时隔离,保护系统的整体稳定性,同时也给出现问题的服务一个自我恢复的机会。一旦服务熔断后,Sentinel 会进入一个时间窗口,在这个时间窗口内部分请求(根据预设规则)仍然会尝试执行,如果这些尝试请求成功,则服务可能会从熔断状态恢复。这个过程称为“半开”状态,是为了探测服务是否已经恢复正常。

熔断的原理是通过对服务的监控和评估,根据一定的规则来判断服务的健康状况。当服务的错误率或者响应时间过设定的闻值时,熔断器会触发,并将后续的请求讯速拦截或者返回错误信息,而不是继续调用该服务,从而避免由于故障服务的长时间不可用或者响应过慢而导致整个系统的延迟或者崩溃。
容断机制的好外是能够快速失败并返回错误信息,避免资源的浪费和系统的连锁故障。当服务恢复正常时,熔断会逐渐放行请求,验证服务的可用性,确保系统逐渐恢复正常运行。
熔断通常与流量控制等其他机制结合使用,以加强系统的稳定性和可靠性。它可以降低系统的依赖性,提高系统容错能力,对于大规模分布式系统来说尤为重要。

4.4Sentinel组成

Sentinel中有两个重要的组件:资源和规则
1.资源:Sentinel中被保护的对象,可以是方法,接口,url等
2.规则:对资源的访问策略,包括限流,熔断,热点等。规则包含以下这些:
2.1限流规则:基于不同的模式对流量进行控制,可以直接拒绝,等待等。
2.2熔断规则:异常情况下进行熔断降级。
2.3热点规则:对热点数据进行针对性的流量控制。
2.4授权规则:对调用方进行黑白名单的限制。
2.5系统保护规则:基于CPU、负载、整体QPS、线程数等多个指标进行自适应的流量控制

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

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

相关文章

第8节、双电机多段直线运动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】,查看本系列全部文章 摘要:前面章节主要介绍了bresenham直线插值运动,本节内容介绍让两个电机完成连续的直线运动,目标是画一个正五角星 一、五角星图介绍 五角星总共10条直线,10个顶点。设定左下角为原点…

【Jenkins】pipeline基本使用

目录 一、pipeline 二、创建pipeline项目 1、安装pipeline插件 2、创建pipeline项目 三、pipeline语法 1、pipeline组成 2、agent:指定流水线的执行位置,流水线中每个阶段都必须在某个地方执行 3、stage:阶段,代表流水线的…

牛客——牛可乐的翻转游戏(状压,dfs)

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 牛可乐发明了一种新型的翻转游戏! 在一个有 nnn 行 mmm 列的棋盘上,每个格子摆放有一枚棋子,每一枚棋子的颜色要么是黑色,要么是白色。…

Simulink|光伏阵列模拟多类故障(开路/短路/阴影遮挡/老化)

目录 主要内容 模型研究 1.正常模型 2.断路故障 3.短路故障 4.阴影遮挡 5.老化模型 结果一览 1.U-I曲线 2.P-V曲线 下载链接 主要内容 该模型为光伏阵列模拟故障情况simulink模型,程序实现了多种故障方式下的光伏阵列输出功率-电压-电流关系特…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Radio组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Radio组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Radio组件 单选框,提供相应的用户交互选择项。 子组件 无。 接口 …

【前端素材】bootstrap4实现移动端电商APP页面 MobileShop(附源码)

一、需求分析 移动端电商网页是指为移动设备(如智能手机和平板电脑)优化设计的电子商务网页。它是在线商店的移动版本,旨在提供方便的购物体验和无缝的移动端操作。 移动端电商网页通常具有以下功能: 商品展示:移动端…

25.云原生ArgoCD高级之app of apps模式

文章目录 app of apps 模式介绍app如何管理apphelm方式管理kustomize方式管理 app of apps 模式介绍 通过一个app来管理其他app,当有多个项目要发布创建多个app比较麻烦,此时可以创建一个管理app,管理app创建后会创建其他app。比较适合项目环…

docker部署docker管理工具easydockerweb

重要提示 功能比较少,建议体验一下即可 安装 docker run -it -d -p 10041:3000 -e EDW_USERNAMEadmin -e EDW_PASSWORDadmin -v /var/run/docker.sock:/var/run/docker.sock qfdk/easydockerweb 使用 概览 镜像管理 容器管理

VS编译器对scanf函数不安全报错的解决办法(详细步骤)

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有…

使用pandas将excel转成json格式

1.Excel数据 2.我们想要的JSON格式 {"0": {"raw_data1": "Sam","raw_data2": "Wong","raw_data3": "Good","layer": "12v1"},"1": {"raw_data1": "Lucy…

Redis(三)(实战篇)

查漏补缺 1.spring 事务失效 有时候我们需要在某个 Service 类的某个方法中,调用另外一个事务方法,比如: Service public class UserService {Autowiredprivate UserMapper userMapper;public void add(UserModel userModel) {userMapper.…

AR人脸106240点位检测解决方案

美摄科技针对企业需求推出了AR人脸106/240点位检测解决方案,为企业提供高效、精准的人脸识别服务,采用先进的人脸识别算法和机器学习技术,通过高精度、高速度的检测设备,对人脸进行快速、准确地定位和识别。该方案适用于各种应用场…

Vue-53、Vue技术vuex使用

vuex 是什么 1、概念 专门在Vue 中实现集中式状态(数据)管理的一个Vue 插件,对vue 应用中多个组件的共享状态进行集中式的 管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。2、…

大数据Zookeeper--案例

文章目录 服务器动态上下线监听案例需求需求分析具体实现测试 Zookeeper分布式锁案例原生Zookeeper实现分布式锁Curator框架实现分布式锁 Zookeeper面试重点选举机制生产集群安装多少zk合适zk常用命令 服务器动态上下线监听案例 需求 某分布式系统中,主节点可以有…

发现本地Elasticsearch版本 不兼容第三方管理工具 带大家在官网中寻找并下载指定版本的Elasticsearch

我们在 springboot 整合Elasticsearch时可能会出现版本不兼容异常 首先 大家要搞清楚 目前 Elasticsearch(ES)与springboot 市场版本互相的兼容情况 可以参考我的文章 springboot与Elasticsearch版本兼容对比 这里 我们想下载 其他版本 还是访问官网 https://www.elastic.co/…

探索LLM的意图识别能力

不可否认的是,LLM(例如 OpenAI 的 GPT 系列)将在不断发展的对话式 AI 领域发挥重要作用。 关于使用 ChatGPT 执行各种任务的帖子和文章不计其数。 GPT 有几个关键功能值得进一步探索,例如其摘要、分类和生成文本的能力。 其中&…

U盘误删的文件怎么找回?5个宝藏方法分享!

“我想问问大家,在使用u盘时如果不小心把很重要的文件删除了应该怎么办呀?有什么简单又快速的U盘文件恢复方法可以推荐吗?” U盘作为一种便携式的存储设备,在日常工作中扮演着重要的角色。然而,如果不小心误删了U盘中的…

SpringBoot:自动配置报告

自动配置报告demo:点击查看 LearnSpringBoot03AutoConfig 点击查看更多的SpringBoot教程 一、application.properties代码 #开启springboot debug模式 #自动配置报告 #Positive matches: 自动配置类启用了(自动配置类匹配上了)&#xff0c…

hexo和github.io博客的搭建

简要: 最近在牛客网上看到有很多应届毕业生大佬的求职简历上都写上了自己的博客地址,并且在acwing上看到图图佬,铅笔佬也有自己的博客地址,大部分都采用了自己搭建博客的方式,而不是用脏乱差的csdn来写博客。所以我也采…

电脑服务器离线安装.net framework 3.5解决方案(错误:0x8024402c )(如何确定当前系统是否安装NET Framework 3.5)

问题环境: 日常服务的搭建或多或少都会有需要到NET Framework 3.5的微软程序运行框架,本次介绍几种不同的安装方式主要解决运行在Windows 2012 以上的操作系统的服务。 NET Framework 3.5 是什么? .NET Framework是微软公司推出的程序运行框架…