当前位置:   article > 正文

Sentinel限流应用实践_sentinel 限流实践

sentinel 限流实践

目录

一、Sentinel定义

1,概述

2,Sentinel核心分为两个部分

二、Sentinel安装

1,下载网址

2,解压,目录不要有中文。

3,在本级目录下打开cmd,输入指令,启动Sentinel。指令:java -Dserver.port=8180 -Dcsp.sentinel.dashboard.server=localhost:8180 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar

4,访问Sentinel服务

三、Sentinel限流入门

 四、限流实践

 五、知识点总结

常见问题分析

1,为什么要限流?

2,限流的组件都有那儿些?

3,Sentinel时如何实现限流的?

4,Sentinel这里使用默认的限流拦截器是谁?

5,你了解Sentinel限流有那儿写算法?

6,Sentinel中默认的限流异常处理器是谁?

7.我们可以自定义限流异常处理器,直接或着简介实现BlockExceptionHandler接口并交给spring管理

8,你了解Sentinel有哪儿些阈值类型?

9,Sentinel流控模式有哪儿些?

10,如何理解关联限流?

11,如何理解链路限流?

12,@SentinelResource的作用是什么?

13,Sentinel常见的流控的效果有哪儿些?


一、Sentinel定义

1,概述

Sentinel是分布式系统防卫兵,是阿里开源的一套用于服务容错的综合性解决方案,他以流量切入点,从流量控制,熔断降级。系统负载保护等多个维度来保护服务的稳定性。

2,Sentinel核心分为两个部分

核心库(Java客户端):能够运行与所有Java运行时环境,同时对Dubb/Spring Cloud等框架也有较好的支持。

控制台(Dashboard):基于SPringle Boot开发,打包后可以直接运行。

二、Sentinel安装

1,下载网址

https://github.com/alibaba/Sentinel/releases

2,解压,目录不要有中文。

3,在本级目录下打开cmd,输入指令,启动Sentinel。


指令:java -Dserver.port=8180 -Dcsp.sentinel.dashboard.server=localhost:8180 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar

4,访问Sentinel服务

启动成功之后,在浏览器访问:localhost:8180

在这里插入图片描述

用户,密码都是sentinel。

三、Sentinel限流入门

概述:我们系统中的数据库连接池,线程池,nginx的瞬时并发等在使用时都会给定一个限定的值,这本身就是一种限流的设计。限流的目的防止恶意请求,恶意攻击,或着防止流量超过系统峰值。

1,Sentinel应用于服务提供方(sca-provider),在服务提供方下添加依赖:

  1. <dependency>
  2. <groupId>com.alibaba.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
  4. </dependency>

2,在bootstrap.yml添加配置信息

  1. cloud:
  2. sentinel:
  3. transport:
  4. dashboard: localhost:8180 #指定控制台

3,编辑controller对象

  1. @RestController
  2. @RequestMapping("/provider")
  3. public class ProviderSentinelController {
  4. @Autowired
  5. private ResourceService resourceService;
  6. @GetMapping("/sentinel01")
  7. public String doSentinel01(){
  8. return "sentinel 01 test ...";
  9. }

4,启动nacos及服务器,在浏览器进行访问

在这里插入图片描述

5,刷新控制台,实时监控 

在这里插入图片描述

 四、限流实践

1,选择限流的流控(流量控制),QSP(每面请求的次数),单机阈值(1,代表每秒请求的次数不超过一次。否则就做限流处理。处理方式直接调用失败)。

在这里插入图片描述

2,设置限流策略

在这里插入图片描述

3,反复刷新,会出现限流提示

 在这里插入图片描述

 五、知识点总结

常见问题分析

1,为什么要限流?

因为请求资源过大,服务器处理能力不足,需要对访问进行限流。

2,限流的组件都有那儿些?

Sentinel,

3,Sentinel时如何实现限流的?

对请求进行拦截,然后通过限流算法,对请求进行限制。

4,Sentinel这里使用默认的限流拦截器是谁?

AbstractSentinelInterceptor->HandlerIntercept的子类

5,你了解Sentinel限流有那儿写算法?

计数器,令牌桶,漏桶,滑动窗口算法~Sentinel默认

6,Sentinel中默认的限流异常处理器是谁?

DefaultBlockExceptionHandler

7.我们可以自定义限流异常处理器,直接或着简介实现BlockExceptionHandler接口并交给spring管理

8,你了解Sentinel有哪儿些阈值类型?

QPS,线程数

9,Sentinel流控模式有哪儿些?

直接,关联,链路

10,如何理解关联限流?

关联式一个资源A绑定了资源B,当B访问量较大时,对A进行限流或着当某一个资源访问量较大时,对其他资源进行限流。又称为霸权方式

11,如何理解链路限流?

链路限流是同时有多个链路对资源进行访问,可以对链路进行指定限流。

12,@SentinelResource的作用是什么?

定义限流切入点方法,底层可以基于AOP的方式对请求链路进行限制13

13,Sentinel常见的流控的效果有哪儿些?

快速失败,warm up,排队等待。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/741062
推荐阅读
相关标签
  

闽ICP备14008679号