SpringCloud Aliba-Sentinel【中篇】-从入门到学废【5】

🎵歌词分享🎵

岁月在墙上剥落看见小时候。

——《东风破》

目录

🥓1.流控规则

🌭2. 熔断规则

🧈3.热点规则 

🧂4.系统规则 


1.流控规则

1.资源名:唯一名称,默认请求路径

2.针对来源: Sentinel可以针对调用者进行限流,填写微服务名,默认default (不区分来源)

3.阈值类型/单机阈值:

  • QPS(每秒钟的请求数量):当调用该api的QPS达到阈值的时候,进行限流
  • 线程数:当调用该api的线程数达到阈值的时候,进行限流

4.是否集群:不需要集群

5.流控模式

  • 直接:api达到限流条件时,直接限流
  • 关联:当关联的资源达到阈值时,就限流自己
  • 链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,就进行限流)【api级别的针对来源】

6.流控效果

  • 快速失败:直接失败,抛异常
  • Warm Up:根据codeFactor (冷加载因子,默认3)的值,从阈值/codeFactor,经过预热时长,才达到设置的QPS阈值
  • 排队等待:匀速排队,让请求以匀速的速度通过,阈值类型必须设置为QPS,否则无效

2. 熔断规则

  • 1.RT(平均响应时间,秒级)平均响应时间超出阈值在时间窗口内通过的请求>=5, 两个条件同时满足后触发降级。窗口期过后关闭断路器。RT最大4900 (更大的需要通过-Dcsp.sentinel.statistic.max.rt=XXXX才能生效)
  • 2.异常比列(秒级)QPS >=5 且异常比例(秒级统计)超过阈值时,触发降级;时间窗口结束后,关闭降级
  • 3.异常数(分钟级)异常数(分钟统计)超过阈值时,触发降级;时间窗口结束后,关闭降级

3.热点规则 

3.1概述

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

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

参数索引:从0开始计算~

3.2基本使用 

@sentinelResource:配置热点规则(简单说明)

属性value:资源名,blockHandler:返回的兜底方法(设置了比较友好)

    @GetMapping("/testHotKey")@SentinelResource(value = "testHotKey",blockHandler = "deal_testHotKey")public String testHotKey(@RequestParam(value = "p1",required = false) String p1,@RequestParam(value = "p2",required = false)String p2){return "-----------testHotKey-----------";}public String deal_testHotKey(String p1, String p2, BlockException blockException){return "deal_testHotKey,/(ㄒoㄒ)/~~";}

3.3参数例外项 

  • 普通:超过1秒钟一个后,达到阈值1后马上被限流
  • 我们期望p1参数当它是某个特殊值时,它的限流值和平时不一样
  • 特例假如当p1的值等于5时,它的阈值可以达到100

4.系统规则 

4.1概述

  • 系统保护规则是从应用级别的入口流量进行控制,
  • 从单台机器的loadCPU使用率平均RT入口QPS并发线程数等几个维度监控应用指标,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。

4.2参数说明 

  • Load(仅对Linux/Unix-like机器生效) :系统的load1作为启发指标,进行自适应系统保护。当系统load1超过设定的启发值,且系统当前的并发线程数超过估算的系统容量时才会触发系统保护(BBR阶段)。系统容量由系统的 maxQps * minRt 估算得出。设定参考值一般是CPUcores * 2.5。
  • CPU使用率:当系統 CPU 使用率超过阈值即触发系统保护(取值范围 0.0-1.0)比较灵敏。
  • 平均RT:当单台机器上所有入口流量的平均RT达到阈值即触发系统保护,单位是毫秒。
  • 并发线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。
  • 入口 QPS:当单台机器上所有入口流量的 QPS 达到阈值即触发系统保护。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/417542.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPT应用_AutoGPT

项目地址:https://github.com/Significant-Gravitas/AutoGPT 1 功能 1.1 整体功能,想解决什么问题 单独使用 ChatGPT 时,只提供基本的聊天,无法实现复杂多步的功能,以及与其它应用交互,如果想提供某种功…

