Sentinel入门与整合

1. 流量控制&熔断降级的实现方案

在这里插入图片描述

2. 3种方案对比

在这里插入图片描述

3. Sentinel

3.1 Sentinel介绍

阿里巴巴出品面向分布式服务架构的轻量级流量控制组件

主要以流量为切入点;
限流、流量整形、熔断降级、系统负载均衡保护等多个维度;
保障微服务的稳定性

GitHub地址:https://github.com/alibaba/Sentinel
中文文档:https://github.com/alibaba/Sentinel/wiki/介绍

3.2 Sentinel组成

Sentinel使用主要分为两个部分:

  • 核心库:主要指java客户端,不依赖任何框架/库,能运行在java7及以上版本的环境中,同时对 Dubbo / Spring Cloud 等框架也有较好的支持

  • 控制台:控制台主要负责管理推送规则、监控、集群限流分配管理、机器发现等。

3.3 Sentinel特征

  • 丰富的应用场景:Sentinel 承接了阿里巴巴近 10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
  • 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
  • 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
  • 完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

在这里插入图片描述

4. Sentinel入门

4.1 本地demo

1.创建springboot工程

2.在pom.xml中引入sentinel-core依赖

<!--sentinel-core依赖-->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-core</artifactId>
    <version>1.8.1</version>
</dependency>

3.定义controller

@RestController
public class TestController {
   

    /**
     * 资源 是 Sentinel 中的核心概念之一。最常用的资源是我们代码中的 Java 方法。
     * 当然,您也可以更灵活的定义你的资源,
     * 例如,把需要控制流量的代码用 Sentinel API SphU.entry("HelloWorld") 和 entry.exit() 包围起来即可。
     * 在下面的例子中,我们将 System.out.println("hello world"); 作为资源(被保护的逻辑)
     * 用 API 包装起来。参考代码如下:
     * @return
     */
    @RequestMapping("/hello")
    public String hello(){
   
        // 配置规则.
        initFlowRules();

        // 1.5.0 版本开始可以直接利用 try-with-resources 特性,自动 exit entry
        try (Entry entry = SphU.entry("HelloWorld")) {
   
            // 被保护的逻辑
            System.out.println("hello world");
            return "hello world";
        } catch (BlockException ex) {
   
            // 处理被流控的逻辑
            System.out.println("系统繁忙,请稍后重试!");
            return "系统繁忙,请稍后重试!";
        }

    }


    /**
     * 定义规则
     *
     * 接下来,通过流控规则来指定允许该资源通过的请求次数;
     * 例如下面的代码定义了资源 HelloWorld
     * 每秒最多只能通过 20 个请求。
     */
    @PostConstruct//当前类的构造函数执行之后执行
    private void initFlowRules() {
   
        //1.创建存放限流规则的集合
        List<FlowRule> rules = new ArrayList<>();
        //2.创建限流规则
        FlowRule rule = new FlowRule();
        //定义资源,表示Sentinel会对哪个资源生效
        rule.setResource("HelloWorld");
        //定义限流的类型(此处使用QPS作为限流类型)
        rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
        //定义资源 HelloWorld 每秒最多只能通过2个请求。
        rule.setCount(2);
        //3.将限流规则存放到集合中
        rules.add(rule);
        //4.加载限流规则
        FlowRuleManager.loadRules(rules);
    }
}

4.测试,
正常:控制台打印hello world
当请求短时间内,超过2次:控制台打印:系统繁忙,请稍后重试!

在这里插入图片描述

4.2 Sentinel 控制台

概述

Sentinel 提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理监控(单机和集群),规则管理和推送的功能。

Sentinel 控制台包含如下功能:

  • 查看机器列表以及健康情况:收集 Sentinel 客户端发送的心跳包,用于判断机器是否在线。
  • 监控 (单机和集群聚合):通过 Sentinel 客户端暴露的监控 API,定期拉取并且聚合应用监控信息,最终可以实现秒级的实时监控。
  • 规则管理和推送:统一管理推送规则。
  • 鉴权:生产环境中鉴权非常重要。这里每个开发者需要根据自己的实际情况进行定制。

4.3 启动控制台

4.3.1 获取 Sentinel 控制台

1.下载https://github.com/alibaba/Sentinel/releases
在这里插入图片描述

4.3.2 启动

注意:启动 Sentinel 控制台需要 JDK 版本为 1.8 及以上版本。

创建一个文件夹,

E:\develop\Sentinel
将sentinel-dashboard-1.8.1.jar移入Sentinel文件夹
创建一个start.bat文件

start.bat文件中的内容为:

java -Dserver.port=9870 -jar sentinel-dashboard-1.8.1.jar

其中 -Dserver.port=9870 用于指定 Sentinel 控制台端口为 9870

注意: 从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的 登录 功能,默认用户名和密码都是 sentinel

点击start.bat启动
在这里插入图片描述
在这里插入图片描述

访问:http://localhost:9870

在这里插入图片描述

在这里插入图片描述

由于本地应用没有接入控制台,所以是空白…

4.4 本地服务接入控制台

本地服务是以客户端的身份来接入控制台,具体步骤如下:

4.4.1 导入依赖

客户端需要引入 Transport 模块来与 Sentinel 控制台进行通信。您可以通过 pom.xml 引入 JAR 包:

<!--本地应用接入控制台的依赖-->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-transport-simple-http</artifactId>
            <version>1.8.1</version>
        </dependency>
4.4.2 在本地应用添加JVM启动参数
-Dcsp.sentinel.dashboard.server=localhost:9870   Sentinel控制台的主机地址和端口号
-Dproject.name=FirstDemo				本地应用在控制台中的名称

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
为了整合Sentinel,你需要按照以下步骤进行操作: 1. 首先,你需要在Spring Boot的配置文件中添加Sentinel的配置信息。在你提供的引用中,可以看到在配置文件中有一部分是关于Sentinel的配置。你需要根据自己的需求,配置Sentinel的transport地址、dashboard地址以及数据源等信息。 2. 接下来,你需要引入Sentinel的相关依赖。根据引用所述,你可以使用Nacos或Zookeeper等配置中心来推送规则,所以你需要引入相应的依赖,并在客户端中注册监听器,以便时刻监听规则的变化。 3. 对于使用OpenFeign进行服务调用的情况,你可以使用Sentinel来进行服务的熔断降级处理,以提高自身的稳定性。根据引用所述,你需要在OpenFeign中配置Sentinel,以便在被调用的服务接口出现异常时进行相应的处理,避免拖垮消费端的服务接口。 综上所述,你可以按照以上步骤进行整合Sentinel,并根据实际需求配置相应的参数和规则。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【springcloud 微服务】Spring Cloud Alibaba整合Sentinel详解](https://blog.csdn.net/congge_study/article/details/129763132)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值