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

这篇具有很好参考价值的文章主要介绍了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 发展历史

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

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

2、Sentinel 具体参数

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

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

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

sentinel:
  degrade:
    enabled: true
    selectors: default
    rules:
      - type: http-status
        status: 500
      - type: exception
        exception: java.lang.ArithmeticException

在这个案例中,我们设置了当 HTTP 状态码为 500 时进行降级,以及当发生 ArithmeticException 异常时进行降级。
Spring Cloud实战 |分布式系统的流量控制、熔断降级组件Sentinel如何使用,spring cloud,sentinel,spring,java

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

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

sentinel:
  defender:
    mode: standalone
  log:
    level: debug

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

application:
  name: my-application
  sentinel:
    flow:
      control:
        default:
          limitType: flow
          flowConfig:
            maxFlow: 1000
            burstCapacity: 500
  degrade:
    rules:
      - type: exception
        exception: 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: true
    selectors: default
  flow:
    defaultFlowId: 1
    control:
      default:
        limitType: flow
        flowConfig:
          maxFlow: 1000
          burstCapacity: 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,我们可以更好地管理服务流量,保障系统的稳定性和可靠性。在实际项目中,还可以根据需求进行更复杂的配置,以满足不同的流量控制需求。文章来源地址https://www.toymoban.com/news/detail-755874.html

到了这里,关于Spring Cloud实战 |分布式系统的流量控制、熔断降级组件Sentinel如何使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Zookeeper 实战 | Zookeeper 和Spring Cloud相结合解决分布式锁、服务注册与发现、配置管理

    专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏: Python 专栏: Redis 专栏: TensorFlow 专栏: Logback 专栏: 量子计算: 量子计算 | 解密著名量子算法Shor算法和Grover算法 AI机器学习实战: AI机器学习实战 | 使用 Python 和 scikit-learn 库进行情感分析 AI机器学习 | 基于lib

    2024年02月05日
    浏览(45)
  • 使用Spring Cloud实现分布式系统的注册中心——nacos详解

    Nacos是一个全新的分布式系统服务框架,它能够提供服务发现、配置管理、动态DNS、流量管理等多种功能。其中最为重要的功能之一就是服务发现,可以使得开发者更加方便地管理和维护分布式系统的各个服务。 在Spring Cloud中,我们可以使用Nacos作为注册中心,实现服务的注

    2024年02月05日
    浏览(31)
  • Sentinel如何实现对分布式系统的高可用性和流量控制?我们通过源码一起学习

    前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将详细介绍Sentinel源码实现对分布式系统高可用性和流量控制,后续文章将详细介绍Sentinel的其他知识。 如果文章有什么需要改进的地方还请大佬不吝赐教 👏👏。 小威在此先感谢各位大佬啦~~🤞🤞

    2024年02月06日
    浏览(30)
  • 【Spring Cloud系列】- 分布式系统中实现幂等性的几种方式

    在开发订单系统时,我们常遇见支付问题,既用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。在以前的单应用系统中,

    2024年02月10日
    浏览(29)
  • 构建高可用、高效、安全和可靠的分布式系统:Spring Cloud为开发人员提供便利

    Spring Cloud是一个基于Spring框架的云应用开发工具箱,可以快速构建分布式应用程序。它为开发人员提供了许多有用的功能,例如服务发现、负载均衡、配置管理和应用监控等,这些功能可以使分布式系统更加稳定和可靠。 如果您还没有了解过Spring Cloud,我强烈建议您观看以下

    2024年02月08日
    浏览(79)
  • 【Spring Cloud】新闻头条微服务项目:分布式文件系统MinIO实现文章页面存取

      个人简介:  📦个人主页:赵四司机 🏆学习方向:JAVA后端开发  📣种一棵树最好的时间是十年前,其次是现在! ⏰往期文章:SpringBoot项目整合微信支付 🧡喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。 前言: 最近在做一个基于SpringCloud+Springboot+Docker的新闻头

    2023年04月08日
    浏览(43)
  • java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统

     鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高

    2024年02月07日
    浏览(33)
  • 削峰填谷与应用间解耦:分布式消息中间件在分布式环境下并发流量控制的应用

    这是《百图解码支付系统设计与实现》专栏系列文章中的第(18)篇,也是流量控制系列的第(4)篇。点击上方关注,深入了解支付系统的方方面面。 本篇重点讲清楚分布式消息中间件的特点,常见消息中间件的简单对比,在支付系统的应用场景,比如削峰填谷,系统应用间

    2024年01月20日
    浏览(54)
  • 【Spring Cloud】Spring Cloud Alibaba-- 分布式事务Seata原理

    Seata 是一款开源的分布式事务解决方案,致力于提供高性能与简单易用的分布式事务服务,为用户提供了 AT、TCC、SAGA 和 XA 几种不同的事务模式: AT模式:无侵入式的分布式事务解决方案,适合不希望对业务进行改造的场景,但由于需要添加全局事务锁,对影响高并发系统的

    2024年02月08日
    浏览(62)
  • 使用Spring Cloud构建分布式应用

    Spring Cloud是一组构建分布式系统的框架,它提供了各种工具和库,帮助开发人员构建高可用、可伸缩、灵活的分布式应用程序。本文将介绍如何使用Spring Cloud构建分布式应用程序。 微服务架构 Spring Cloud是基于微服务架构设计的,该架构将应用程序划分为一组小型、自治的服

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包