限流神器Sentinel,不了解一下吗?

Sentinel是一个分布式系统的流量防卫兵,具备多种流量控制策略。本文详细介绍了Sentinel的核心概念,如资源和规则,以及单机、控制台和集群限流的实现步骤。此外,还探讨了Sentinel的熔断降级策略,包括异常比例和异常数熔断。通过Sentinel,开发者可以更好地保护微服务架构中的服务稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

书接上回: 你来说说什么是限流? ,限流的整体概述中,描述了 限流是什么限流方式限流的实现。在文章尾部的 分布式限流,没有做过多的介绍,选择了放到这篇文章中。给大伙细细讲解一下 Sentinel

附带最权威的官方wiki: 《Alibaba-Sentinel,新手指南》

本篇文章源码地址: https://github.com/jaycekon/SpringBoot

Sentinel 是啥?

分布式系统的流量防卫兵

再引用一下之前我画的图:

image.png

流量防卫兵 它具备了哪些能力?

image.png

Sentinel 的生态环境

随着 Alibaba 的 Java 生态建设,包括 Spring Cloud AlibabaRocketNacos等多项开源技术的贡献,目前Sentinel 对分布式的各种应用场景都有了良好的支持和适配,这也是为什么我们选择 Sentinel 学习的原因之一(学习成本低,应用场景多)

image.png

Sentinel 核心概念

1、资源

资源Sentinel 中的核心概念之一。最常用的资源是我们代码中的 Java 方法,一段代码,或者一个接口

Java方法:

@SentinelResource("HelloWorld")
public void helloWorld() {
   
    // 资源中的逻辑
    System.out.println("hello world");
}

一段代码:

        // 1.5.0 版本开始可以直接利用 try-with-resources 特性,自动 exit entry
try (Entry entry = SphU.entry("HelloWorld")) {
   
            // 被保护的逻辑
            System.out.println("hello world");
	} catch (BlockException ex) {
   
            // 处理被流控的逻辑
	    System.out.println("blocked!");
	}

一个接口:

@RestController
public class TestController {
   
    @GetMapping("/test")
    public String test(){
   
        return "test";
    }
}

配合控制台使用:

image.png

2、规则

Sentinel 中的规则 提供给用户,针对不同的场景而制定不同的保护动作,规则的类型包括:

  • 流量控制规则
  • 熔断降级规则
  • 系统保护规则
  • 来源访问控制规则
  • 热点参数规则

本文主要会讲解 流量熔断系统保护这三个规则。

定义规则:

    private static void initFlowRules(){
   
        List<FlowRule> rules = new ArrayList<>();
        FlowRule rule = new FlowRule();
        //绑定资源
        rule.setResource("HelloWorld");
        //限流阈值类型
        rule.setGrade(RuleConstant.FLOW_GRADE_QPS
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值