1. 基本概念
1.1. 官方文档
1.2. sentinel是什么
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。
1.3. sentinel的特性(了解)
1: 丰富的应用场景 Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承 受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 2: 完备的实时监控 Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规 模的集群的汇总运行情况 3: 广泛的开源生态 Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只 需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。 4: 完善的 SPI 扩展点 Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管 理、适配动态数据源等。
1.4. sentinel的基本组成
核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 7 及以上的版本的运行时环境 可以结合springcloud一起使用 控制台(Dashboard):控制台主要负责管理推送规则、监控、集群限流分配管理等
2. 控制台安装
2.1. 控制台下载
2.2. 控制台运行
2.3. 访问登录
3. 案例学习流程
3.1. 环境搭建
3.1.1. 新建项目
3.1.2. 添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
</dependencies>
3.1.3. 编写主配置类
3.1.4. 编写配置文件
3.1.5. 编写controller
3.1.6. 启动测试
3.1.7. 控制台查看
3.2. 控制台和代码对应关系
3.3. 控制台限流使用
3.3.1. QPS直接快速失败
-
controller添加方法
-
访问测试
-
流控规则
-
测试
-
3.3.2. 线程数直接失败
-
controller添加
-
运行测试
3.3.3. 关联失败
-
controller添加
- 启动访问
-
限流规则
-
测试访问
3.3.4. 链路失败
-
添加service
-
controller添加
-
启动测试
-
控制台说明
-
流控规则
-
测试失败
3.3.5. 链路失败解决方案
-
官方说明
-
解决方案
-
-
修改版本(如果使用alibaba 2.1.0)
-
-
排除低版本(如果使用alibaba 2.1.0)
-
加入高版本(如果使用alibaba 2.1.0)
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-web-servlet</artifactId>
<version>1.7.2</version>
</dependency>
- 添加配置
@Bean
public FilterRegistrationBean sentinelFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new CommonFilter());
registration.addUrlPatterns("/*");
// 入口资源关闭聚合
registration.addInitParameter(CommonFilter.WEB_CONTEXT_UNIFY, "false");
registration.setName("sentinelFilter");
registration.setOrder(1);
return registration;
}
- 取消默认过滤器
-
启动测试
-
测试限流
3.3.6. 冷启动
-
controller添加
-
启动测试
-
流控规则
-
测试
-
3.3.7. 排队等待
-
controller添加
-
启动测试
-
流控规则
-
测试
3.4. 控制台降级使用
3.4.1. 设置和代码对照关系
3.4.2. 平均响应时间
-
controller添加
-
启动访问
-
降级规则
-
测试
3.4.3. 异常比例降级
-
controller
-
启动访问
-
降级规则
-
测试
3.4.4. 异常数量降级
-
controller添加
-
启动测试
-
降级规则
-
测试
3.5. 控制台热点限流
热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的数据,并对其访问进行限制。
3.5.1. 热点限流准备工作
3.5.2. 第一种热点限流
-
限流规则
-
测试
3.5.3. 第二种热点限流
-
限流规则
-
测试
3.6. 限流降级后处理
3.6.1. URL限流处理
3.6.1.1. 问题搭建
-
controller添加
-
运行测试
-
添加规则
- 测试
3.6.1.2. 解决方式一
-
编写代码测试
- 测试
3.6.1.3. 解决方式二
-
添加配置
- 测试
3.6.1.4. 特殊的URL
-
controller添加
-
控制台查看
-
URL清洗的方式
-
控制台
3.6.2. Resource限流处理
3.6.2.1. 问题搭建
-
controller添加
-
流控规则
-
测试
3.6.2.2. 解决方式一
3.6.2.3. 出异常的情况
3.6.2.4. 异常解决
3.6.2.5. 测试
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/192866.html