Spring Cloud Alibaba - Sentinel入门案例(五)(授权规则 / 系统规则 (简要说明))

Spring Cloud Alibaba - Sentinel入门案例(五)(授权规则 / 系统规则 )

回溯

什么是Sentinel?

Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量
为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。

本文主要讲解 Sentinel 容错功能之一 授权规则 ,以及简单说明 系统规则

正文

授权规则

简单描述

很多时候,我们需要根据调用来源来判断该次请求是否允许放行,这时候可以使用 Sentinel 的来源访问控制(黑白名单控制)的功能。来源访问控制根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。

开始测试

在这里插入图片描述

编辑一个资源名为 Origin 的资源,我们想让他流控应用为暗影岛的降级。

流控应用 这个位置要填写的是来源标识,Sentinel提供了 RequestOriginParser 接口来处理来源。

只要Sentinel保护的接口资源被访问,Sentinel就会调用 RequestOriginParser 的实现类去解析访问来源。

我们新增一个类交给容器管理。

@Component
public class RequestOriginParserDefinition implements RequestOriginParser {
    
    
    @Override
    public String parseOrigin(HttpServletRequest httpServletRequest) {
    
    
        // 当前 流控应用 放在了请求参数里面,可以放到的地方有很多,比如 参数/请求头/session/等等
        return httpServletRequest.getParameter("sourceName");
    }
}

编写请求方法。

扫描二维码关注公众号,回复: 12471977 查看本文章
    @RequestMapping("/testMessageFunctionOrigin")
    @SentinelResource("/Origin")
    public String testMessageFunctionOrigin(String sourceName) {
    
    
        return sourceName;
    }

当请求参数为艾欧尼亚的时候都可以正常访问。
在这里插入图片描述
在这里插入图片描述

当请求参数为暗影岛的时候触发降级。

在这里插入图片描述
在这里插入图片描述
ps: 当前 流控应用 放在了请求参数里面,可以放到的地方有很多,比如 参数/请求头/session/等等,这里不要和热点规则弄混了。

系统规则(简单描述)

系统保护规则是从应用级别的入口流量进行控制,从单台机器的总体 LoadRT入口 QPSCPU使用率线程数 五个维度监控应用数据,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。系统保护规则是应用整体维度的,而不是资源维度的,并且仅对入口流量 (进入应用的流量) 生效。

  • Load(仅对 Linux/Unix-like 机器生效):当系统 load1 超过阈值,且系统当前的并发线程数超过系统容量时才会触发系统保护。系统容量由系统的 maxQps * minRt 计算得出。设定参考值一般是 CPU cores * 2.5。
  • RT:当单台机器上所有入口流量的平均 RT 达到阈值即触发系统保护,单位是毫秒。
  • 线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。
  • 入口 QPS:当单台机器上所有入口流量的 QPS 达到阈值即触发系统保护。
  • CPU使用率:当单台机器上所有入口流量的 CPU使用率达到阈值即触发系统保护。

ps(为啥只是简单讲一下,因为!这个通常是运维的活,如果公司是小公司,你已经全栈了,后端前端数据库都干,可是连运维的活也干,那你就要多点心思了!)

猜你喜欢

转载自blog.csdn.net/qq_29064815/article/details/107158657