码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • springcloudalibaba架构(7):Sentinel授权规则和系统规则


    文章目录

    • 授权规则
    • 如何设置热点规则
      • 黑名单
      • 白名单
    • 系统规则
    • 遇到的问题
      • 1. 授权规则不生效

    授权规则

    有时候,我们需要根据调用来源判断该次请求是否允许放行,这时候可以使用Sentinel的来源访问控制的功能。来源访问控制资源的请求来源(origin)限制资源是否通过。

    在这里插入图片描述

    如何设置热点规则

    比如某资源的访问分为pc,mobile和app 三端都会调用。我们希望禁止app端的访问。
    那么我们就需要从request里面获取标识信息。

    黑名单

    请求来源为黑名单不通过,其它均可以通过

    1. 添加代码,获取request里面的请求(这里示例直接从参数里获取是为了方便测试,实际开发应该从header里获取)
    @Component
    public class RequestOriginParserDefinition implements RequestOriginParser {
        @Override
        public String parseOrigin(HttpServletRequest request) {
    
            //获取request的域,区分请求来源是pc还是app,mobile
            String name=request.getParameter("serviceName");
            if(StringUtils.isEmpty(name)){
                throw new RuntimeException("serviceName is empty");
            }
            System.out.println(name);
            return name;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    1. 启动服务器,请求任意一个接口,并打开sentinel-dashboard控制台,点击授权
      在这里插入图片描述
      设置app为黑名单
      在这里插入图片描述
    2. 发起请求 http://localhost:8091/order2/hello?serviceName=app,则app来源的请求被限制了。而pc的请求则可以继续访问。
      在这里插入图片描述
      在这里插入图片描述

    白名单

    请求来源位于白名单可以通过,其它均不可以通过。

    我们将app设置为白名单,则只有app端的请求可以通过,其它端均不能通过。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    系统规则

    系统保护规则是从应用级别的入口流量进行控制,从单台机器的总体Load、RT、入口QPS、CPU使用率和线程数5个维度监控应用数据,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。

    系统保护规则是应用整体维度的,而不是针对资源维度,并且仅对入口流量生效。

    • Load
      仅对Linux和unix机器生效,当系统load1超过阈值,且系统当前的并发线程数超过系统容量时才会处罚系统保护。系统容量由系统的maxQPSminRT计算得出。设定参考值一般为CPU cores2.5
    • RT
      当单台机器上所有入口流量的并发线程数达到阈值触发系统保护,单位毫秒。
    • 线程数
      当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。
    • 入口QPS
      当单台机器上所有入口流量的QPS达到阈值即处罚系统保护。
    • CPU使用率
      当单台机器上所有入口流量的CPU使用率达到阈值即处罚系统保护。

    注:系统规则在实际运用中比较少出现。

    遇到的问题

    1. 授权规则不生效

    解决方案:移除依赖,并删除链路模式对应的配置和代码。

    <dependency>
                <groupId>com.alibaba.cspgroupId>
                <artifactId>sentinel-web-servletartifactId>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    Azure - 机器学习:使用自动化机器学习训练计算机视觉模型的数据架构
    【英语:基础进阶_原著扩展阅读】J5.阅读分析中的常用概念
    How To Improve Your LISTENING SKILLS( 如何提升你的听力技能) 学习
    go exec.Command使用
    实现一个快速排序算法,并分析算法的时间复杂度。
    【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(二)
    HK32F030MF4P6的Linux GCC工具链开发环境
    Spring的使用
    视频去LOGO的方法,AI自动完美地去除视频LOGO
    Android 备忘录,记事本程序设计
  • 原文地址:https://blog.csdn.net/u011628753/article/details/126180860
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号