IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 14.Sentinel服务限流 -> 正文阅读

[Java知识库]14.Sentinel服务限流

1.Sentinel安装:

Sentinel-dashboard限流

官方下载地址:  https://github.com/alibaba/Sentinel/releases
服务启动命令:  java -jar -Dserver.port=1111 sentinel-dashboard-1.6.0.jar
浏览器访问控制台:  http://localhost:1111
登录名和密码未指定,默认为 sentinel 和 sentinel

在这里插入图片描述

注意:只有1.6.0及以上版本才有这个登录页面。默认用户名和密码都是sentinel。对于用户登录的相关配置可以在启动命令中增加下面的参数来进行配置:

  • Dsentinel.dashboard.auth.username=sentinel: 用于指定控制台的登录用户名为 sentinel;
  • Dsentinel.dashboard.auth.password=123456: 用于指定控制台的登录密码为 123456;如果省略这两个参数,默认用户和密码均为 sentinel
  • Dserver.servlet.session.timeout=7200: 用于指定 Spring Boot 服务端 session 的过期时间,如 7200 表示 7200 秒;60m 表示 60 分钟,默认为 30 分钟;
  • Dserver.port=1111:配置端口
    在这里插入图片描述

2.sentinel使用

2.1、在pom.xml配置文件中加入sentinel依赖

<!-- sentinel 服务限流 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

2.2、修改yml配置文件,添加sentinel服务控制台地址

spring:
  clound:
    sentinel: # 服务限流
       transport:
         dashboard: localhost:1111 #sentinel限流服务地址

2.3、资源限流

//Sentinel为我们提供了 @sentinelResource 注解标记需要限流的资源,修改UserController,代码如下:
//提示:这里通过@SentinelResource的value属性为资源取名为 “getById” ,后续我们可以根据该资源名来进行限流。
//同时这里通过 blockHandler 属性我配置了一个限流降级方法,即当“getById”资源触发限流了会调用blockHandler指向的降级方法返回拖地数据,
//不至于抛出默认的限流异常信息给客户端(一串英文用户也看不懂) ,需要注意的是:降级方法要和被限流的方法参数一致,然后加上 BlockException异常对象。
@GetMapping(“user/{id}”)
@SentinelResource(value = "getById" ,blockHandler = "exceptionHanlder")
public User getById(@PathVariable Long id){
    System.out.println("读取到云端配置:notify = " + notify);
    return new User(id, "zs:" + id ,"我是zs");
}
//限流与阻塞处理:参数要和被降级的方法参数一样,后面多一个BlockException参数;返回值也一样
public User exceptionHanlder(@PathVariable Long id, BlockException ex){
    ex.printStackTrace();
    System.out.println("限流了.....");
    return new User(-1L,"限流了","限流了");
}
//当然,也可以通过 blockHandlerClass 属性把降级方法写在一个专门的类中,如:
//@SentinelResource(value="user",blockHandler="exceptionHandler",blockHandlerClass=BlockExceptionUtils.Class)
public User getById(@PathVariable Long id){
}

2.4、在sentinel-dashboar控制台 进行 流量规则 配置

启动应用 springcloudalibaba-user-server-1010 ,然后通过浏览器访问 http://localhost:1010/user/11 ,
然后登录Sentinel控制台,在“实时监控”列表中可以看到资源的相关监控信息的
QPS (Query Pre Second): 每秒请求数,就是说服务器在一秒的时间内处理了多少个请求。
1.QPS说明:
QPS即每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

2.每秒查询率
因特网上,经常用每秒查询率来衡量域名系统服务器的机器的性能,即为QPS。
对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。

3.计算关系:
QPS = 并发量 / 平均响应时间
并发量 = QPS * 平均响应时间

**4.原理:**每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS) 。
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器 。

5.qps举例分析:
每天300w PV 的在单台机器上,这台机器需要多少QPS?
( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)。

一般需要达到139QPS,因为是峰值。
问:如果一台机器的QPS是58,需要几台机器来支持?
答:139 / 58 = 3

3.Sentinel流控模式

3.1.直接:

Sentinel默认的流控处理就是【直接->快速失败】,QPS达到阈值,当前资源直接失败。在流控规则中配置如下:

3.2.关联

关联的资源达到某个阈值,限流自己, 如:限流的资源是/user/delete ,关联的资源是/user/list,当/user/list达到阈值,限流user/delete ,举例: 支付并发太高,可以限制下单的流量

3.3.链路

限流线路调用链路的入口,如 /user/list 资源中 调用了 /dept/list ,对/dept/list添加限流,当/dept/list达到阈值,其实限流的是/user/list,因为他是访问的入口

关联和链路的区别:

关联:关联的资源达到某个阈值,限流自己;当别人达到峰值,限制自己

当/dept/list达到阈值,其实限流的是/user/list,因为他是访问的入口

关联和链路的区别:

关联:关联的资源达到某个阈值,限流自己;当别人达到峰值,限制自己
链路:限流线路调用链路的入口,限流别人,当自己达到峰值,限制别人
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章           查看所有文章
加:2022-06-29 18:51:47  更:2022-06-29 18:55:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:53:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码