Sentinel限流、熔断

1、限流

单个服务节点限流

        sentinel 提供了两种不同的隔离机制:信号量隔离和线程池隔离,它们的主要区别如下:

  1. 信号量隔离(Semaphore Isolation)

    • 原理:信号量隔离基于计数器(或称令牌桶)的概念。对某个资源设置一个并发访问的最大数量(信号量大小),当请求到达时,如果当前信号量未达到上限,则分配一个信号量并允许请求通过;否则拒绝请求。
    • 特点:信号量隔离不使用额外的线程池来处理请求,因此在高并发场景下能够减少线程切换开销,提高系统性能。但信号量隔离不阻塞请求,超过阈值的请求直接被拒绝,不会等待。
  2. 线程池隔离(Thread Pool Isolation)

    • 原理:线程池隔离为每个受保护的资源分配一个独立的线程池,只有当线程池中有空闲线程时,新的请求才能执行。线程池的大小可以配置,超出线程池容量的请求会被放入队列中等待,若队列也满,则请求会被拒绝。
    • 特点:线程池隔离提供了更强的隔离效果,确保资源在一个可控的线程环境中执行,避免因大量并发请求导致的资源耗尽问题。但相比于信号量隔离,线程池隔离可能会引入更多的线程上下文切换成本,并且需要管理线程生命周期。

        总结来说,信号量隔离侧重于快速地限制并发请求数量,适用于轻量级服务或者对响应速度要求较高的场景;而线程池隔离则适合于资源密集型操作,它可以更有效地控制资源内部的状态,并防止由于过多并发而导致的服务雪崩效应。在 Sentinel 中,默认采用的是信号量隔离策略,但同时也支持配置为线程池隔离以满足特定需求。

        Sentinel 中的信号量隔离和线程池隔离机制都是针对单个服务节点进行资源保护的限流策略。它们主要用于控制单机上的并发请求量或资源消耗,确保在该服务节点层面不会因并发过高而导致系统过载。

集群限流

        对于分布式场景下的集群限流,虽然 Sentinel 提供了规则的集中式管理和配置推送(通过接入配置中心如 Nacos、Apollo 等),但信号量隔离和线程池隔离的具体执行仍然是在各个独立的服务节点上完成的,并非直接实现跨多个服务节点的总限流。要实现全局一致的限流效果,通常需要结合负载均衡器策略以及服务内部的协调机制来共同达成目标。

2、熔断

官方文档:circuit-breaking | Sentinel

熔断

        Sentinel 熔断(Circuit Breaker)是阿里巴巴开源的分布式系统的流量控制组件中的一种重要策略。它借鉴了电路熔断器的工作原理,当某个服务调用出现不稳定或者异常时,可以快速地阻止对这个服务的连续请求,防止故障扩散和雪崩效应。

        在 Sentinel 中,熔断机制具有以下关键特性:

  1. 状态管理

    • CLOSED(关闭状态):正常运行,所有请求都会被处理。
    • OPEN(打开状态):熔断器触发后进入此状态,不再允许通过任何请求,并且直接返回降级响应或抛出异常。此时,会记录熔断状态并持续一段时间(熔断时间窗口)。
    • HALF-OPEN(半开状态):熔断时间窗口过后,熔断器会进入半开状态,开始尝试放行部分请求以检查目标服务是否已经恢复。如果成功则认为服务恢复,关闭熔断器;若继续失败,则重新转为 OPEN 状态。
  2. 熔断规则

    • 可配置多种熔断触发条件,如基于错误比例、异常数、响应时间等指标。
    • 用户可以根据需要自定义熔断后的降级逻辑,例如返回默认值、缓存数据或者执行其他备选逻辑。
  3. 实时监控与动态调整

    • Sentinel 提供了实时监控功能,能够直观地查看资源的健康状况、请求成功率以及熔断开关的状态变化。
    • 配置的熔断阈值可以动态调整,根据实际业务需求和系统负载情况灵活变更熔断策略。

        总之,Sentinel 的熔断机制旨在通过自动切断不稳定的依赖关系,保护整个微服务架构不受局部故障影响,从而提高系统的整体可用性和稳定性。

状态转换

        Sentinel 的熔断器(Circuit Breaker)在以下情况下会进行状态转换:

  1. 关闭(CLOSED)状态到开启(OPEN)状态

    • 当 Sentinel 检测到某个资源在设定的时间窗口内,失败次数或错误比例达到预设阈值时,熔断器将从关闭状态切换到开启状态。
    • 例如,如果配置的是当请求错误率达到50%并且连续10次请求失败,则熔断器将会打开。
  2. 开启(OPEN)状态到半开(HALF-OPEN)状态

    • 开启状态持续一段时间后(这个时间称为“休眠时间”或者“恢复时间窗口”),熔断器会自动进入半开状态。
    • 在半开状态下,允许一定数量的请求通过去尝试调用后端服务,以探测服务是否已经恢复正常。
  3. 半开(HALF-OPEN)状态到关闭(CLOSED)状态

    • 如果在半开状态下,成功处理了若干个试探请求(通常设置为一个较小的数量,如1个或几个),则认为该服务已恢复稳定,此时熔断器会转回关闭状态,继续正常处理所有请求。
    • 若在半开状态下,在给定的试探请求中又有部分请求失败,则熔断器会判断可能服务还未完全恢复,因此再次转为开启状态,重新开始计时等待下一次半开检测的机会。

        总结来说,Sentinel 熔断器的状态变化是基于实际运行时的健康检查和预定义的规则来进行的,其目的是快速隔离故障服务,同时也能在服务恢复后及时恢复对它的正常访问。

