【微服务】服务保护(通过Sentinel解决雪崩问题)

Sentinel解决雪崩问题

  • 雪崩问题
    • 服务保护方案
      • 服务降级保护
    • 服务保护技术
      • Sentinel
      • Fallback
      • 服务熔断

雪崩问题

在微服务调用链中如果有一个服务的问题导致整条链上的服务都不可用,称为雪崩

  • 原因
  1. 微服务之间的相互调用,服务提供者出现故障
  2. 服务的消费者没有很好的处理异常出现问题
  3. 微服务集群级联出现故障

服务保护方案

服务降级保护

请求限流:限制访问接口的请求的并发量,避免服务因流量激增出现故障
通过限流器进行流量整形
在这里插入图片描述

线程隔离:也称为舱壁模式,模拟船舱隔板的防水原理,通过限定每个业务能使用的线程数量而将故障业务隔离,避免故障扩散
服务熔断:配合线程隔离进行,由断路器统计请求的异常比例或慢调用比例,如果超出阈值则会熔断该业务,则拦截该接口的请求,熔断期间,所有的请求快速失败,全都走fallback逻辑(让业务失败时不再抛出异常,而是走fallback逻辑)

服务保护技术

在这里插入图片描述
Sentinel适用于新版本的SpringCloud

Sentinel

Sentinel是阿里巴巴开源的一款微服务流量控制组件
地址:https://sentinelguard.io/zh-cn/index.html
下载:https://github.com/alibaba/Sentinel/releases
下载好之后将jar包的版本后缀删除:
在管理员模式下运行
java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar启动

然后访问对应的地址就能够进入到Sentinel管理界面
在这里插入图片描述
默认的用户和密码都是sentinel
然后在对应的微服务项目中引入依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

在配置文件中添加对应的配置信息即可

  cloud:
    sentinel:
      transport:
        dashboard: localhost:8090

然后启动服务即可在控制台中进行查看

  • 簇点链路

单击调用链路,是一次请求进入服务后经过的每一个被Sentinel监控的资源链,默认会监控SpringMVC中的每一个EndPoint(http接口),限流,熔断等都是针对簇点链路中的资源设置的,而资源名默认就是接口的请求路径

但是RESTful风格的api请求路径都是相同的,这会导致簇点资源名称重复,修改配置,把请求方式+请求路径作为簇点资源名称:

http-method-specify: true #开启请求方式前缀

然后可以在控制台中实现服务保护技术

线程熔断:需要在微服务中OpenFeign进行整合sentinel,需要在配置文件中进行配置

feign:
  sentinel:
    enabled: true   #开启Feign的sentinel整合

Fallback

FeignClient的Fallback有两种配置方式:
方式一:FallbackClass,无法对远程调用的异常做出处理
方式二: FallbackFactory,可以对远程调用的异常做出处理,通常是这种

通过方式二进行Fallback处理:

  1. 第一步,编写通过工厂类创建失败的UserClient获取
public class UserClientbackFactory implements FallbackFactory<UserClient>{
      @Override
      public UserClient create(Throwable throwable){
         return new UserClient(){
              @Override
              public User findById(Long id){
                //记录异常信息,可以返回空或抛出异常
                log,info("失败",throwable);
                return null;
              }
         }
      }
}

在正常情况下微服务通过提供的UserClient进行访问,当出现熔断的情况下,使用我们自定义的UserClient进行熔断后的Fallback逻辑处理
2. 将定义好的UserClient失败获取注册为一个Bean

@Bean
public UserClientFallbackFactory userclientfallback(){
    return new UserClientFallbackFactory();
}
  1. 在UserClient接口中使用UserClientFallbackFactory:
@FeignClient(value="userservice",fallbackFactory=UserClientFallbackFactory.class)
public interface UserClient{
  @GetMapper("/user/{id}")
  User findById(@PathVariable("id") Long id);
}

服务熔断

