Sentinel 入门使用

news2024/12/24 21:22:46

目录

  • 一. Sentinel简介
    • 1.1Sentinel简介
    • 1.2 Sentinel与Hystrix的区别
    • 1.3 名词解释
  • 二. sentinel控制台
  • 2.1 下载启动控制台
    • 2.3 客户端接入控制台
    • 2.4 Rest整合Sentinel
    • 2.5 Feign 整合Sentinel
  • 想了解Sentinel具体的使用规则就点这里呀!!!

一. Sentinel简介

1.1Sentinel简介

在这里插入图片描述

  • 源码地址
  • 官方文档
  • 详细的介绍请参考sentinel官方文档

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

Sentinel 具有以下特征:

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

Sentinel 的主要特性:
在这里插入图片描述

1.2 Sentinel与Hystrix的区别

点这里查看区别
在这里插入图片描述

1.3 名词解释

Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard。核心库不依赖 Dashboard,但是结合
Dashboard 可以取得最好的效果。
使用 Sentinel 来进行熔断保护,主要分为几个步骤:

  1. 定义资源
  2. 定义规则
  3. 检验规则是否生效
  • 资源:可以是任何东西,一个服务,服务里的方法,甚至是一段代码。
  • 规则:Sentinel 支持以下几种规则:流量控制规则、熔断降级规则、系统保护规则、来源访问控制规则和 热点参数规则。

Sentinel 的所有规则都可以在内存态中动态地查询及修改,修改之后立即生效先把可能需要保护的资源定义好,之后再配置规则。也可以理解为,只要有了资源,我们就可以在任何时候灵活地定义各种流量控制规则。在编码的时候,只需要考虑这个代码是否需要保护,如果需要保护,就将之定义为一个资源。

二. sentinel控制台

2.1 下载启动控制台

  1. 获取 Sentinel 控制台

您可以从官方网站中下载最新版本的控制台 jar 包,此篇用的版本为1.6.3。点击下载 sentinel-dashboard-1.6.3.jar

  1. 启动

使用如下命令启动控制台:

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

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.6.3.jar

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

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

  1. 访问
  • 访问 http://localhost:8080/

在这里插入图片描述

  • 输入用户密码,默认用户名和密码都是 sentinel。

在这里插入图片描述

2.3 客户端接入控制台

  1. 引入依赖

需要注意SpringCloud-Alibaba与SpringCloud的版本关系

Spring Cloud VersioSpring Cloud Alibaba VersionSpring Boot Version
Spring Cloud Greenwich2.1.0.RELEASE2.1.XRELEASE
Spring Cloud Finchley2.0.0.RELEASE2.0.XRELEASE
Spring Cloud Edgware1.5.0.RELEASE1.5.XRELEASE

此篇 SpringBoot-parent 版本为 2.3.9.RELEASE ,SpringCloud 版本为 Hoxton.SR10 ,Spring Cloud Alibaba 版本为 2.2.5.RELEASE。

父工程引入依赖


 	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.9.RELEASE</version>
        <relativePath/>
    </parent>
    
	<properties>
        <spring-cloud.version>Hoxton.SR10</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>

    </properties>
    
	  <dependencies>
	   <!-- springCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            
		<!-- alibaba实现的SpringCloud-->
 			<dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
	</dependencies>            

子工程中引入sentinel

<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
  1. 配置文件
spring:
 cloud:
  sentinel:
   transport:
    dashboard: localhost:8080
  1. 访问

在这里插入图片描述

sentinel默认采用懒加载的方式,需要再次访问被监测的微服务才会有显示。

在这里插入图片描述

2.4 Rest整合Sentinel

  1. 配置降级方法
 /*  sentinel
      定义降级逻辑
      hystrix和sentinel的区别:
         sentinel 可以指定 熔断执行的降级方法
               也可以指定 抛出异常执行的降级方法
               返回值和参数和被保护方法一致
    */
    //熔断执行的降级方法
    public String sentinelRestBack(int n) {
        log.info("------User sentinel  服务降级 ------");


        return "------User sentinel  服务降级 ------";
    }
    
	//抛出异常执行的降级方法
    public String sentinelRestBackEX(int n) {
        log.info("------User sentinel  服务降级 抛出异常 ------");
        return "------User sentinel  服务降级 抛出异常 ------";
    }
  1. 被保护的方法加注解 @SentinelResource
/**     @SentinelResource
     *      blockHandler  : 声明熔断时调用的降级方法
     *      fallback    : 抛出异常时调用的降级方法
     *      value   : 自定义资源名称,不设置的话就是当前全类名.方法名
     * */
    @SentinelResource(blockHandler = "sentinelRestBack",fallback ="sentinelRestBackEX" )
    @GetMapping("/orderTest/{n}")
    public String testHystrix(@PathVariable("n") int n) {
        log.info("OrderController into ");
        String url = "http://userservice/user/userTest/" + n;
        String result = restTemplate.getForObject(url, String.class);

        return result;
    }
  1. 配置降级规则
    在这里插入图片描述

