【分布式流控组件 Sentinel 快速入门】——图文详解操作流程(中)

简介: 【分布式流控组件 Sentinel 快速入门】——图文详解操作流程(中)

【分布式流控组件 Sentinel 快速入门】——图文详解操作流程(上):https://developer.aliyun.com/article/1390157

5. Sentinel流控规则

💧流控规则用于限制资源的访问速率,防止系统被过多请求拖垮。例如,我们可以设置一个API在一分钟内最多只能处理100个请求:

  • 资源名:唯一名称。默认请求路径
  • 针对来源: Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源)
  • 阈值类型/单机阔值:
  • QPS(每秒钟的请求数量):当调用该api的QPS达到阔值的时候,进行限流。
  • 线钱程数:当调用该api伯9美程数认到阈值的时候。进行限流
  • 是否集群:不需要集群
  • 流控模式:
  • 直接: api达到限流尔件时,直接限流
  • 关联:当关联的资源达到阔值时。就限流自己
  • 链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,就进行限流)【api级别的针对来源】
  • 流控效果:
  • 快速失败:直接失败,抛异常
  • Warm up:根据codeFactor (冷加载因子,默认3)的值,从阈值/codeFactor,经过预热时长,才达到设置的QPS阈值。

💧添加流控规则

  • 方法1

  • 方法2

💧新增流控规则

💧再次访问 http://localhost:8401/testA 每秒点两次,直接限流

💧修改规则

💧修改代码

💧开两个线程,分别狂点

💧再次限流

💧当关联资源/testB的qps阀值超过1时,就限流/testA的Rest访问地址

💧使用postman 模拟连续密集访问testB

💧新建collection

💧点击Run 配置发送规则

💧此时访问testA,发现已经挂了,产生了连坐效应

💧预热冷启动,效果:刚开始点太快不行,等预热时间到了就可以正常访问

💧排队等待,一秒一个

6. Sentinel服务降级

💧服务降级是应对系统高并发时的一种保护措施。当资源的异常比例超过阈值时,系统将自动对该资源进行降级,避免系统崩溃。

💧测试代码:

💧新增降级规则

💧打开JMeter

💧添加线程组

💧点击运行

💧此时访问:http://localhost:8401/testE,服务已降级

💧停掉JMeter后,再次访问,不会降级,展示不友好的ERROR页面

💧异常数,时间要大于60s

💧快速请求五次testE,服务降级

7. Sentinel热点key限流

💧热点key限流用于对一些热点资源进行限制,防止因某个热点资源过于频繁访问而导致系统故障。

何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的TopK数据,并对其访问进行限制。比如:

  • 商品ID为参数,统计—段时间内最常购买的商品ID并进行限制
  • 用户ID为参数,针对—段时间内频繁访问的用户ID进行限制

热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。

Sentinel利用LRU策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。热点参数限流支持集群模式。

💧自定义兜底降级方法,@SentinelResource

💧访问一下:http://localhost:8401/testHotKey

💧添加限流规则

💧连续点击两次:http://localhost:8401/testHotKey?p1=a,限流,走兜底方法

💧如果我们配置了限流规则,但不添加兜底方案,那么被触发限流机制后就会直接报500

💧添加“参数例外项”,即使我们触发了上面的限流,但如果这个参数值是我们特殊指定的,则会走特殊通道

💧我们疯狂访问:http://localhost:8401/testHotKey?p1=5,没有任何问题。

💧而把5改为3,则依然限流,走兜底方法

【分布式流控组件 Sentinel 快速入门】——图文详解操作流程(下):https://developer.aliyun.com/article/1390160?spm=a2c6h.13148508.setting.17.4fea4f0ervlqra

相关文章
|
1月前
|
消息中间件 存储 监控
消息队列:分布式系统中的重要组件
消息队列:分布式系统中的重要组件
|
2月前
|
监控 API 开发者
Sentinel之道:流控模式解析与深度探讨
Sentinel之道:流控模式解析与深度探讨
54 0
|
3月前
|
负载均衡 Java 开发者
【分布式】Spring Cloud 组件综述
【1月更文挑战第25天】【分布式】Spring Cloud 组件综述
|
29天前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
33 0
|
3月前
|
存储 安全 JavaScript
【分布式技术专题】「授权认证体系」深度解析OAuth2.0协议的原理和流程框架实现指南(授权流程和模式)
在传统的客户端-服务器身份验证模式中,客户端请求服务器上访问受限的资源(受保护的资源)时,需要使用资源所有者的凭据在服务器上进行身份验证。资源所有者为了给第三方应用提供受限资源的访问权限,需要与第三方共享它的凭据。这就导致一些问题和局限:
373 2
【分布式技术专题】「授权认证体系」深度解析OAuth2.0协议的原理和流程框架实现指南(授权流程和模式)
|
29天前
|
NoSQL Java Redis
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(二)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
15 0
|
29天前
|
存储 监控 安全
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
64 1
|
1月前
|
SpringCloudAlibaba Java 持续交付
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(一)基础知识+各个组件介绍+聚合父工程创建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(一)基础知识+各个组件介绍+聚合父工程创建
97 1
|
2月前
|
监控 Java API
数字护盾:深度探讨Sentinel的三大流控策略
数字护盾:深度探讨Sentinel的三大流控策略
19 0
|
3月前
|
监控 测试技术 数据安全/隐私保护
如何集成Sentinel实现流控、降级、热点规则、授权规则总结
如何集成Sentinel实现流控、降级、热点规则、授权规则总结
78 0

热门文章

最新文章