赞
踩
目录
7.我们可以自定义限流异常处理器,直接或着简介实现BlockExceptionHandler接口并交给spring管理
Sentinel是分布式系统防卫兵,是阿里开源的一套用于服务容错的综合性解决方案,他以流量切入点,从流量控制,熔断降级。系统负载保护等多个维度来保护服务的稳定性。
核心库(Java客户端):能够运行与所有Java运行时环境,同时对Dubb/Spring Cloud等框架也有较好的支持。
控制台(Dashboard):基于SPringle Boot开发,打包后可以直接运行。
https://github.com/alibaba/Sentinel/releases
指令:java -Dserver.port=8180 -Dcsp.sentinel.dashboard.server=localhost:8180 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar
启动成功之后,在浏览器访问:localhost:8180
用户,密码都是sentinel。
概述:我们系统中的数据库连接池,线程池,nginx的瞬时并发等在使用时都会给定一个限定的值,这本身就是一种限流的设计。限流的目的防止恶意请求,恶意攻击,或着防止流量超过系统峰值。
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
- </dependency>
- cloud:
- sentinel:
- transport:
- dashboard: localhost:8180 #指定控制台
- @RestController
- @RequestMapping("/provider")
- public class ProviderSentinelController {
- @Autowired
- private ResourceService resourceService;
- @GetMapping("/sentinel01")
- public String doSentinel01(){
- return "sentinel 01 test ...";
- }
1,选择限流的流控(流量控制),QSP(每面请求的次数),单机阈值(1,代表每秒请求的次数不超过一次。否则就做限流处理。处理方式直接调用失败)。
2,设置限流策略
3,反复刷新,会出现限流提示
因为请求资源过大,服务器处理能力不足,需要对访问进行限流。
Sentinel,
对请求进行拦截,然后通过限流算法,对请求进行限制。
AbstractSentinelInterceptor->HandlerIntercept的子类
计数器,令牌桶,漏桶,滑动窗口算法~Sentinel默认
DefaultBlockExceptionHandler
QPS,线程数
直接,关联,链路
关联式一个资源A绑定了资源B,当B访问量较大时,对A进行限流或着当某一个资源访问量较大时,对其他资源进行限流。又称为霸权方式
链路限流是同时有多个链路对资源进行访问,可以对链路进行指定限流。
定义限流切入点方法,底层可以基于AOP的方式对请求链路进行限制13
快速失败,warm up,排队等待。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。