选择要降级的资源,配置降级,根据业务需求配置降级规则。

在这里插入图片描述
这里配置个 异常数,异常数1发生异常的数量为1,时间窗口10发生降级的时间是10S。
在这里插入图片描述

  1. 测试
    在这里插入图片描述

2.5 Feign 整合Sentinel

Feign 整合Sentinel 与 Feign整合Hystrix 的配置降级方式一致

Sentinel 适配了 Feign 组件。如果想使用,除了引入 sentinel-starter 的依赖外还需要 3 个步骤:

  • 配置文件打开 sentinel 对 feign 的支持: feign.sentinel.enabled=true
  • 加入 openfeign starter 依赖使 sentinel starter 中的自动化配置类生效
  • 编辑降级方法
  1. 引入依赖
		<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
         <!--feign客户端依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
  1. 配置文件-开启Sentinel的支持
feign:
  sentinel:
    enabled: true     #开启 sentinel 的支持
  1. 配置Feign客户端
@FeignClient(name="userservice",fallback = UserClientBack.class)
public interface UserClient {

    @GetMapping("/user/userTest/{n}")
    String userTest(@PathVariable("n") int n);

}

  1. 配置降级方法
@Slf4j
@Component
public class UserClientBack implements UserClient {

    @Override
    public String userTest(int n) {
        log.info(" feign userTest Sentinel 降级了");
        return " feign userTest Sentinel 降级了";
    }
}

想了解Sentinel具体的使用规则就点这里呀!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/518277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FISCO BCOS v3.3.0发布,新增块内分片技术,单链性能突破10万TPS

FISCO BCOS开源社区一贯秉承开源、开放、联合共建的原则&#xff0c;致力于链接社区力量将FISCO BCOS打造成更加完美的区块链底层平台。 作为FISCO BCOS开源社区重要的发起者和推动者&#xff0c;微众区块链持续参与开源生态共建。在社区通力协作下&#xff0c;FISCO BCOS v3.…

【Linux】RK3399平台开发系列——设备树的学习笔记

学习内容 RK3399平台开发系列讲解&#xff08;设备树篇&#xff09;设备树的详解 - 视频介绍 简介 设备树&#xff08;Device Tree&#xff09;是用于描述硬件设备和系统关系的树形数据结构&#xff0c;主要用于 Linux 操作系统中的设备驱动程序。在嵌入式系统中&#xff0c…

ARM和X86、X86和X64、Intel和AMD、CPU和GPU介绍

一、ARM和X86 X86 和 ARM 都是CPU设计的一个架构。X86 用的是复杂指令集。ARM用的是精简指令集。 指令集其实就是机器码&#xff0c;机器码上是汇编&#xff0c;汇编之上是程序语言例如java、c、c#。 复杂指令集是在硬件层面上设计了很多指令&#xff0c;所以编程会简单些。 精…

ChatGLM是什么?ChatGLM和ChatGPT有什么区别?

ChatGLM是什么&#xff1f; ChatGLM是清华技术成果转化的公司智谱AI研发的支持中英双语的对话机器人。ChatGLM基于GLM130B千亿基础模型训练&#xff0c;它具备多领域知识、代码能力、常识推理及运用能力&#xff1b;支持与用户通过自然语言对话进行交互&#xff0c;处理多种自…

IS210WSVOH1AE直流发电机的种类 ? 直流发电机中换向器的用途

​ IS210WSVOH1AE直流发电机的种类 ? 直流发电机中换向器的用途 什么是直流发电机 通过使用直流发电机&#xff0c;我们可以发电&#xff0c;发电机 4个作用是将机械能转化为电能。直流发电机主要用于特殊应用或本地发电&#xff0c;直流发电机的运行特性非常重要&#xff0c;…

企业快递管理软件使用教程

想要分析企业快递管理软件的作用&#xff0c;首先要明白&#xff0c;企业快递管理的大致情况&#xff0c;以及面临的难题是什么&#xff1f; 随着经济的发展&#xff0c;以及快递行业的不断前行。因公寄件早已成了企业运作必不可少的环节之一&#xff0c;试问哪家企业没有寄递…

vue项目中echarts自适应问题高级解决方案

一、问题描述 1.1 页面布局 项目首页中有多个echarts图表&#xff0c;如下图所示&#xff1a; 页面布局如下&#xff1a; index页面&#xff08;绿框&#xff09;是父页面&#xff0c;父页面中包含A页面&#xff08;红框&#xff09;和B页面&#xff08;橙框&#xff09;&…

黑客是怎么练成的(自学黑客四大知识点)

前言 网学黑客技术的人越来越多了&#xff0c;不少人都不知道该怎么学&#xff0c;今天就来详细的说一说黑客是如何炼成的。 首先&#xff0c;什么是黑客&#xff1f; 黑客 &#xff1a;泛指擅长IT技术的电脑高手 黑客一词&#xff0c;源自英文Hacker&#xff0c;早期其实就…

