SpringCloud学习笔记 - 服务熔断降级 - Sentinel

news2024/11/20 13:34:48

1. sentinel简介

sentinel官方文档:https://sentinelguard.io/zh-cn/docs/introduction.html

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
简而言之,sentinel就是为了做微服务的服务熔断、服务降级、服务限流、服务调用雪崩的,和Hystrix具有异曲同工之妙

sentinel具有以下特性:

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

在这里插入图片描述

2. sentinel下载和安装

Sentinel 的使用可以分为两个部分:

  • 核心库(Java 客户端):
    核心库是以jar包的形式运行,不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持(见 主流框架适配)。
  • 控制台(Dashboard):
    Dashboard 主要负责管理推送规则、监控、管理机器信息等。

sentinel 安装步骤:

  1. 下载核心jar包
    git下载地址:https://github.com/alibaba/Sentinel/releases
    在这里插入图片描述

  2. 运行jar包
    java -jar sentinel-dashboard-1.7.0.jar

sentinel的默认端口是8080,所以我们需要保证8080端口没有被占用

  1. 访问dashboard控制台
    访问localhost:8080,账号密码默认均为:sentinel,可以成功访问就表示安装完成。
    在这里插入图片描述

3. 创建测试module,测试服务监控效果

  1. 创建module:cloudalibaba-sentinel-service8401
    需要将该微服务注册到服务注册中心,所以需要同步启动Nacos

  2. 引入pom依赖:主要依赖项 spring-cloud-starter-alibaba-sentinel

<dependencies>
        <!-- sentinel核心依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            <version>0.2.2.RELEASE</version>
        </dependency>
        <!-- 服务调用 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- SpringBoot整合Web组件+actuator -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--日常通用jar包配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.6.3</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
  1. 修改yaml配置文件,添加sentinel的配置信息
server:
  port: 8401

spring:
  application:
    name: cloudalibaba-sentinel-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
    sentinel:
      transport:
        dashboard: localhost:8080 #配置Sentinel dashboard地址
        port: 8791 #默认端口

management:
  endpoints:
    web:
      exposure:
        include: "*" #暴露服务监控端点
  1. 创建主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class MainApp8401 {
    public static void main(String[] args) {
        SpringApplication.run(MainApp8401.class,args);
    }
}
  1. 创建测试业务代码
@RestController
@Slf4j
public class FlowLimitController {
    @GetMapping("/testA")
    public String testA()
    {
        return "------testA";
    }

    @GetMapping("/testB")
    public String testB()
    {
        log.info(Thread.currentThread().getName()+"\t"+"...testB");
        return "------testB";
    }
}
  1. 测试服务监控
  • 启动Nacos服务注册中心
  • 启动Sentinel8080:java -jar sentinel-dashboard-1.8.5.jar
  • 启动微服务8401
    注意:初始启动sentinel控制台中是什么都没有的,因为Sentinel采用的懒加载模式,需要被监控的服务执行一次访问即可被监控。
    http://localhost:8401/testA
    http://localhost:8401/testB
  • 监控面板:
    在这里插入图片描述

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

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

相关文章

【Redis】缓存击穿问题及其解决方案

【Redis】缓存击穿问题及其解决方案 文章目录【Redis】缓存击穿问题及其解决方案1. 缓存击穿概念2. 解决方案2.1 互斥锁2.1.1 互斥锁的优缺点2.1.2 互斥锁的代码实现2.2 逻辑过期2.2.1 逻辑过期的优缺点2.2.2 逻辑过期的代码实现1. 缓存击穿概念 缓存击穿&#xff1a;缓存击穿…

13个有趣的Python高级脚本,建议收藏

上一篇文章&#xff1a;整理了上千个 Python 工具库&#xff0c;涵盖24个大方向 没想到火了&#xff0c;喜欢除了收藏外&#xff0c;记得点赞。 每天我们都会面临许多需要高级编码的编程挑战。你不能用简单的 Python 基本语法来解决这些问题。 在本文中&#xff0c;我将分享…

Python针对列表进行去重、排序、大小写转换

首先我们要进行的就是列表去重 Python针对列表进行去重、排序、大小写转换1. 针对列表进行去重第一种方法是用for循环第二种方法就是列式推导法第三种方法就是set第四种方法就是用字典去重2.进行大小写转换大写转小写使用lower进行小写转换列式推导法swapcase()将字符串内的大写…

【windows环境使用gcc完美编译C/C++】

windows环境使用gcc完美编译C/C前言安装最新版的msys2安装mingw版的gcc前言 在windows使用gcc编译c&#xff0c;很多文章会使用Cygwin或者msys来安装gcc&#xff0c;并编译本地c&#xff0c;但编译好的.exe执行文件在其他电脑上会报找不到cygwin1.dll或找不到msys-2.0.dll的错误…

基于JavaSpringboot+vue国风汉服文化交流宣传系统

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末底部获取联系&#x1f345; 精彩专栏推荐订阅收藏&#x1f447;…

ArcgisPro3.0及3.0.1及3.0.2安装教程

一、获取&#xff1a; https://www.xsoftnet.com/share/a0XohtwU8Zz.html二、产品介绍&#xff1a;ArcgisPro3.0-3.0.1中文安装包下载及安装教程 ArcGisPro3.x安装教程 一、安装包结构介绍&#xff1a;可能你下载的安装包目录结构有所不同但是核心文件是一样的。 安装顺序&…

