分布式系统容错保护-Sentinel使用实践

(1)Sentinel-概述

(1.1)简介

Sentinel 是面向分布式服务架构的轻量级流量控制框架,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护服务的稳定性。
Sentinel 基本概念资源
资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。在接下来的文档中,我们都会用资源来描述代码块。
规则
围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。
流控
流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel 作为一个调配器,可以根据需要把随机的请求调整成合适的形状,如下图所示:
在这里插入图片描述

(1.2)特性

Sentinel的使用可以分为两个部分:
核心库(java客户端): 不依赖任何框架/库,能够运行于Java7以上版本的运行时环境,同时对Dubbo/SpringCloud等框架也有较好的支持
控制台(Dashboard): 基于Springboot开发,打包后可以直接运行,不需要额外的Tomcat等应用容器,主要负责管理推送规则、监控、集群限流分配管理、机器发现等

(2)Sentinel-入门案例

(2.1)添加依赖

<dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-core</artifactId>
            <version>1.7.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-transport-simple-http</artifactId>
            <version>1.7.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-annotation-aspectj</artifactId>
            <version>1.7.1</version>
        </dependency>

(2.2)API方式定义资源

@GetMapping(value = "/echo")
    public String echo(){
        //加载规则
        this.initFlowRule();
        //定义资源
        try(Entry entry = SphU.entry("echo")) {
            //被保护的业务代码
            return "i am from port:"+ port;
        }catch (BlockException e){
            return "小葵花妈妈课堂开课啦";
        }
    }

(2.3)规则定义

热点参数规则

在这里插入图片描述

private void initFlowRule(){
        ArrayList<FlowRule> rules = new ArrayList<>();
        FlowRule rule = new FlowRule();
        //设定资源名
        rule.setResource("echo");
        //设定限流阈值
        rule.setCount(2);
        //设定限流阈值类型
        rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
        //设定针对的来源
        rule.setLimitApp("default");
        rules.add(rule);
        FlowRuleManager.loadRules(rules);
    }

(3)Sentinel-Dashboard使用

访问: https://github.com/alibaba/Sentinel/releases. 下载与项目中对应的版本

打开cmd窗口切换到jar包所在的路径执行命令启动控制台

java -jar sentinel-dashboard-1.7.1.jar

访问:localhost:8080可以看到Sentinel控制台
在这里插入图片描述
项目接入控制台的配置:-Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=operator-web
在这里插入图片描述
接下来即可添加一些规则
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值