Spring Cloud实战 |分布式系统的流量控制、熔断降级组件Sentinel如何使用

专栏集锦,大佬们可以收藏以备不时之需

Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html

Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html

Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271502.html

tensorflow专栏:https://blog.csdn.net/superdangbo/category_8691332.html

Redis专栏:https://blog.csdn.net/superdangbo/category_9950790.html

AI机器学习实战:

AI机器学习实战 | 使用 Python 和 scikit-learn 库进行情感分析

AI机器学习 | 基于librosa库和使用scikit-learn库中的分类器进行语音识别

Python实战:

Python实战 | 使用 Python 和 TensorFlow 构建卷积神经网络(CNN)进行人脸识别

Spring Cloud实战:

Spring Cloud 实战 | 解密Feign底层原理,包含实战源码

Spring Cloud 实战 | 解密负载均衡Ribbon底层原理,包含实战源码

1024程序员节特辑文章:

1024程序员狂欢节特辑 | ELK+ 协同过滤算法构建个性化推荐引擎,智能实现“千人千面”

1024程序员节特辑 | 解密Spring Cloud Hystrix熔断提高系统的可用性和容错能力

1024程序员节特辑 | ELK+ 用户画像构建个性化推荐引擎,智能实现“千人千面”

1024程序员节特辑 | OKR VS KPI谁更合适?

1024程序员节特辑 | Spring Boot实战 之 MongoDB分片或复制集操作

Spring实战系列文章:

Spring实战 | Spring AOP核心秘笈之葵花宝典

Spring实战 | Spring IOC不能说的秘密?

国庆中秋特辑系列文章:

国庆中秋特辑(八)Spring Boot项目如何使用JPA

国庆中秋特辑(七)Java软件工程师常见20道编程面试题

国庆中秋特辑(六)大学生常见30道宝藏编程面试题

国庆中秋特辑(五)MySQL如何性能调优?下篇

国庆中秋特辑(四)MySQL如何性能调优?上篇

国庆中秋特辑(三)使用生成对抗网络(GAN)生成具有节日氛围的画作,深度学习框架 TensorFlow 和 Keras 来实现

国庆中秋特辑(二)浪漫祝福方式 使用生成对抗网络(GAN)生成具有节日氛围的画作

国庆中秋特辑(一)浪漫祝福方式 用循环神经网络(RNN)或长短时记忆网络(LSTM)生成祝福诗词

目录

  • 1、Sentinel 发展历史
  • 2、Sentinel 具体参数
  • 3、实战Spring Cloud 项目中使用 Sentinel

1、Sentinel 发展历史

Sentinel 是一款面向分布式系统的流量控制、熔断降级组件,由阿里巴巴集团研发。其发展历史可以追溯到 2012 年,起初是阿里巴巴内部使用,后来逐渐开源并发展成为一个独立的项目。Sentinel 致力于提供高性能、可扩展、安全的流量控制解决方案,以满足现代分布式系统的需求。
2012 年,Sentinel 诞生,主要功能为入口流量控制。
2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量归整场景以及生产实践。
2018 年,Sentinel 开源,并持续演进。
2019 年,Sentinel 朝着多语言扩展的方向不断探索,推出 C++ 原生版本,同时针对 Service Mesh 场景也推出了 Envoy 集群流量控制支持,以解决 Service Mesh 架构下多语言限流的问题。
2020 年,推出 Sentinel Go 版本,继续朝着云原生方向演进。
2021 年,Sentinel 正在朝着 2.0 云原生高可用决策中心组件进行演进;同时推出了 Sentinel Rust 原生版本。同时我们也在 Rust 社区进行了 Envoy WASM extension 及 eBPF extension 等场景探索。
2022 年,Sentinel 品牌升级为流量治理,领域涵盖流量路由/调度、流量染色、流控降级、过载保护/实例摘除等;同时社区将流量治理相关标准抽出到 OpenSergo 标准中,Sentinel 作为流量治理标准实现。
Sentinel 的主要应用场景如下:

  1. 流量控制
    在分布式系统中,服务间的调用可能会产生大量的请求,导致系统过载。Sentinel 可以通过设置流量控制策略,对请求进行限制,确保系统能够在高并发场景下稳定运行。
  2. 熔断降级
    在分布式系统中,服务之间的依赖关系可能导致某一个服务的故障影响到整个系统。Sentinel 支持熔断机制,当某个服务出现故障时,可以自动切断请求,避免故障扩散。同时,Sentinel 还支持降级策略,对故障服务提供降级处理,如返回默认值、日志记录等。
  3. 资源隔离
    Sentinel 可以将不同资源的访问进行隔离,例如 HTTP 请求、数据库连接等。这样,当某个资源出现问题时,可以限制其对其他资源的影响,提高系统的稳定性。
  4. 系统监控
    Sentinel 提供了实时的监控界面,可以查看系统的流量、熔断、降级等状态。这有助于开发人员及时发现系统问题,并进行相应的优化。
  5. 应用扩展
    Sentinel 提供了丰富的扩展点,如自定义流量控制策略、降级策略等。这使得开发者可以根据业务需求,灵活地定制和扩展 Sentinel 的功能。
    在 Spring Cloud 项目中,Sentinel 可以与 Spring Cloud 组件无缝集成,如 Spring Cloud Gateway、Spring Cloud Alibaba Nacos Discovery、Spring Cloud Alibaba Sentinel等。这使得开发人员可以更方便地在 Spring Cloud 项目中使用 Sentinel,提升系统的稳定性、可靠性和可扩展性。
    总之,Sentinel 作为一款发展历史悠久的分布式系统组件,其丰富的功能和强大的性能得到了业界的认可。在 Spring Cloud 项目中使用 Sentinel,可以有效解决分布式系统面临的高并发、故障扩散等问题,提高系统的稳定性、可靠性和可扩展性。