选择排序详解(Selection sort)

本文已收录于专栏 《算法合集》 目录 一、简单释义1、算法概念2、算法目的3、算法思想 二、核心思想三、图形展示四、代码实现1、优化之前2、优化之后 五、算法描述1、问题描述2、算法过程 六、算法分析1、时间复杂度2、空间复杂度3、算法稳定性 一、简单释义 1、算法概念 选择…

Web3中文|生成式 AI 参与的未来,行业该做好哪些准备?

依照 AI 技术目前的发展态势&#xff0c; AI 可能会颠覆诸多行业的未来。 当前 AI 技术的突破让大众关注到了特定类型的 AI ——生成式 AI。生成式 AI 围绕分析、自动化和内容生成展开&#xff0c;生成内容兼具质和量。 了解生成式 AI 如何融入实用应用程序的是非常有必要的。根…

并查集算法

文章目录 1. 原理介绍2. 并查集的应用3. find()函数的定义与实现4. 并查集的join函数5. 路径压缩优化算法-优化find6. 路径压缩优化算法按秩合并算法 1. 原理介绍 并查集是一种用于维护集合关系的数据结构&#xff0c;它支持合并集合和查询元素所在的集合。它的基本思想是将元…

【人力资源管理】第1集 免费开源ERP: Odoo 16 Employees员工管理 构建一体化企业人力资源管理

文章目录 前言一、概览二、主要功能1.成功管理您的员工 集中您的所有 HR 信息2.跟踪时间&#xff0c;考勤3.休假管理4.经简化的费用管理5.轻松完成员工评估全面评估6.简化招聘流程7.简化招聘流程 总结 前言 人力资源 适用于当代企业 一体化&#xff1a;招聘、考评、报销、 休假…

android room数据库简单使用

Room来源 Android采用Sqlite作为数据库存储。由于Sqlite代码写起来繁琐且容易出错&#xff0c;因此&#xff0c;开源社区逐渐出现了各种ORM&#xff08;Object Relational Mapping&#xff09;库。常见的有ORMLite, GreenDAO等。Google也意识到推出自家ORM库的必要性&#xff0…

FE_Vue学习笔记 - 计算属性 监视属性

1 计算属性 1.1 计算属性的引入 组件模板应该只包含简单的表达式&#xff0c;复杂的表达式则应该重构为计算属性或方法。复杂表达式会让你的模板变得不那么声明式。我们应该尽量描述应该出现的是什么&#xff0c;而非如何计算那个值。而且计算属性和方法使得代码可以重用。 …

论文解读|MetaAI图像分割基础模型SAM——解锁数字大脑“视觉区”

原创 | 文 BFT机器人 内容提要 事件背景: 2023年4月5日&#xff0c;MetaAI研究团队发布论文“分割一切”一《Segment Anything》并在官网发布了图像分割基础模型一Segment Anything Model(SAM)以及图像注释数据集Segment-Anything 1-Billion(SA-1B)。 论文核心观点 : 目…

数据库安全+触发器与存储过程

数据库安全触发器与存储过程 目录 数据库安全触发器与存储过程选择题填空题简答题1、建立city值为上海、北京的顾客视图题目代码题解 2、建立城市为上海的客户2016年的订单信息视图题目代码题解 3、创建触发器&#xff0c;当更改商品价格(price列)时&#xff0c;记录价格题目代…

【网络安全】——区块链安全和共识机制

区块链安全和共识机制 摘要&#xff1a;区块链技术作为一种分布式去中心化的技术&#xff0c;在无需第三方的情况下&#xff0c;使得未建立信任的交易双方可以达成交易。因此&#xff0c;区块链技术近年来也在金融&#xff0c;医疗&#xff0c;能源等多个行业得到了快速发展。然…

Medical Image Analyse

NC2022: Federated learning enables big data for rare cancer boundary detection 尽管机器学习&#xff08;ML&#xff09;在各个学科领域都显示出了潜力&#xff0c;但样本外泛化仍然令人担忧。目前通过共享多个站点的数据来解决这个问题&#xff0c;但由于各种限制&#…

内网渗透之linuxwindows密码读取haschcat破解sshrdp

0x00 说明 微软为了防止明文密码泄露发布了补丁KB2871997&#xff0c;关闭了Wdigest功能。 当系统为win10或2012R2以上时&#xff0c;默认在内存缓存中禁止保存明文密码&#xff0c;此时可以通过修改注册表的方式抓取明文&#xff0c;但需要用户重新登录后才能成功抓取。 wind…

知识变现海哥:知识变现的本质就是卖

知识变现的本质就是卖&#xff0c;而有人买的本质&#xff0c;就是你解决了某方面的需求。 好的成交&#xff0c;从来都是相互的&#xff0c; 只靠一边主动推销来维系是远远不够的。 绝对不是靠忽悠&#xff0c;而是靠实力。 先讲一个故事。 19世纪时&#xff0c;一个年轻的…