【SpringCloud07】SpringCloud 整合Zookeeper注册中心

1.Zookeeper注册中心 zookeeper是一个分布式协调工具&#xff0c;可以实现注册中心功能关闭Linux服务器防火墙启动zookeeper服务器zookeeper服务器取代Eureka服务器&#xff0c;zookeeper作为服务注册中心 2.服务提供者 1.新建cloud-provider-payment8004 2.POM <?xm…

(小甲鱼python)函数笔记合集二 函数(II)总结 函数的几种参数 位置参数、关键字参数、默认参数 .join()函数的用法等

一、基础复习 函数的基本用法 创建和调用函数 函数的形参与实参等等 二、函数的几种参数 1.位置参数 一般情况下实参是按照形参定义的顺序进行传递的&#xff0c;而Python中位置固定的参数我们称为位置参数。 >>> def myfunc(s,vt,o):return "".join((o…

低成本MEMS INS系统 + GNSS组合导航MATLAB仿真

感谢西工大严老师的无私奉献&#xff01;&#xff01; 低成本MEMS INS系统 GNSS组合导航MATLAB仿真感谢西工大严老师的无私奉献&#xff01;&#xff01;一、kalman参数初始化——kfinit()二、imu添加误差——imusdderr()三、imu位姿更新——insupdate()四、kalman误差方程——…

【1】K8s的组件及概念

目录 1、K8s的组件 2、组件概念 1、K8s的组件 一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成&#xff0c;每个节点上都会安装不同的组件。 master: 集群的控制平面&#xff0c;负责集群的决策 ApiServer:资源操作的唯一入口&#xff0c;接收用户输入的命令…

ArcGIS基础实验操作100例--实验92以图形与表格构建趋势面

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 空间分析篇--实验92 以图形与表格构建趋势面 目录 一、实验背景 二、实验数据 三、实验步骤 &#xf…

ts实现简易观察者模式

什么是观察者模式 观察者模式能让你时刻知悉对象状态的变化的一种设计模式,是一种一对多依赖的关系,比如报纸的订阅 生活中随处可见的观察者模式(猎头与求职者): headfirst设计模式气象站案例 通知更新的方式有两种: 主题推给观察者和观察者自己去主题拉取两种方式,大部分实现…

年中盘点 | 2022年,PaaS 再升级

过去十五年&#xff0c;是云计算从无到有突飞猛进的十五年。PaaS 作为云计算的重要组成部分&#xff0c;在伴随着云计算高速发展的同时&#xff0c;在云计算产业链中的关键性作用日渐凸显。关于 PaaS&#xff0c;很多人都认同一个观点&#xff0c;在公有云上&#xff0c;除了 I…

【寒假每日一题】AcWing 4699. 如此编码

目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 一、题目 1、原题链接 4699. 如此编码 - AcWing题库 2、题目描述 某次测验后&#xff0c;顿顿老师在黑板上留下了一串数字 23333便飘然而去。 凝望着这个神秘数字&#xff…

雄关漫道真如铁,而今迈步从头越 | 挥别2022,再战2023!

挥别2022年 这一年&#xff0c;虽面临诸多挑战&#xff0c;但我们充满干劲儿 向下扎根&#xff0c;向上生长 这一年&#xff0c;我们风云十载&#xff0c;厚积薄发 站在2023年的开端 让我们一起回顾博云2022年的这些成绩 No.1 专精特新&#xff0c;示范引领 2022年8月&am…

【鸟哥杂谈】Linux环境搭建Redis

忘记过去&#xff0c;超越自己 ❤️ 博客主页 单片机菜鸟哥&#xff0c;一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-01-12 ❤️❤️ 本篇更新记录 2023-01-12 ❤️&#x1f389; 欢迎关注 &#x1f50e;点赞 &#x1f44d;收藏 ⭐️留言&#x1f4dd;&#x1f64…

指针笔试题详细介绍,让你不再惧怕指针【c语言】

int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1); //&a1的类型是int&#xff08; * &#xff09;[5]printf( "%d,%d", *(a 1), *(ptr - 1));//输出2 5 return 0; }&a&#xff0c; 取出整个数组的地址&#xff0c;放在一个数组指针中…

你拿了多少年终奖?

见字如面&#xff0c;我是军哥&#xff01;前几天我看到一个大 V 调研他的程序员粉丝&#xff0c;都拿了多少年终奖&#xff1f;结果可想而知&#xff0c;2000 多人参与问卷调查&#xff0c;53% 左右的人说今年没有年终奖。另外&#xff0c;我估计大多数人今年的年终奖金额相比…

超能面板PRO搭载北京君正研发的X2000多核异构跨界处理器

每一座建筑&#xff0c;都承载着它独特的生活方式。隐匿在老胡同里的四合院&#xff0c;见证了大院三代同堂的喧闹欢愉&#xff0c;散落在烟雨中的园林小院散发着对诗意生活的淡然向往。在一代又一代的变迁中&#xff0c;逐渐形成了符合居住者气质的生活方式。历史与现代在不断…

等差素数数列

问题描述&#xff1a; 2,3,5,7,11,13,…是素数序列。 类似&#xff1a;7,37,67,97,127,157 这样完全由素数组成的等差数列&#xff0c;叫等差素数数列。 上边的数列公差为30&#xff0c;长度为6。 2004年&#xff0c;格林与华人陶哲轩合作证明了&#xff1a;存在任意长度的素数…