在这里插入图片描述
当线程超过阈值或者达到熔断策略就会引发熔断,熔断时间结束后,尝试开启一次请求,如果成果则关闭短路器,如果失败,则开启断路器进行进行熔断

  • 熔断策略
    在这里插入图片描述
    上述是按照慢调用比例判断,最小请求数5个,当5个请求中,出现3个以上(根据比例阈值)响应时间超过200ms就会触发熔断

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件全套资料整理包获取-软件各阶段支撑文档

软件全套精华资料包清单部分文件列表&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&#xff0c;用户需求说明书&#xff0c;概要设计说明书&#xff0c…

既能自动仿写公众号爆文,还能批量帮你上架闲鱼商品,打造自己的数字员工,简直yyds

「想象一下&#xff0c;如果有一个机器人在你的计算机上24小时不间断地工作&#xff0c;会不会做梦都笑着」 一、RPA机器人是什么&#xff1f; RPA——机器人流程自动化&#xff0c;它可以帮助人们完成重复性的、繁琐的工作&#xff0c;比如数据输入、网页爬取、自动化流程等…

The 2024 International Collegiate Programming Contest in Hubei Province, China

目录 H. Genshin Impact Startup Forbidden III K. Points on the Number Axis B 估计还会补D&#xff0c;I H. Genshin Impact Startup Forbidden III 对于一个有鱼的池塘&#xff0c;有周围与自己本身五个关键位置可以捕获当前位位置的鱼。把这些位置存储到 map中。用四进制…

2023 年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷 B(容器云)

#需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包…

【011】网上鲜花商店(SSM+JSP)

