✅PmHub 整合 Sentinel 实现服务熔断和降级
球友好,欢迎来到 Sentinel 教程,这篇文章会细致的讲解 Sentinel 以及如何在 PmHub 中实现服务熔断和降级。
熔断降级概念
马上春节,要开始 12306 抢票啦,一年一度的抢票大战即将开始。有些地区,比如深圳、北京、上海,票刚一放出来,就可能秒没,这个时候 12306 服务器面临前所未有的压力。
有时候你会发现,高峰时间段,12306 的 APP 甚至连搜索都无法进入,这个时候你总不可能一直转圈圈吧?
比较友好的方式是给个默认提示,说:小宝贝,你等一等。
这是一种常见的降级处理方式。
现实远比这个更棘手,A 服务需要调用下游 B、C、D 服务,这个时候服务 B 的 CPU、内存等占用直接打满,或者服务 D 直接就宕机了。
A 总不可能一直等待 B 和 D 吧,不然就会出现请求堆积、资源占用、严重的将会扩展到所有微服务,导致服务雪崩。
所以通常的做法是会有一些容错手段:
- 主动超时:Http请求主动设置一个超时时间,超时就直接返回,不会造成服务堆积
- 限流:限制最大并发数,限制流量
- 熔断:当错误数超过阈值时快速失败,不调用后端服务,同时隔一定时间放几个请求去重试后端服务是否能正常调用,如果成功则关闭熔断状态,失败则继续快速失败,直接返回。(此处有个重试,重试就是弹性恢复的能力)
- 隔离:把每个依赖或调用的服务都隔离开来,防止级联失败引起整体服务不可用
- 降级:服务失败或异常后,返回指定的默认信息
所以,我们这里说的熔断和降级,是属于整个容错模式中比较重要的两种。
微服务架构是一种将应用程序作为一套小服务开发的方法,每个服务运行在其独立的进程中,并通常围绕特定的业务能力构建。在这种架构中,服务熔断和降级是两种重要的容错机制,它们帮助提高系统的可用性和稳定性。
服务熔断(Circuit Breaker)
服务熔断是一种模式,用于防止应用程序不断地尝试执行可能会失败的操作。就好像是家里的熔断器,当电流超过某个阈值时,熔断器会自动断开电路,防止系统过载。
在微服务架构中,服务熔断器的作用是:
- 防止系统过载:当下游服务不可用或响应时间过长时,熔断器会“断开”,阻止更多的请求发送到该服务。
- 快速失败:通过快速返回错误响应,而不是长时间的等待,提高用户体验。
- 资源释放:释放等待失败服务的资源,使这些资源可以被其他服务使用。
服务熔断的典型实现包括以下几个状态:
- 关闭状态:正常状态,服务请求被允许通过。
- 打开状态:检测到连续失败后,熔断器打开,阻止请求发送到下游服务,通常有一个设定的等待时间。
- 半打开状态:经过一段时间后,熔断器进入半打开状态,允许一部分请求尝试访问下游服务,以检查服务是否已恢复。
服务降级(Service Degradation)
服务降级是一种在系统负载过高或部分服务不可用时,临时降低服务级别以保证核心功能可用的策略。它通常涉及到以下几个方面:
- 功能限制:在高负载或故障情况下,某些非核心功能可能会被禁用或简化。
- 响应简化:返回预先定义的响应,而不是执行完整的业务逻辑。
- 资源分配:优先保证核心服务的资源需求,牺牲非核心服务。
服务降级的实现包括:
- 静态降级:预先定义降级规则,在特定条件下自动触发。
- 动态降级:根据实时监控数据动态调整服务级别。
在实际应用中,服务熔断和降级常常结合使用。例如,当检测到下游服务不可用时,熔断器会触发,同时系统会启动降级策略,提供简化的服务响应,以确保系统的核心功能仍然可用。
而 Sentinel 就是天生用来做这个事情的组件。
Sentinel 是什么
Sentinel 是阿里开源的组件,可以说是当下在微服务容错解决方案中的国货之光,经历了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。

Sentinel 具体的生态位如下:

和 Spring Cloud Circuit Breaker 一样,都是用来解决微服务中的容错问题。我们来看下和 Breaker 比,有啥不同吧。
以下是Spring Cloud Circuit Breaker和Sentinel在微服务架构中的服务熔断和降级方面的比较表格:
| 特性/框架 | Spring Cloud Circuit Breaker | Sentinel |
| 开源社区支持 | 支持多种实现,如Resilience4j和Sentinel | 阿里巴巴维护,社区活跃 |
| 语言支持 | 主要支持Java | Java |
| 核心功能 | 提供断路器抽象层,支持熔断、降级 | 流量控制、熔断降级、系统负载保护 |
| 配置方式 | 支持注解、配置文件、编程式配置 | 注解、配置文件、控制台 |
| 可视化监控 | 支持metrics、micrometer、prome... |
未能定位到原文的划线
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
真诚点赞 诚不我欺
回复