0


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

在这里插入图片描述

2、Sentinel 具体参数

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

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

在这个案例中,我们设置了默认的流量控制策略为

flow

,最大流量为 1000,突发容量为 500。
2. 降级策略
Sentinel 支持基于 HTTP 状态码、异常类型和自定义规则的降级策略。在

application.yml

配置文件中可以设置降级策略以及具体参数。
案例:

sentinel:degrade:enabled:trueselectors: default
    rules:-type: http-status
        status:500-type: exception
        exception: 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: standalone
  log:level: debug

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

application.yml

配置文件中可以设置应用参数。
案例:

application:name: my-application
  sentinel:flow:control:default:limitType: flow
          flowConfig:maxFlow:1000burstCapacity:500degrade: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@EnableSentinelpublicclassApplication{publicstaticvoidmain(String[] args){SpringApplication.run(Application.class, args);}}
  1. 配置 Sentinel 在 application.propertiesapplication.yml 文件中配置 Sentinel:
sentinel:degrade:enabled:trueselectors: default
  flow:defaultFlowId:1control:default:limitType: flow
        flowConfig:maxFlow:1000burstCapacity:500

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

@Block

注解:
案例:

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

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


本文转载自: https://blog.csdn.net/superdangbo/article/details/134543637
版权归原作者 Web3&Basketball 所有, 如有侵权,请联系我们删除。

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

还没有评论