2021-04-29

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

Alibaba Sentinel服务容错的可选方案

在实际的开发环境中,我们总是会面对各种各样的问题,网络问题,自然灾害,不可抗力因素以及代码的可靠性,不做服务容错,当项目正式部署上线,一个不大的故障都可能导致大范围的服务不可用,单体项目尚且如此,分布式项目面临的情况更加严峻。
服务雪崩
这幅图描述了一个经典的情形,服务雪崩。一开始只是一个底层服务出现了一个故障,特别是当这个服务没有直接挂掉,而是处于缓慢严重超时的这样一个情况下,调用这个服务的其他服务,一旦调用这个服务,由于迟迟没有得到响应,也进入了阻塞状态,渐渐导致所有关联的上层服务全部阻塞,知道超过服务器承载能力的时候就会发生服务雪崩。
这就是没有做服务容错带来的可怕后果,目前市面上主流的服务容错的解决方案有Resillence4j、Hystrix、Sentinel、Turbine,其中Hystrix是由老牌厂商netflix提供,目前也已经不维护了,Sentinel是由阿里提供的,有较好的中文支持,所以这里就以Sentinel来举例。
服务容错的集中简单模式包括:
超时:最简单的容错方式,在调用方为服务调用设置一个超时时间,避免无限制的等待下游系统造成的线程堆积
限流:在提供方一端限制进入的流量,保证服务不会因为超负荷流量而崩溃。
仓壁模式:资源隔离手段。在调用方进行资源隔离,比如使用线程池,保证消耗的资源有上限,避免无限量调用资源占用其他请求的资源。
熔断器:在调用方进行控制,根据策略定义失败情况,失败数字达到阈值时打开熔断器,不再调用底层服务,熔断窗口(一段时间过后)达到时,释放一个请求进入底层,如果请求执行成功则关闭熔断器,正常调用,如果请求失败则继续保持熔断器打开直到下一个熔断窗口达到。
解决方案也就是基于这些模式来进行扩展整合的。
Sentinel提供的解决办法主要包括:限流,熔断,降级这三种。这里在你的Spring Boot 项目中引入Sentinel的依赖,配置连接sentinel-dashboard,sentinel-dashboard是Sentinel服务容错解决方案的UI工具,可以帮你你去更好的调试适合你的服务容错方案。
在这里插入图片描述
限流:上图就是一个限流方案的选项,主要包括阈值类型,QPS、线程数。QPS是每秒的请求数量,这个的控制会更简单直观,单机阈值则是指,每秒允许的一个QPS数量(以下皆以QPS选择为基础),流控模式分三种,直接:对当前服务本身有效。关联:A关联B,当B达到了上面的单机阈值是,对A进行限流。链路以链路的起始作为计算,只结算链路开头的服务的请求数量。流控效果是指在触发了流控模式形成的规则之后的一个请求的变化。快速失败:最简单直观,直接挂掉。Warm Up:预热,需设置QPS和时长,这里的QPS是指在这个时长结束后服务会达到的最大QPS,这里有一个默认参数,冷加载因子,默认值为三,依据这个指和最后要达到的QPS可以计算出一个刚开始的QPS=最后要达到的QPS/冷加载因子。这个服务会有一个预热的过程,会在这个时间里,从开始的QPS跑到最后要达到的QPS。这样做的一个好处是可以给服务器一个缓慢启动的过程避免一下子的服务压力过大导致服务器挂掉。排队等待:需要设置将阈值模式设置为QPS才能生效。这种方式严格控制了请求通过的间隔时间,也即是让请求以均匀的速度通过,对应的是漏桶算法。
然后是熔断,熔断的一个基本概念如图
熔断的基本概念

这里能看到熔断的一个基本模式,他不是失败就垄断,而是在一个时间段里失败达到多少次则熔断,并且会有一个熔断窗口,在你熔断多少时间后,再次发送请求去判断服务的状态,这样的设置在有服务集群的情况下可以在某一个服务出问题之后不影响整体的运行,而如果这个服务只是短暂的阻碍的情况下,能够自动修复,避免服务空耗,节约资源。这里熔断也分集中模式,根据错误请求的数量,比列以及一个RT模式(慢请求,需要定义请求超标的毫秒值,默认超标的比列须达到100%)。这里就不细讲,将项目装配好之后可以自己测试。
降级:简单来说就是提供一个后备服务,需要添加@SentinelResource(value = “helloB”,fallback = “sayHelloFallback”)第一个value服务的方法名,第二个fallback 的值这是你提供的后备方法的方法名,需要注意要同参数。这样可以在你的服务挂掉之后走向另一个备用方案,或者做个简单的提醒。
除此之外Sentinel还提供了其他的许多方案,可以根据热点参数限流,系统规则,授权规则等等来进行限流,有兴趣可以去官网Sentinel.io去看一下。