OpenCV实战:控制手势实现无触摸拖拽功能

前言: Hello大家好,我是Dream。 今天来学习一下如何使用OpenCV来控制手势,瞬间提升操作体验!跨越界限,OpenCV手势控制拖拽功能现身。 一、主要步骤及库的功能介绍 1.主要步骤 要实现本次实验,主要步骤如下…

Redis缓存问题解决方案

Redis缓存问题解决方案 为什么使用Redis缓存: 1.在高并发的情况下,大量查询进入数据库,会大量占用数据库的连接(默认数据库连接数151),数据库压力过大就会出现connection refuse(数据库连接拒绝)问题, 2.…

Codeforces Round 895 (Div. 3)补题

Two Vessels(Problem - A - Codeforces) 题目大意:有两个无限容器,目前一个容器中有a克水,另一个容器中有b克水,现有一个大小为cg的容器,我们每次可以从一个无限容器中取任意不大于c克的水&…

android中.9图如何制作

在工作中我们需要做界面往往需要设计师给我们提供图标,我们才能把界面友好的显示出来,普通的图标用png、jpg等都可以显示出来,为了让界面更与众不同,设计师们通常会设计一些弯角、弯钩如果我们要作为背景使用的话就不能设置高度&a…

【 Qt 快速上手】-①- Qt 背景介绍与发展前景

文章目录 1.1 什么是 Qt1.2 Qt 的发展史1.3 Qt 支持的平台1.4 Qt 版本1.5 Qt 的优点1.6 Qt的应用场景1.7 Qt的成功案例1.8 Qt的发展前景及就业分析行业发展方向就业方面的发展前景 1.1 什么是 Qt Qt 是一个跨平台的 C 图形用户界面应用程序框架。它为应用程序开发者提供了建立…

349. 两个数组的交集(力扣)(OJ题)

题目链接:349. 两个数组的交集 - 力扣(LeetCode) 个人博客主页:https://blog.csdn.net/2301_79293429?typeblog 专栏:https://blog.csdn.net/2301_79293429/category_12545690.html 给定两个数组 nums1 和 nums2 &a…

协议网关BL110轻松实现多种协议转MQTT、OPC UA,支持8种主流工业协议转换

随着工业4.0的迅猛发展,人们深刻认识到在工业生产和生活中,实时、可靠、安全的数据传输至关重要。而在工厂自动化领域,工业设备之间的联动控制离不开各种工业通信协议。在此背景下,高性能的工业自动化数据传输解决方案——协议转换…

mac查看maven版本报错:The JAVA_HOME environment variable is not defined correctly

终端输入mvn -version报错: The JAVA_HOME environment variable is not defined correctly, this environment variable is needed to run this program. Java环境变量的问题,打开bash_profile查看 open ~/.bash_profile export JAVA_8_HOME/Library/Java/JavaVirtualMachine…

心跳检测与服务剔除

社保中心的忧桑 今天社保中心来了一位钉子户,90多岁的王大爷又兴高采烈的来给自己快120岁的老父亲领社保了! 工作人员这一-想,好像哪里不对啊,这老父亲120岁的年纪都可以上吉尼斯世界纪录了,要不咱帮老爷子去申请一下?王大爷一听…

vue3-侦听器

侦听器 计算属性允许我们声明性地计算衍生值。 需求在状态变化时进行一些操作&#xff0c;比如更改 Dom,根据异步操作结果去修改另外的数据状态。 watch 监听异步请求结果 <script lang"ts" setup> import { ref, watch } from "vue"const ques…

开发实践8_REST

一、Django REST Framework, Django View & APIView MTV模式实现前后端分离。Representational State Transfer 表现层状态转化。Representation 资源&#xff08;Resource a specific info. on net.&#xff09;具体呈现形式。ST 修改服务端的数据。修改数据 POST请求。…