Appearance
使用类似于 Sleuth,在对应服务添加依赖和注解配置后,Sentinel 能够对服务做一个服务流量监听,进行熔断降级、系统负载等操作。
Sentinel 控制台的下载
下载地址: https://github.com/alibaba/Sentinel/releases/tag/1.8.3
注意的一些内容
- 注解使用(服务程序中使用)
- 流控规则
- 熔断规则
- 系统规则
基本学习和使用: https://blog.csdn.net/Adda_Chen/article/details/126694546
Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard控制台。核心库不依赖 Dashboard,但是结合 Dashboard 可以取得最好的效果。
我们说的资源,可以是任何东西,服务,服务里的方法,甚至是一段代码。使用 Sentinel 来进行资源保护,主要分为几个步骤:
- 定义资源
- 定义规则
- 检验规则是否生效
等实际使用再看一下具体使用示例
Sentinel 是阿里巴巴开源的一款面向分布式服务架构的高可用性保障组件,主要用于流量控制(限流)、熔断降级、系统负载保护等,以保障微服务或分布式系统的稳定性和可靠性。Sentinel 以流量为切入点,从多个维度监控、记录和处理服务调用情况,支持丰富的流量控制策略,如QPS限流、线程数限流、熔断降级等。
核心特性
- 丰富的流量控制策略:支持基于QPS的限流、基于响应时间的熔断降级、系统负载保护等策略。
- 实时监控:提供实时的监控数据展示,帮助快速定位流量控制效果和系统状态。
- 规则动态推送:支持动态规则配置,无需重启应用即可实时生效。
- 广泛的框架整合:提供了对Spring Cloud、Dubbo、gRPC等多种微服务框架的适配,方便在各种微服务架构下使用。
使用示例:
以在Spring Cloud项目中使用Sentinel为例,首先需要添加Sentinel的Starter依赖到项目的pom.xml文件中:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>版本号</version>
</dependency>定义规则
Sentinel 支持通过硬编码、文件配置、控制台配置等多种方式定义规则。以下是一个简单的流量控制规则示例,通过硬编码的方式定义:
import com.alibaba.csp.sentinel.Entry;
import com.alibaba.csp.sentinel.SphU;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.RuleConstant;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import java.util.ArrayList;
import java.util.List;
public class SentinelDemo {
public static void main(String[] args) {
// 配置规则
initFlowRules();
while (true) {
try (Entry entry = SphU.entry("HelloWorld")) {
// 被保护的逻辑
System.out.println("hello world");
} catch (BlockException ex) {
// 处理被流量控制后的逻辑
System.out.println("blocked!");
}
}
}
private static void initFlowRules() {
List<FlowRule> rules = new ArrayList<>();
FlowRule rule = new FlowRule();
rule.setResource("HelloWorld");
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
// Set limit QPS to 20.
rule.setCount(20);
rules.add(rule);
FlowRuleManager.loadRules(rules);
}
}在这个例子中,定义了一个简单的流量控制规则,对名为HelloWorld的资源进行限流,限制其QPS(每秒查询率)不超过20。
启动和测试
- 将上述代码添加到Spring Boot项目中。
- 启动Spring Boot应用。
- 进行压力测试,可以使用JMeter或其他工具模拟高并发请求。
- 观察控制台输出,验证限流效果。
使用Sentinel控制台
Sentinel还提供了一个控制台(Sentinel Dashboard),通过它可以更加方便地管理规则和监控应用状态。使用控制台,可以动态修改限流规则、查看实时监控数据等。
- 下载并启动Sentinel控制台。
- 在应用中配置控制台地址。
- 访问控制台,添加或修改规则,查看监控数据。
参考