【011】网上鲜花商店(SSMJSP&#xff09; 一、系统情况介绍 网上鲜花商店分为前台端和后台端&#xff0c;是致力于可以便捷购花而开发的一套系统&#xff0c;可以按照不同种类进行分类管理&#xff0c;清晰客观的展示鲜花的详情信息以及价格等等&#xff0c;适合新手学习开发…

Redis(基础指令和五大数据类型)

文章目录 1.基本介绍1.多种数据结构支持2.应用场景 2.Redis安装&#xff08;直接安装到云服务器&#xff09;1.安装gcc1.yum安装gcc2.查看gcc版本 2.将redis6.2.6上传到/opt目录下3.进入/opt目录下然后解压4.进入 redis-6.2.6目录5.编译并安装6.进入 /usr/local/bin 查看是否有…

多域名证书一个域名50元

多域名SSL数字证书是一种特殊的域名SSL证书&#xff0c;它可以同时保护多个不同的独立域名&#xff0c;对于域名网站比较多的个人和企事业开发者来说&#xff0c;为每个网站购买不同的SSL证书是一项不小的开销。因此&#xff0c;CA认证机构推出了两种SSL证书——通配符SSL证书和…

内网使用有道云翻译(安装离线包,支持翻译长句)

当我们使用有道云翻译时&#xff0c;为了在没网的情况下也能准确进行翻译&#xff0c;我们需要下载一些离线包增强翻译效果&#xff0c;但是我们在内网进行有道云安装时&#xff0c;他只提供了一个有道云的exe安装&#xff0c;并没有提供离线包的安装&#xff0c;我们这里实现在…

vue快速入门(五十五)插槽基本用法

注释很详细&#xff0c;直接上代码 上一篇 新增内容 当传输内容只有一种时的基础写法 源码 App.vue <template><div id"app"><h1>被淡化的背景内容</h1><my-dialog><!-- 插槽内容:文字以及dom结构都可以传 --><span>你确…

分布式锁与秒杀

分布式锁与秒杀 1. 分布式锁1.1 常用Redis分布式锁方案三&#xff1a;使用Lua脚本(包含SETNX EXPIRE两条指令) 秒杀 1. 分布式锁 https://www.cnblogs.com/shoshana-kong/p/17519673.html 1.1 常用Redis分布式锁方案三&#xff1a;使用Lua脚本(包含SETNX EXPIRE两条指令) …

Gradio的Dataframe数据显示不全,例如只能显示前15行数据

Gradio的Dataframe数据显示不全&#xff0c;例如只能显示前15行数据 ⚙️1.软件环境⚙️&#x1f50d;2.问题描述&#x1f50d;&#x1f421;3.解决方法&#x1f421;&#x1f914;4.结果预览&#x1f914; ⚙️1.软件环境⚙️ Windows10 教育版64位 Python 3.10.6 Chrome 版本…

RFC 791 (1)-导论

目录 浅论 IP是啥 IP可以管啥 操作 范例查看 提示&#xff1a;本系列将会开始RFC文档阅读&#xff0c;这里会给出我的一些笔记 浅论 我们这篇RFC文档描述的是IP和ICMP协议&#xff0c;我们都知道&#xff0c;在传统的OSI七层或者是现在被简化的五层&#xff1a;应用层&…

绘唐3工具怎么成为团长阿

绘唐3怎么成为团长阿 这里https://qvfbz6lhqnd.feishu.cn/wiki/D3YLwmIzmivZ7BkDij6coVcbn7W

统一大型语言模型和知识图谱:路线图

【摘要】 大型语言模型&#xff08;LLM&#xff09;&#xff0c;如ChatGPT和GPT4&#xff0c;由于其涌现能力和泛化性&#xff0c;正在自然语言处理和人工智能领域掀起新的浪潮。然而&#xff0c;LLM是黑箱模型&#xff0c;通常无法捕捉和获取事实知识。相反&#xff0c;知识图…

图片如何转换成jpg?分享三种简单方法

在日常生活中&#xff0c;我们经常需要将照片转换为JPG格式以便于分享或者上传&#xff0c;然而&#xff0c;小伙伴不知道的是不同的设备和软件可能会有不同的默认保存格式。如果你发现你的照片不是jpg格式&#xff0c;那么如何将图片如何转换成jpg呢? 如果您有其他格式的图片…

Windows 系统使用Jenkins 实现CI一键打包部署操作

一 下载安装jenkins jenkins 中文官网链接: 下载地址 点击下载&#xff0c;完成后是一个.msi后缀的安装文件&#xff0c;双击安装 安装和普通软件一样&#xff0c;一路next&#xff0c;安装路径自己设置一下&#xff0c;默认是C盘&#xff0c;我C盘不够用了&#xff0c;设置…

【C++基础】this指针

一&#xff0c;this指针引入 不同对象调用相同函数时 &#xff0c;打印出来的值不一样&#xff0c;为什么&#xff1f; 这就隐含了一个this指针。this指针又叫隐含的this指针。&#xff08;不能显示写&#xff0c;但能显示用&#xff09; 注&#xff1a;1&#xff0c;红色部…

企业计算机服务器中了rmallox勒索病毒怎么处理,rmallox勒索病毒解密恢复

网络在为企业提供便利的同时&#xff0c;也为企业的数据安全带来严重威胁。随着网络技术的不断发展&#xff0c;越来越多的企业利用网络开展各项工作业务&#xff0c;网络数据安全问题&#xff0c;一直成为企业关心的主要话题&#xff0c;但网络威胁随着网络技术的不断成熟&…

《Fundamentals of Power Electronics》——一些常用变换器的正则电路参数值

对于理想的CCM PWM dc-dc转换器&#xff0c;其包含一个电感和电容&#xff0c;正则模型有效的低通滤波器需要包含一个电感和一个电容。正则模型简化为如下图所示。 假设电容与负载直接相连。基础的buck、boost和buck-boost转换器的参数值如下表所示。 该模型可以用传统的线性电…

Leetcode—1652. 拆炸弹【简单】

2024每日刷题&#xff08;127&#xff09; Leetcode—1652. 拆炸弹 实现代码 class Solution { public:vector<int> decrypt(vector<int>& code, int k) {int codeSize code.size();vector<int> ans(codeSize, 0);if(k 0) {return ans;}if(k > 0)…