【微服务】服务保护(通过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>{@Overridepublic UserClient create(Throwable throwable){return new UserClient(){@Overridepublic 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就会触发熔断

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

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

相关文章

【双曲几何-05 庞加莱模型】庞加来上半平面模型的几何属性

文章目录 一、说明二、双曲几何的上半平面模型三、距离问题四、弧长微分五、面积问题 一、说明 庞加莱圆盘模型是表示双曲几何的一种方法&#xff0c;对于大多数用途来说它都非常适合几何作图。然而&#xff0c;另一种模型&#xff0c;称为上半平面模型&#xff0c;使一些计算变…

全栈低代码:前后端业务需求实现100%覆盖!

工具背景&#xff1a; 织信低代码平台“组件设计器”功能专为对个性化定制页面需求较为强烈的用户准备的&#xff0c;该功能组件十分丰富和强大&#xff0c;还融合了AI智能&#xff0c;能够帮助用户0成本起步&#xff0c;平均花1-2个小时就能快速构建一套网站、APP、小程序。 …

一码当先!Xinstall二维码推广,让App安装无忧

在移动互联网时代&#xff0c;App的推广方式层出不穷&#xff0c;但二维码推广始终占据着重要的地位。作为国内专业的App全渠道统计服务商&#xff0c;Xinstall深知二维码推广的潜力与价值&#xff0c;并致力于通过创新的技术和服务&#xff0c;帮助广告主和开发者实现推广效果…

UE5 audio capture 回声问题 ||在安卓上有爆鸣声

参考视频 0.基本步骤 【UE4_蓝图】录制麦克风声音/系统声音并输出保存WAV文件_ue4录音-CSDN博客 1.步骤 1.创建Sound Submix A 2. 右键新建Sound Submix B 3.把B的两个参数调为-96 4.audio capture的Base Submix&#xff0c;把前面提到的A赋值进去 5.开始录制输出和完成录制…

二分+计数,CF1569D Inconvenient Pairs

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1569D - Codeforces 二、解题报告 1、思路分析 我们考虑路径距…

什么是高级持续威胁(APT)

高级持续性威胁&#xff08;Advanced Persistent Threat&#xff0c;APT&#xff09;&#xff0c;又叫高级长期威胁&#xff0c;是一种复杂的、持续的网络攻击&#xff0c;包含三个要素&#xff1a;高级、长期、威胁。 【高级】是指执行APT攻击需要比传统攻击更高的定制程度和…

Remix框架实现 SSR

SSR SSR是一种网页渲染方式&#xff0c;它与传统的客户端渲染&#xff08;CSR&#xff09;相对&#xff0c;在日常的项目中我们更多是使用 CSR 的方式进行前端分离开发&#xff0c;渲染会在浏览器端进行。然而在SSR中&#xff0c;当用户请求一个网页时&#xff0c;服务器将生成…

MySQL数据库表的创建DDL语句(21-30)

schooldb库——utf8字符集——utf8_general_ci排序规则 DDL 21.用户反馈表&#xff08;feedback&#xff09; CREATE TABLE h_feedback (feedbackId int(11) NOT NULL AUTO_INCREMENT COMMENT ID,feedbackType int(4) NOT NULL DEFAULT 0 COMMENT 反馈类型&#xff0c;内容来…

karateclub,一个超酷的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超酷的 Python 库 - karateclub。 Github地址&#xff1a;https://github.com/benedekrozemberczki/karateclub Python karateclub是一个用于图嵌入和图聚类的库&#xff…

第十四届蓝桥杯大赛软件赛省赛(Python大学A组)

2023年蓝桥杯 省赛真题Python大学A组 试题A&#xff1a;特殊日期 试题B&#xff1a;分糖果 试题C&#xff1a;三国游戏 试题D&#xff1a;平均 试题E&#xff1a;翻转 试题F&#xff1a;子矩阵 试题G&#xff1a;阶乘的和 …

《Video Mamba Suite》论文笔记(4)Mamba在时空建模中的作用

原文翻译 4.4 Mamba for Spatial-Temporal Modeling Tasks and datasets.最后&#xff0c;我们评估了 Mamba 的时空建模能力。与之前的小节类似&#xff0c;我们在 Epic-Kitchens-100 数据集 [13] 上评估模型在zero-shot多实例检索中的性能。 Baseline and competitor.ViViT…

Unity之ShaderGraph入门简介与配置

前言 ShaderGraph是Unity的一个可视化着色器编辑工具,它允许开发者在不编写代码的情况下创建复杂的着色器效果。ShaderGraph提供了一个直观的图形界面,用户可以通过拖拽节点并连接它们来构建自定义的着色器。用户可以在ShaderGraph中使用各种节点,如数学运算、纹理采样、颜…