Sentinel流控效果-排队等待 阅读详情

相关推荐

【数据挖掘】心跳信号分类预测 之 特征工程 —— 学习笔记(三)

三、特征工程 3.1 看书 常言道,“巧妇难为无米之炊”。在 ML 中,数据和特征将作“米”,模型和算法则为“妇”。若无数量充足的数据、良好表示的特征,再强大的模型也难以得到满意的结果 (garbage in,garbage out)。对于 ML 问题,数据和特征往往决定了结果的上限,而模型、算法的选择及优化则是在逐步接近该上限。 特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。在本质上,特征工程是一个表示和展现数据的过程。在实际中,特征工程旨在去除...

闻韶 3336

SpringCloud Alibaba微服务架构核心技术开发教程

本套2021新版视频教程为SpringCloud Hoxton版和SpringCloud alibaba,内容涵盖目前流行的分布式微服务架构的技术栈。 教程重点讲解了SpringCloud各种组件停止更新进入维护阶段后,后续技术组件的升级和替换策略及方案选型,重点讲解了阿里巴巴新的Nacos、Sentinel、Seata等技术,分享了服务降级、服务熔断、服务限流、hotkey控制、分布式统一配置管理、分布式全局事务控制、RabbitMQ与Stream整合、Nacos和Nginx配置高可用集群等技术,本教程帮助大家强化分布式微服务架构思维,带大家进入互联网微服架构的世界! 课程大纲:  微服务架构生态:  课程部分讲义:          

脑机接口(BCI)从原理到开发实战 07|运动想象BCI实战:基于BCI Competition IV 2a数据集

本文基于BCI Competition IV 2a数据集,详细介绍运动想象脑机接口系统的全流程实现。首先概述了该数据集的实验范式、参数特点和优势,然后指导环境准备与数据下载。通过代码示例展示了数据加载、事件标记提取和信号可视化方法。重点构建了完整的预处理流水线,包括通道选择、重参考、带通滤波(8-30Hz)和ICA去伪迹等关键步骤。文章旨在帮助读者将零散的BCI知识整合为完整的实战项目,掌握从原始脑电数据到运动意图解码的核心技术。

小明的博客 792

sentinel的限流操作:快速失败、Warm UP、排队等待

该限流好比一个漏斗,每隔200ms向漏斗中丢一个令牌,当请求拿到令牌就通过该漏斗,没有拿到令牌就在漏斗中等候令牌(队列的形式),直到请求的等待时间超过100ms(超时时间),该请求原地消失。QPS为20,冷加载因子为3,系统从阈值为20/3缓慢加到阈值为20,时间为8s。(1)、快速失败:当求情达到阈值时,直接抛出异常Blocked by Sentinel(flow limiting),服务器返回状态码429。如果有高并发的请求进入:按照如上的配置只有第一个请求通过,其余请求全部超时消失。

以爱护甲,爱满枫林。 2165

SpringCloud学习笔记 - 流控规则 - Sentinel

这里的流控指的是“流量控制”,进一步解释说明:资源名:唯一名称,默认请求路径。针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源)。QPS(每秒钟的请求数量)︰当调用该API的QPS达到阈值的时候,进行限流。线程数:当调用该API的线程数达到阈值的时候,进行限流。是否集群:不需要集群直接:API达到限流条件时,直接限流关联:当关联的资源达到阈值时,就限流当前资源。

QIANG_HAO的博客 2275

sentinel 限流熔断神器详细介绍

Sentinel 是一款面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来保障服务的稳定性,核心思想是:根据对应资源配置的规则来为资源执行相应的流控/降级/系统保护策略,

张维鹏的博客 3万+
上一篇: 2021-04-25
下一篇: RabbitMQ的五种工作模式和使用场景
lH210
博客等级 码龄5年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值