专栏集锦,大佬们可以收藏以备不时之需
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)生成祝福诗词
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 的主要应用场景如下:
https://sentinelguard.io/zh-cn/docs/introduction.html
在 Spring Cloud 项目中使用 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
异常时进行降级。
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 并进行配置的详细介绍。实际应用中,您可以根据需求进行更详细的配置,以满足不同的流量控制、降级和监控需求。
在 Spring Cloud 项目中使用 Sentinel,主要是通过以下几个步骤来完成:引入依赖、初始化 Sentinel、配置 Sentinel、使用 Sentinel 进行流量控制、熔断和降级、监控 Sentinel。下面将详细介绍并在每个步骤给出具体案例。
pom.xml
文件中添加 Sentinel 的依赖:<dependency>
<groupId>com.alibaba.cspgroupId>
<artifactId>sentinel-coreartifactId>
<version>1.8.2version>
dependency>
@EnableSentinel
注解,以启动 Sentinel 守护进程:@SpringBootApplication
@EnableSentinel
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
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!";
}
}
@Breakpoint
注解:@RestController
public class MyController {
@GetMapping("/breakpoint")
public String breakpoint() {
// 业务逻辑
return "Hello, Sentinel!";
}
}
@Degrade
注解:@RestController
public class MyController {
@Degrade
@GetMapping("/degrade")
public String degrade() {
// 业务逻辑
return "Hello, Sentinel!";
}
}
http://localhost:8080/console
以上就是如何在 Spring Cloud 项目中使用 Sentinel 的详细介绍。通过使用 Sentinel,我们可以更好地管理服务流量,保障系统的稳定性和可靠性。在实际项目中,还可以根据需求进行更复杂的配置,以满足不同的流量控制需求。