从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十)sentinel篇(2): sentinel 流控规则及使用详解

简介: 从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十)sentinel篇(2): sentinel 流控规则及使用详解

sentinel qps与最大并发数区别,流控模式:直接,关联,链路, 流控效果: 直接,关联,链路 ,流控效果:快速失败,Warm Up,排队等待 等详解

1.png

流控配置与使用


1.png

基本配置-阈值类型


qps 类型


1.png

qps 相当于每秒请求数,和实际处理能力无关,也就是针对某资源,每秒请求数达到设定阈值,则触发限流



最大并发数 类型


1.png

最大并发数 相当于系统正在处理这个资源的线程数,也就是针对某资源,如果判断正则处理的线程数达到阈值,则触发限流


qps 与 最大并发数区别


下面是我的个人看法,为了方便大家更容易理解,可以把资源想象成一个饭店,

qps 是饭店的门口入口,如果饭店内已经坐满了,那么就触发限流,

具体后续怎么操作比如,是直接告诉顾客回去吧,还是排队那是饭店的策略

最大并发可以想象成后厨正在做饭的后厨团队,同时在给这个饭店做饭的是几个厨师,

也许做了100个客人点了红烧肉,其实规了只有5个厨师能做红烧肉,如果超过了那就触发限流

模拟图如下:

1.png

其实可以把qps 可以理解为spring boot 设置的maxconnections ,最大并发数理解为maxthreads ,只不过都是针对某资源而已


高级配置


流控模式-直接

1.png

直接模式就是当达到了设置的阈值就直接启动限流规则


流控模式-关联


1.png

关联模式是某一资源依赖其他资源或者内部请求依赖,比如fegin请求等,可以直接对内部依赖资源进行限流,当内部资源被先溜了,那么外部依赖资源也同样进行限流
比如我们订单创建请求依赖库存查询请求,比如/order -> /queryStock ,如果/queryStock 限流了那么/order 同时进行限流,如下图

1.png

流控模式-链路


1.png

链路模式和关联模式有点反过来的意思,比如上面关联模式,是被依赖的限流了,则入口端也同时限流,链路模式是设置某一入口,从指定设置入口请求的超过阈值被限流
比如 比如/order -> /queryStock ,/goodsStocks -> /queryStock 都请求了/queryStock,这次我们设置链路模式入口是/order ,则只有/order->/queryStock 这个请求会被限流,如下图

1.png

流控效果-快速失败


1.png

快速失败,字面意思,触发限流后直接返回sentinel blocked 或者自定义返回数据提示限流了


流控效果-Warm Up


字面意思看起来不太明白,可以举个例子就很好理解了
电商的秒杀活动,我们阈值如果设为了10,在秒杀开始之前很可能一直保持0请求,
在秒杀活动开始后,可能瞬间就会达到10触发流控,这时候其实对系统是很不友好的,因为很多数据可能还没来得及初始化或者设备没有唤醒就崩溃了
比如一些商品缓存,瞬间访问的时候可能商品信息还没有缓存完毕,
所以针对这种情况,有了预热效果,例如我设置了阈值是10,预热时长是5,系统默认的初始化阈值时3,
也就是说明。我们希望,5秒内阈值从3到10 
第一秒是每秒递增量(10-3)/5 = 1.4 ,加上当前阈值 3 = 4.4
第二秒就是4.4 +1.4 = 5.8
第三秒就是5.8 +1.4 = 7.2
第四秒就是7.2 +1.4 = 8.6
第五秒就是8.6 +1.4 = 10 .刚好达到设定阈值,大体曲线图如下

1.png

流控效果-排队等待


1.png

等待排队顾名思义,就是所有请求都是平滑一个个通过,比如我们qps设置2,那么按照秒切割就是500ms通过一个请求,效果图如下

1.png

相关文章
|
7月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1178 3
|
6月前
|
SQL Java 数据库连接
Spring Data JPA 技术深度解析与应用指南
本文档全面介绍 Spring Data JPA 的核心概念、技术原理和实际应用。作为 Spring 生态系统中数据访问层的关键组件,Spring Data JPA 极大简化了 Java 持久层开发。本文将深入探讨其架构设计、核心接口、查询派生机制、事务管理以及与 Spring 框架的集成方式,并通过实际示例展示如何高效地使用这一技术。本文档约1500字,适合有一定 Spring 和 JPA 基础的开发者阅读。
648 0
|
5月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
381 8
|
7月前
|
Java 应用服务中间件 开发者
Spring Boot 技术详解与应用实践
本文档旨在全面介绍 Spring Boot 这一广泛应用于现代企业级应用开发的框架。内容将涵盖 Spring Boot 的核心概念、核心特性、项目自动生成与结构解析、基础功能实现(如 RESTful API、数据访问)、配置管理以及最终的构建与部署。通过本文档,读者将能够理解 Spring Boot 如何简化 Spring 应用的初始搭建和开发过程,并掌握其基本使用方法。
552 2
|
7月前
|
人工智能 监控 安全
如何快速上手【Spring AOP】?核心应用实战(上篇)
哈喽大家好吖~欢迎来到Spring AOP系列教程的上篇 - 应用篇。在本篇,我们将专注于Spring AOP的实际应用,通过具体的代码示例和场景分析,帮助大家掌握AOP的使用方法和技巧。而在后续的下篇中,我们将深入探讨Spring AOP的实现原理和底层机制。 AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的核心特性之一,它能够帮助我们解决横切关注点(如日志记录、性能统计、安全控制、事务管理等)的问题,提高代码的模块化程度和复用性。
|
7月前
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
1330 10
|
8月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
811 13
|
8月前
|
存储 负载均衡 Java
SpringCloud框架
本文介绍了微服务架构中常用的技术组件与原理,包括Nacos与Eureka的服务注册与发现机制、Nacos的分级存储模型、OpenFeign的远程调用流程、Ribbon与Spring LoadBalancer的负载均衡策略、Hystrix与Sentinel的限流熔断机制、滑动窗口算法原理,以及Spring Cloud Gateway的路由断言与过滤器功能,全面覆盖微服务核心治理能力。
|
8月前
|
NoSQL Java Redis
Redis基本数据类型及Spring Data Redis应用
Redis 是开源高性能键值对数据库,支持 String、Hash、List、Set、Sorted Set 等数据结构,适用于缓存、消息队列、排行榜等场景。具备高性能、原子操作及丰富功能,是分布式系统核心组件。
696 2
|
8月前
|
安全 Java Nacos
0代码改动实现Spring应用数据库帐密自动轮转
Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。