【微服务】服务保护(通过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.mzph.cn/web/6829.shtml

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

相关文章

【微服务】配置管理

Nacos配置管理 配置管理配置共享配置热更新 配置管理 将微服务集群中常用&#xff0c;经常变化的配置都写到一个独立的配置文件微服务中进行统一管理 配置共享 在Nacos的界面当中进行配置管理&#xff0c;在配置列表中添加配置 比如各个服务中的jdbc的连接配置&#xff1a; …

HTML/CSS1

1.前置说明 请点这里 2.img元素 格式&#xff1a; <img src"图片地址" alt"占位文字" width"图片宽度" height"图片高度">其中alt是当图片加载失败时显示的文字 而且不同内核的浏览器显示出来的占位文字的效果也是不尽相同的…

【Android学习】简单的登录页面和业务逻辑实现

实现功能 1 登录页&#xff1a;密码登录和验证码登录 2 忘记密码页&#xff1a;修改密码 3 页面基础逻辑 java代码 基础页面 XML login_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.and…

Servlet_JSP

1.一些回顾 对于Tomcat部署中 我们有一些补充的点需要在此说明一下 1.如果我们想要查询MINEType的话 可以到TOMCAT_HOME/conf/web.xml中进行查询 里面记录了不同类型对应的MINEType 2.我们客户端发送请求数据给服务器之后 服务器会调用父类中的service方法 然后在内部决定调用…

CMakeLists.txt语法规则:while 循环

一. 简介 前面几篇文章学习了 CMakeLists.txt语法中的一种循环写法&#xff0c;文章如下&#xff1a; CMakeLists.txt语法规则&#xff1a;foreach 循环基本用法-CSDN博客 CMakeLists.txt语法规则&#xff1a;foreach循环的关键字-CSDN博客 本文学习 while循环写法。 二. …

Day08-JavaWeb开发-MySQL(多表查询内外连接子查询事务索引)Mybatis入门

1. MySQL多表查询 1.1 概述 1.2 内连接 -- 内连接 -- A. 查询员工的姓名, 及所属的部门名称(隐式内连接实现) select tb_emp.name, tb_dept.name from tb_emp,tb_dept where tb_emp.dept_id tb_dept.id;-- 起别名 select * from tb_emp e, tb_dept d where e.dept_id d.id…

tomcat+maven+java+mysql图书管理系统2-完善项目结构,添加相关依赖

1.创建java目录 接着选择java&#xff0c;回车&#xff0c;则创建成功&#xff0c;成功后在左侧栏能看见 2.修改pom.xml文件,(添加依赖) <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi…

vs 2022 Xamarin 生成 Android apk

再保存&#xff0c;如果没有生成apk就重启软件 再试一次

Windows内核开发:如何使用STL

前言 大家都知道应用层c的STL非常强大&#xff0c;非常好用&#xff0c;但是在内核下就没法用了。针对这个问题&#xff0c;经过我不懈的寻找&#xff0c;终于找到了解决内核无法使用STL的方法。 使用new/delete关键字 先说一下常用关键字如何在内核中使用。其实只需要在一个全…

上位机开发PyQt5(三)【布局、单选框和多选框、对话框】

目录 一、布局Layout 1. 布局简介 2. 水平布局QHBoxLayout 3. 竖直布局QVBoxLayout 4. 表单布局QFormLayout 5. 布局嵌套 二、单选框和复选框 1. 单选框 2. 复选框 三、对话框 1. QMessageBox 2. QIputDialog 一、布局Layout 1. 布局简介 一个pyqt窗口中可以有多…

百度文库可直接下载VIP文章

百度文库文件下载 百度文库是百度公司推出的一款在线文档分享平台&#xff0c;它可以让用户免费上传、分享、下载和浏览各类文档资源&#xff0c;包括但不限于文章、论文、报告、PPT、书籍等。 好了&#xff0c;废话不多说&#xff0c;这里推出的新生产的软件&#xff0c;可直…

机器学习的指标评价

之前在学校的小发明制作中&#xff0c;在终期答辩的时候&#xff0c;虽然整个项目的流程都答的很流畅。 在老师提问的过程中&#xff0c;当老师问我recall,precision,accuracy等指标是如何计算的&#xff0c;又能够表示模型的哪方面指标做得好。我听到这个问题的时候&#xff…

图片倾斜矫正处理(Hough Transform)

目录 倾斜矫正原理及实现方式Canny边缘检测非极大值抑制霍夫变换 倾斜矫正原理及实现方式 代码连接&#xff1a;https://github.com/shuyeah2356/Image-Angel-correction/tree/main 倾斜矫正的实现原理&#xff1a; 使用霍夫变换检测图片中的直线&#xff1b; 计算直线与水平方…

【与 Apollo 共创生态:展望自动驾驶全新未来】

1、引言 历经七年的不懈追求与创新&#xff0c;Apollo开放平台已陆续推出了13个版本&#xff0c;汇聚了来自全球170多个国家与地区的16万名开发者及220多家合作伙伴。随着Apollo开放平台的不断创新与发展&#xff0c;Apollo在2024年4月19日迎来了Apollo开放平台的七周年大会&a…

猿人学第七题-动态字体-随风漂移

前言&#xff1a;该题主要是考对fontTools.ttLib.TTFont的操作&#xff0c;另外就是对字典互相映射的操作 一、woff文件存储 from fontTools.ttLib import TTFont #pip install fontTools def save_woff(response):woff response[woff]woff_file base64.b64decode(woff.enc…

.排序总讲.

在这里赘叙一下我对y总前四节所讲排序的分治思想以及递归的深度理解。 就以788.逆序对 这一题来讲&#xff08;我认为这一题对于分治和递归的思想体现的淋淋尽致&#xff09;。 题目&#xff1a; 给定一个长度为 n&#x1d45b; 的整数数列&#xff0c;请你计算数列中的逆序对…

Linux的软件包管理器-yum

文章目录 软件包的概念yum源的配置的原因yum的使用查看软件包安装软件卸载软件 软件包的概念 软件包(SoftWare Package)是指具有特定的功能&#xff0c;用来完成特定任务的一个程序或一组程序。可分为应用软件包和系统软件包两大类 在Linux系统中&#xff0c;下载安装软件的方式…

视频下载器 UC网盘

老王导航 - 复杂问题找老王&#xff0c;简单问题百度搜 神器啊

保研面试408复习 2——操作系统、计网

文章目录 1、操作系统一、进程、线程的概念以及区别&#xff1f;二、进程间的通信方式&#xff1f; 2、计算机网络一、香农准则二、协议的三要素1. 语法2. 语义3. 时序 标记文字记忆&#xff0c;加粗文字注意&#xff0c;普通文字理解。 1、操作系统 一、进程、线程的概念以及…

团队经理口才训练教案(3篇)

团队经理口才训练教案&#xff08;3篇&#xff09; **篇&#xff1a;基础口才训练 一、教学目标 让团队经理了解口才在团队管理中的重要性。 教授基础口才技巧&#xff0c;如发音、语速、语调等。 二、教学内容 口才的重要性 强调团队经理的口才能力对团队凝聚力、沟通…