Alibaba Sentinel超详细整理

Alibaba Sentinel 是面向云原生微服务的流量控制,熔断降级组件,监控保护你的微服务

为什么要学Alibaba Sentinel?

先来看看Sentinel的前身 Hystrix ,可以翻阅我的文章整理,总结下来有几点

需要我们程序员手工搭建监控平台
没有一套web界面可以给我们进行更加细粒度配置流控,速率控制,服务熔断,服务降级…

  • 而Sentinel的优势

1.单独一个组件,可以独立出来
2.直接界面化的细粒度统一配置

有没有发现跟Nacos很像,我们不需要在手动建立一个部署模块,直接入驻就可以了,开发简便很多

Sentinel是什么

  • 丰富的应用场景: Sentinel承接了阿里巴巴近十年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围),消息削峰填谷,集群流量控制,实时熔断下游不可用应用等

  • 完美的实时监控:
    Sentinel同事提供实时的监控功能,您可以在控制台看到接入应用的单台机器秒级数据,甚至500台一下规模的集群的汇总运行情况

  • 广泛的开源生态:
    Sentinel提供开箱即用的与其他框架/库的整合模块,例如与SpringCloud,Dubbo,gRPC的整合,您只需要引入响应的依赖并进行简单的配置即可快速接入Sentinel.

  • 完美的SPI扩展点:
    Sentinel提供简单易用的,完美的SPI扩展接口,可以通过实现扩展接口来快速定制逻辑,例如定制规则管理,适配动态数据源等.
    Sentinel 分为两个部分

  • 核心库(java客户端) 不依赖于任何框架/库,能够运行所有java运行时环境,同时对Dubbo/Spring Cloud 等框架也有较好的支持

  • 控制台(Dashboard)基于Srping Boot开发,打包后可以直接运行,不需要额外的Tomcat等容器

https://www.jianshu.com/p/87bec2187912

### 阿里巴巴 Sentinel 使用教程及相关文档 #### 什么是 SentinelSentinel阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,能够帮助开发者保障系统的稳定性。它提供了实时监控、限流、降级以及系统保护等功能,适用于微服务治理场景[^2]。 #### 主要特性 1. **流量控制**:支持基于 QPS 和并发线程数两种模式的限流策略。 2. **熔断降级**:当调用链路中的某个环节不可用或者响应时间过长时,会对整个请求进行快速失败处理。 3. **系统负载保护**:根据 CPU 负载或其他自定义指标对入口流量进行控制。 4. **实时监控与告警**:提供丰富的仪表盘展示当前系统的运行状态。 5. **扩展性强**:支持多种框架适配(如 Spring Cloud、Dubbo 等),并允许用户自定义规则和处理器逻辑[^3]。 #### 安装与配置指南 以下是使用 Alibaba Sentinel 的基本流程: ##### 1. 添加 Maven 依赖 在项目的 `pom.xml` 文件中添加以下依赖项: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> <version>最新版本号</version> </dependency> ``` ##### 2. 启动 Sentinel 控制台 下载官方提供的 Sentinel Dashboard 并启动服务端程序。可以通过访问 http://localhost:8080 进入管理界面[^1]。 ##### 3. 注解方式实现资源保护 下面是一个简单的例子,展示了如何利用 `@SentinelResource` 注解来定义受保护的业务方法,并指定异常处理函数: ```java import com.alibaba.csp.sentinel.annotation.SentinelResource; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/hello") @SentinelResource(value = "hello", blockHandler = "handleBlock") public String hello() { return "Hello, world!"; } public String handleBlock(BlockException ex) { return "Blocked by Sentinel: " + ex.getClass().getSimpleName(); } } ``` 上述代码片段表明,在 `/hello` 接口上应用了名为 `"hello"` 的资源限制条件;如果发生阻塞事件,则触发 `handleBlock()` 方法返回定制化的错误消息[^1]。 ##### 4. 自定义规则设置 可以手动编写 Java 代码动态调整限流参数,如下所示: ```java import com.alibaba.csp.sentinel.Entry; import com.alibaba.csp.sentinel.SphU; 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 FlowControlExample { public static void main(String[] args) throws InterruptedException { initFlowRules(); while (true){ Entry entry = null; try{ entry = SphU.entry("custom_resource"); System.out.println("Passed..."); }catch(Exception e){ System.err.println(e.getMessage()); }finally{ if(entry !=null){ entry.exit(); } } Thread.sleep(10); } } private static void initFlowRules(){ List<FlowRule> rules=new ArrayList<>(); FlowRule rule=new FlowRule(); rule.setResource("custom_resource"); rule.setGrade(com.alibaba.csp.sentinel.slots.block.flow.RuleConstant.FLOW_GRADE_QPS); rule.setCount(2); // 设置每秒最多允许两个请求 rules.add(rule); FlowRuleManager.loadRules(rules); } } ``` 此示例演示了创建一个新的资源名称为 `"custom_resource"` 的限流规则,并将其阈值设定为每秒钟只接受两次请求[^4]。 #### 参考链接 更多详细资料可查阅官方文档页面:https://github.com/alibaba/Sentinel/wiki 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值