• springcloudalibaba架构(7):Sentinel授权规则和系统规则


    授权规则

    有时候,我们需要根据调用来源判断该次请求是否允许放行,这时候可以使用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
  • 相关阅读:
    SQL优化问题的简述
    Debian直接安装mysql8
    关键字volatile用法
    文举论金:黄金原油全面走势分析策略指导。
    LeetCode知识点总结 - 114
    y114.第六章 微服务、服务网格及Envoy实战 -- Envoy网格安全(二五)
    自动化测试08
    基于Tensorflow搭建卷积神经网络CNN(水果识别)保姆及级教程
    236. 二叉树的最近公共祖先
    Cache学习(1):常见的程序运行模型&多级Cache存储结构
  • 原文地址:https://blog.csdn.net/u011628753/article/details/126180860