从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

相关文章
|
8月前
|
算法 Java 微服务
【SpringCloud(1)】初识微服务架构:创建一个简单的微服务;java与Spring与微服务;初入RestTemplate
微服务架构是What?? 微服务架构是一种架构模式,它提出将单一应用程序划分为一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 每个服务允许在其独立的进程中,服务于服务间采用轻量级的通信机制互相协作(通常是Http协议的RESTful API或RPC协议)。 每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建
678 126
|
8月前
|
负载均衡 算法 Java
【SpringCloud(2)】微服务注册中心:Eureka、Zookeeper;CAP分析;服务注册与服务发现;单机/集群部署Eureka;连接注册中心
1. 什么是服务治理? SpringCloud封装了Netfix开发的Eureka模块来实现服务治理 在传统pc的远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册
447 0
|
10月前
|
监控 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注册中心服务 构建商品
1406 3
|
9月前
|
监控 Java 数据库
从零学 Dropwizard:手把手搭轻量 Java 微服务,告别 Spring 臃肿
Dropwizard 整合 Jetty、Jersey 等成熟组件,开箱即用,无需复杂配置。轻量高效,启动快,资源占用少,内置监控、健康检查与安全防护,搭配 Docker 部署便捷,是构建生产级 Java 微服务的极简利器。
927 117
|
安全 Java Apache
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
663 0
|
8月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
安全 Java 数据安全/隐私保护
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
496 0
|
9月前
|
监控 安全 Java
Spring Cloud 微服务治理技术详解与实践指南
本文档全面介绍 Spring Cloud 微服务治理框架的核心组件、架构设计和实践应用。作为 Spring 生态系统中构建分布式系统的标准工具箱,Spring Cloud 提供了一套完整的微服务解决方案,涵盖服务发现、配置管理、负载均衡、熔断器等关键功能。本文将深入探讨其核心组件的工作原理、集成方式以及在实际项目中的最佳实践,帮助开发者构建高可用、可扩展的分布式系统。
533 1
|
9月前
|
jenkins Java 持续交付
使用 Jenkins 和 Spring Cloud 自动化微服务部署
随着单体应用逐渐被微服务架构取代,企业对快速发布、可扩展性和高可用性的需求日益增长。Jenkins 作为领先的持续集成与部署工具,结合 Spring Cloud 提供的云原生解决方案,能够有效简化微服务的开发、测试与部署流程。本文介绍了如何通过 Jenkins 实现微服务的自动化构建与部署,并结合 Spring Cloud 的配置管理、服务发现等功能,打造高效、稳定的微服务交付流程。
1027 0
使用 Jenkins 和 Spring Cloud 自动化微服务部署