专栏集锦,大佬们可以收藏以备不时之需
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 的主要应用场景如下:
- 流量控制
在分布式系统中,服务间的调用可能会产生大量的请求,导致系统过载。Sentinel 可以通过设置流量控制策略,对请求进行限制,确保系统能够在高并发场景下稳定运行。 - 熔断降级
在分布式系统中,服务之间的依赖关系可能导致某一个服务的故障影响到整个系统。Sentinel 支持熔断机制,当某个服务出现故障时,可以自动切断请求,避免故障扩散。同时,Sentinel 还支持降级策略,对故障服务提供降级处理,如返回默认值、日志记录等。 - 资源隔离
Sentinel 可以将不同资源的访问进行隔离,例如 HTTP 请求、数据库连接等。这样,当某个资源出现问题时,可以限制其对其他资源的影响,提高系统的稳定性。 - 系统监控
Sentinel 提供了实时的监控界面,可以查看系统的流量、熔断、降级等状态。这有助于开发人员及时发现系统问题,并进行相应的优化。 - 应用扩展
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,主要需要配置以下几个参数:
- 流量控制策略
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
异常时进行降级。
- 资源包装
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。下面将详细介绍并在每个步骤给出具体案例。
- 引入依赖
在项目的pom.xml
文件中添加 Sentinel 的依赖:
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>1.8.2</version>
</dependency>
- 初始化 Sentinel
在项目的主类上添加@EnableSentinel
注解,以启动 Sentinel 守护进程:
@SpringBootApplication
@EnableSentinel
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- 配置 Sentinel
在application.properties
或application.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!";
}
}
- 使用 Sentinel 进行熔断
在需要进行熔断的方法上添加@Breakpoint
注解:
案例:
@RestController
public class MyController {
@GetMapping("/breakpoint")
public String breakpoint() {
// 业务逻辑
return "Hello, Sentinel!";
}
}
- 使用 Sentinel 进行降级
在需要进行降级的方法上添加@Degrade
注解:
案例:
@RestController
public class MyController {
@Degrade
@GetMapping("/degrade")
public String degrade() {
// 业务逻辑
return "Hello, Sentinel!";
}
}
- 监控 Sentinel
启动 Sentinel 监控页面,查看实时的流量控制、熔断和降级状态:
http://localhost:8080/console
以上就是如何在 Spring Cloud 项目中使用 Sentinel 的详细介绍。通过使用 Sentinel,我们可以更好地管理服务流量,保障系统的稳定性和可靠性。在实际项目中,还可以根据需求进行更复杂的配置,以满足不同的流量控制需求。