https://sentinelguard.io/zh-cn/docs/introduction.html

在这里插入图片描述

2、Sentinel 具体参数

在 Spring Cloud 项目中使用 Sentinel,主要需要配置以下几个参数:

  1. 流量控制策略
    Sentinel 提供了多种流量控制策略,如流量限制、突发流量限制、请求会话数限制等。在 application.yml 配置文件中可以设置默认的流量控制策略以及具体参数。
    案例:
sentinel:flow:defaultFlowId: 1control:default:limitType: flowflowConfig:maxFlow: 1000burstCapacity: 500

在这个案例中,我们设置了默认的流量控制策略为 flow,最大流量为 1000,突发容量为 500。
2. 降级策略
Sentinel 支持基于 HTTP 状态码、异常类型和自定义规则的降级策略。在 application.yml 配置文件中可以设置降级策略以及具体参数。
案例:

sentinel:degrade:enabled: trueselectors: defaultrules:- type: http-statusstatus: 500- type: exceptionexception: java.lang.ArithmeticException

在这个案例中,我们设置了当 HTTP 状态码为 500 时进行降级,以及当发生 ArithmeticException 异常时进行降级。
在这里插入图片描述

  1. 资源包装
    Sentinel 提供了资源包装器,可以拦截请求并测量资源使用情况。在 application.yml 配置文件中可以设置资源包装器的参数。
    案例:
sentinel:resource:watermark:enabled: trueinterval: 60000statInterval: 1000

在这个案例中,我们设置了水位标记的开启状态,以及统计间隔为 10 秒,水位标记间隔为 60 秒。
4. 系统参数
Sentinel 提供了许多系统参数,如守护进程模式、日志级别等。在 application.yml 配置文件中可以设置这些系统参数。
案例:

sentinel:defender:mode: standalonelog:level: debug

在这个案例中,我们设置了守护进程模式为独立模式,以及日志级别为 debug。
5. 应用参数
Sentinel 支持为每个应用设置独立的参数,如流量控制策略、降级策略等。在 application.yml 配置文件中可以设置应用参数。
案例:

application:name: my-applicationsentinel:flow:control:default:limitType: flowflowConfig:maxFlow: 1000burstCapacity: 500degrade:rules:- type: exceptionexception: java.lang.ArithmeticException

在这个案例中,我们为名为 my-application 的应用设置了独立的流量控制策略和降级规则。
以上就是 Spring Cloud 项目中如何使用 Sentinel 并进行配置的详细介绍。实际应用中,您可以根据需求进行更详细的配置,以满足不同的流量控制、降级和监控需求。

3、实战Spring Cloud 项目中使用 Sentinel

在 Spring Cloud 项目中使用 Sentinel,主要是通过以下几个步骤来完成:引入依赖、初始化 Sentinel、配置 Sentinel、使用 Sentinel 进行流量控制、熔断和降级、监控 Sentinel。下面将详细介绍并在每个步骤给出具体案例。

  1. 引入依赖
    在项目的 pom.xml 文件中添加 Sentinel 的依赖:
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-core</artifactId><version>1.8.2</version>
</dependency>
  1. 初始化 Sentinel
    在项目的主类上添加 @EnableSentinel 注解,以启动 Sentinel 守护进程:
@SpringBootApplication
@EnableSentinel
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
  1. 配置 Sentinel
    application.propertiesapplication.yml 文件中配置 Sentinel:
sentinel:degrade:enabled: trueselectors: defaultflow:defaultFlowId: 1control:default:limitType: flowflowConfig:maxFlow: 1000burstCapacity: 500

这里配置了降级功能,并设置了默认的流量控制策略。
4. 使用 Sentinel 进行流量控制
在需要控制流量的方法上添加 @Block 注解:
案例:

@RestController
public class MyController {@GetMapping("/controlFlow")public String controlFlow() {// 业务逻辑return "Hello, Sentinel!";}
}
  1. 使用 Sentinel 进行熔断
    在需要进行熔断的方法上添加 @Breakpoint 注解:
    案例:
@RestController
public class MyController {@GetMapping("/breakpoint")public String breakpoint() {// 业务逻辑return "Hello, Sentinel!";}
}
  1. 使用 Sentinel 进行降级
    在需要进行降级的方法上添加 @Degrade 注解:
    案例:
@RestController
public class MyController {@Degrade@GetMapping("/degrade")public String degrade() {// 业务逻辑return "Hello, Sentinel!";}
}
  1. 监控 Sentinel
    启动 Sentinel 监控页面,查看实时的流量控制、熔断和降级状态:
http://localhost:8080/console

以上就是如何在 Spring Cloud 项目中使用 Sentinel 的详细介绍。通过使用 Sentinel,我们可以更好地管理服务流量,保障系统的稳定性和可靠性。在实际项目中,还可以根据需求进行更复杂的配置,以满足不同的流量控制需求。

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

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

相关文章

数据的4个等级

除了可以将数据分为定量和定性的&#xff0c;数据还可以分为以下4个等级&#xff0c;每个等级都有不同的控制和数学操作等级&#xff1b; 定类等级&#xff08;nominal level&#xff09; 定序等级&#xff08;ordinal level&#xff09; 定距等级&#xff08;interval level&a…

【CVPR 2023】解读VideoFusion:基于噪声共享机制的视频生成

Diffusion Models视频生成-博客汇总 前言:达摩院开源的VideoFusion是为数不多同时开源模型和推理代码的视频生成工作,通过设计噪声分解机制有效提高视频的时空连贯性,在一些关键指标上远超GAN-based方法和2022年谷歌的VDM。更重要的是,Diffusers库以此为基础,写了关键的两…

同时创建多个websoket(初始化多个连接、断开的重连、每个连接定时发消息、每个连接存储接收的数据(vuex或者pinia))

可复制现成代码直接使用&#xff01;&#xff01; 1.下边的例子演示了创建10个WebSocket 实例&#xff0c;当其中某一个连接失败时&#xff0c;会自动进行重连 <template><div></div> </template><script setup> import { ref, reactive, onMo…

ssh和scp的基本使用

ssh和scp的基本使用 1&#xff0c;ssh 本地连接远程服务器 ssh userhostname第一次连接时输入密码会生成密钥&#xff0c;后续就可以直接连接了 ssh配置文件&#xff1a;/etc/ssh/sshd_config 2&#xff0c;scp 传输本地文件至远程服务器 命令格式 scp [参数] [原路径] […

求二叉树的最大密度(可运行)

最大密度&#xff1a;二叉树节点数值的最大值 如果没有输出结果&#xff0c;一定是建树错误&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 我设置输入的是字符型数据&#xff0c;比较的ASCII值。 输入&#xff1a;FBE###CE### 输…

基于单片机设计的气压与海拔高度检测计(采用MPL3115A2芯片实现)

一、前言 随着科技的不断发展&#xff0c;在许多领域中&#xff0c;对气压与海拔高度的测量变得越来越重要。例如&#xff0c;对于航空和航天工业、气象预报、气候研究等领域&#xff0c;都需要高精度、可靠的气压与海拔高度检测装置。针对这一需求&#xff0c;基于单片机设计…

19.删除链表的倒数第 N 个节点

​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;19. 删除链表的倒数第 N 个结点 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 使用双指针找到倒数第 N1 个节点后删除链表的第 N 个节点即可。注意当 N 为链表长度时&#xff0c;倒数第 N1 …

Google Play 搜索不到应用

Google Play搜索不到已上架应用 这可能是由于多种原因造成的。首先&#xff0c;请确保你的应用在 Google Play 商店上已经成功上架&#xff0c;并且通过了审核。 如果你的应用已经上架&#xff0c;但在搜索时无法找到&#xff0c;可能有以下一些原因&#xff1a; 「1.索引延迟…

wpf devexpress实现输入验证使用验证规则

打开此项目 目标是一个registration form行为像google registration form。打开Google registration form 研究它的行为。当form是第一次显示&#xff0c;它的“Register”按钮应该启动&#xff1b;编辑器没有提示任何输入错误。输入First Name编辑器字段&#xff0c;清理输入…

端到端数据保护浅析

作为最重要的数据保护方式之一&#xff0c;NVMe端到端数据保护被众多企业用户所看重&#xff0c;它可以有效降低静默错误的发生&#xff0c;保护范围涵盖数据自Host端生成直至写入SSD NAND当中&#xff0c;以及从SSD NAND读取直至返回Host的全部流程。它使得数据不论是在SSD内部…

服务器安全怎么保障,主机安全软件提供一站式保护

服务器主机安全是指保护服务器主机免受未经授权的访问、破坏、窃取或滥用。 现在如今大部分公司、单位的相关数据都是存储在云端服务器上&#xff0c;这样即方便查询也方便保存。 可是一旦服务器主机受到威胁&#xff0c;损失将会不可估计。 以下是一些服务器主机安全的建议…

支付宝生僻字选择器

本文的数据来源于支付宝网页版本生僻字选择器。 let rareWords[{spell: "a",words: ["奡", "靉", "叆"]}, {spell: "b",words: ["仌", "昺", "竝", "霦", "犇", "愊…

粒子系统three.js

Three.js是一个非常流行的JavaScript 3D库&#xff0c;它提供了许多强大的功能来创建各种3D场景和动画效果。其中粒子系统是Three.js中非常重要的一部分&#xff0c;它可以用于创建各种特效&#xff0c;如火焰、烟雾、雨雪等等。本文将详细讲解Three.js中粒子系统的使用。 1. …

MySQL数据库——存储过程-条件处理程序(通过SQLSTATE指定具体的状态码,通过SQLSTATE的代码简写方式 NOT FOUND)

目录 介绍 案例 通过SQLSTATE指定具体的状态码 通过SQLSTATE的代码简写方式 NOT FOUND 介绍 条件处理程序&#xff08;Handler&#xff09;可以用来定义在流程控制结构执行过程中遇到问题时相应的处理步骤。具体语法为&#xff1a; DECLARE handler_action HANDLER FOR c…

Linux调度域与调度组

引入调度域的讨论可以参考这篇文章。这篇笔记重点分析了内核调度域相关的数据结构以及内核用于构建调度域的代码实现&#xff0c;以此来加深对调度域的理解。调度域是调度器进行负载均衡的基础。 调度域拓扑层级 整个系统的调度域组成一个层级结构&#xff0c;内核设计了stru…

上海亚商投顾:沪指冲高回落 短剧、地产股集体走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数早盘冲高&#xff0c;创业板指盘初涨超1%&#xff0c;午后则集体下行翻绿&#xff0c;北证50一度大涨…

MyBatis:关联查询

MyBatis 前言关联查询附懒加载对象为集合时的关联查询 前言 在 MyBatis&#xff1a;配置文件 文章中&#xff0c;最后介绍了可以使用 select 标签的 resultMap 属性实现关联查询&#xff0c;下面简单示例 关联查询 首先&#xff0c;先创建 association_role 和 association_…

【nacos】Java调用nacos SDK获取配置信息为null

通过 Nacos 提供的 Java 客户端 SDK 来获取配置信息&#xff0c;但是结果是null <!--添加maven依赖 --> <dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.1.2</version> …

【华为OD机试python】告警抑制【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 告警抑制,是指高优先级告警抑制低优先级告警的规则。高优先级告警产生后, 低优先级告警不再产生。请根据原始告警列表和告警抑制关系,给出实际产生的告警列表。 不会出现循环抑制的情况…

Postgresql常用命令函数

1、string_agg()函数 1.1用法: string_agg(expression, delimiter)&#xff0c;参数类型(text, text) or (bytea, bytea)&#xff0c;返回类型和参数类型一致,第一个参数是字段名&#xff0c;第二个参数是样式&#xff0c;比如&#xff0c;或者#分隔。 1.2实战: SELECT * FR…