微服务 第四节 限流容错Sentinel,挺好玩的一个组件,也很强大

本文探讨了雪崩效应在高并发下的表现及如何通过超时机制、舱壁分离模式和断路器模式来解决。重点介绍了Spring Cloud Alibaba Sentinel在流量控制、容错和降级中的应用,包括配置依赖、规则管理和使用Dashboard的优势与局限。
摘要由CSDN通过智能技术生成

一、什么是雪崩效应

在这里插入图片描述高并发场景下,A挂了,B还在疯狂的请求A,B会等待A的服务调用超时,调用线程大量阻塞,浪费啊浪费!活活把CPU、内存给榨干了啊…B活活被猪队友A给拖死了。。。B宕机,C,D,也是如此。
这种情况叫服务雪崩,也叫级联故障

二、咋解决

1)超时机制:配置下超时时间,例如1s,那么请求在1s内必须返回,否则把线程掐死,释放资源
2)舱壁分离模式:(线程池隔离模式):就是各个服务,你用你的线程池 我用我们 我们互不打扰。
在这里插入图片描述

3)断路器模式:如果在一定时间内失败次数/失败率达到一定阈值,就跳闸,断路器打开------请求直接返回,不去调用原本的逻辑。跳闸后(例如10s后)进入一种半开状态,允许一次请求调用,如果成功断路器关闭,如果失败,继续断着吧。。
在这里插入图片描述

三、Sentinel流量控制,容错,降级

开始整活:

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

这里说明一下,不用DashBoard,需要写代码,缺陷很大,具体的缺陷有:
(1)业务侵入性很大,需要在你的controoler中写入 非业务代码
(2)关于受保护的方法多了的话,blockHandler 需要写很多的代码。
(3)要么就是不能动态的添加规则.

所以玩Sentinel 还是得用上Sentinel DashBoard哈
1、添加依赖

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

	//actuator的话,后期可以通过:http://localhost:微服务IP/actuator/sentinel查看所有你整过的限流规则,也就是暴漏端点
	
	<!--加入actuator-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>

一切配置好后输入DashBoard ip
在这里插入图片描述
接下来主要讲讲一些规则,简单记录下

当你在网页发起请求后,会在簇点链路上用来显示微服务的所监控的API

在这里插入图片描述
点击流控按钮 在这里插入图片描述这里的意思是每秒该请求可接受的QPS量为2个,超过就会报出在这里插入图片描述关于流控模式:
1.直接:就是达到阈值直接抛出异常
2.关联:现在又两个API,一个是保存订单(写)一个是查询订单(读),假设我们希望优先操作保存订单在这里插入图片描述也就是saveOrder达到设置的阈值,findById/id 就应该歇一歇了。限流

3.链路:低版本可用,API级别的限流
就是两个请求同时请求同一个资源,会限制某一个资源,如图
在这里插入图片描述
@GetMapping("/findAll")
2 public String findAll() {
3 this.orderServiceImpl.common();
4 return “findAll”;
5 }
6
7 @GetMapping("/findAllByCondtion")
8 public String findAllByCondtion() {
9 this.orderServiceImpl.common();
10 return “findAllByCondition”;
11 }
会限制findAll而不会限制findAllByCondition

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值