3、官方文档

introduction | Sentinel

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

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

相关文章

域名群站开源系统分享开源域名授权系统

一、需要自己安装PHP和MYSQL服务器环境。 二、务必设置伪静态规则,否则将无法访问文章栏目页面。 三、启用伪静态功能,请在站点设置中选择使用thinkphp的伪静态规则。 四、在域名的根目录下找到”data/config.php”文件,填入数据库的账号和…

配置zabbix监控平台

目录 内容纯手敲,难免有误,若发现请私信我。 配置zabbix监控平台 一、进入官网 ​编辑​ 二、配置zabbix-server(服务端) 1.下载zabbix的yum源 2.安装Zabbix服务器、前端、代理 3.安装Zabbix前端 4.编辑文件/etc/yum.rep…

openssl3.2 - quic服务的运行

文章目录 openssl3.2 - quic服务的运行概述笔记运行openssl编译好的quic服务程序todo - 如果自己编译quic服务工程补充 - 超过30秒不连接uqic服务会退出END openssl3.2 - quic服务的运行 概述 在看 官方 guide目录下的工程. 都是客户端程序, 其中有quic客户端, 需要运行quic服…

【算法Hot100系列】旋转图像

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

软件测试|python如何去除文件后缀名?

简介 在Python中,我们常常需要操作文件,包括文件的读取、写入、重命名等操作。在文件操作中,我们经常会遇到需要去除文件后缀的问题。那么,Python如何去除文件后缀呢?本文我们将介绍如何使用Python来去除文件后缀。 …

大模型学习与实践笔记(六)

一、finetune 简介 两种微调模式:增量预训练 与指令跟随 1.增量预训练 2.指令微调 二、LoRA 与 QLoRA 介绍 三、XTuner 介绍 四、低显存玩转LLM的方法

Linux网络之PXE高效批量装机、Kickstart全自动化安装

一. PXE网络装机简介和相关知识 1. 常见的三种系统安装方式和相关文件 ① 三种系统安装方式 u启动安装:在U盘中下载相关的安装系统及镜像文件,u盘插机安装 光驱安装:将带有所需系统的光盘放进电脑服务器中,按照官方引导装机 …

春节假期出游一些很实用的手机技巧!这样玩,就很哇塞~

随着春节的脚步越来越近,无论是准备出游还是回家,你蠢蠢欲动的心是否已经拦不住了?华为 nova 12系列这些很哇塞的玩法你必须知道!这个新年让你旅行出圈有秘籍! 出发前智慧播报航班信息不错过。智慧播报的功能就很实…

AI大模型学习笔记之二:什么是 AI 大模型的训练和推理?

在人工智能(AI)的领域中,我们经常听到训练(Training) 和 推理(Inference) 这两个词汇,它们是构建强大 AI 模型的关键步骤。我们通过类比人类的学习过程来理解这两个概念,可以更加自然而生动地理…

Servlet中访问网页常遇到的问题

网页出现404 出现这一种情况是浏览器访问的资源不存在 第一种情况通常是路径出错请检查你的路径是否一致 第二种情况确认你的webapp是否被正确加载 smart tomcat由于只加载一个webapp 如果加载失败 就会直接启动失败 拷贝war方式到Tomcat要加载多个webapp如果失败只有日志 查…

软件测试|sqlalchemy relationship

简介 SQLAlchemy是一个流行的Python ORM(对象关系映射)库,它允许我们以面向对象的方式管理数据库。在SQLAlchemy中,relationship是一个重要的功能,用于建立表之间的关系。在本文中,我们将详细探讨relation…

AutoRuns下载安装使用教程(图文教程)超详细

「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 AutoRuns 是微软提供的一款「启动项管理」工具,可以检查开机自动加载的所有程…

UI设计中插画赏析和产品色彩分析

插画赏析: 1. 插画是设计的原创性和艺术性的基础 无论是印刷品、品牌设计还是UI界面,更加风格化的插画能够将不同的风格和创意加入其中,在激烈的竞争中更容易因此脱颖而出。留下用户才有转化。 2. 插画是视觉触发器,瞬间传达大量…

国产阿里的Copilot能提效30%吗?

国产阿里的Copilot能提效30%吗? Copilot简介 GitHub 和 OpenAI 共同打造的一款编程神器–Copilot, 这是一款立足于人工智能技术的编程助手。在此基础上,借助于 GitHub 庞大的代码库和来自全球的开源社区帮助,搭配 OpenAI 在自然…

cookie和session的工作过程和作用:弥补http无状态的不足

cookie是客户端浏览器保存服务端数据的一种机制。当通过浏览器去访问服务端时,服务端可以把状态数据以key-value的形式写入到cookie中,存储到浏览器。浏览器下次去服务服务端时,就可以把这些状态数据携带给服务器端,服务器端可以根…

【centos7系统】Redis-6.2.2版本集群搭建

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 前redis最新版本已经是6.2.4,在集群搭建上和redis3.x、redis4.x区别很大。redis5以后,就不需要安装ruby了…

腾讯云主机优惠价格表(2024新版报价)

腾讯云服务器租用价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月,云服务器CVM S5实例2核2G配置280.8元一年…

Cpp多线程(一)

一、基本概念 1、程序是一段静态代码;进程是正在运行的程序;线程则是程序内部的执行路径。 上面这张图就解释了线程和多线程的意义。 2、若一个程序在同一时间执行多个线程,便是支持多线程的。一个进程中的多个线程共享相同的内存单元/内存…

[分布监控平台] Zabbis 监控

zabbix 是什么? zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 zabbix …

微信小程序之组件和API

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…