Sentinel:高可用流量控制与熔断降级

Sentinel:高可用流量控制与熔断降级


文章目录

  • Sentinel:高可用流量控制与熔断降级
    • 第一章:Sentinel 是什么?
    • 第二章:流量控制——像地铁早高峰限流
      • 场景还原:
      • Sentinel 解决方案:
    • 第三章:熔断降级——电路保险丝的启发
      • 场景还原:
      • Sentinel 熔断策略:
    • 第四章:Sentinel 控制台——实时监控仪表盘
    • 第五章:为什么不用 Hystrix?
    • 第六章:常见问题排坑
    • 第七章:总结与预告


第一章:Sentinel 是什么?

想象你开了一家网红奶茶店,突然被美食博主推荐,门口排起百米长队。如果不控制人流,店员累瘫、机器过热、订单混乱,整个系统直接崩溃。Sentinel 就是这家奶茶店的“智能店长”,它做了两件事:

  1. 流量控制:每分钟只放 50 人进店,避免挤爆收银台。
  2. 熔断降级:发现珍珠煮糊了,立刻关闭珍珠奶茶选项,推荐其他饮品。

在技术领域,Sentinel 是阿里巴巴开源的流量治理组件,专门防止微服务被突发流量打垮。


第二章:流量控制——像地铁早高峰限流

场景还原:

用户服务提供一个查询接口,正常能承受 1000 次/秒的请求。突然有 5000 人同时访问,服务器 CPU 飙到 99%——就像地铁站涌入大量乘客,闸机口挤成乱麻。

Sentinel 解决方案:

  1. 设置 QPS 阈值:每秒最多允许 800 次请求,超出的排队等待。
  2. 设置并发线程数:最多 20 个线程同时处理,超出直接拒绝。

代码示例:用 Sentinel 保护接口

// 用户查询接口:用 Sentinel 做流量控制  
@RestController  
@RequestMapping("/user")  
public class UserController {
     

    // 定义资源名称(像给奶茶店取个编号)  
    private static final String RESOURCE_NAME = "getUserInfo";  

    // 初始化规则:开业前先定好规矩  
    @PostConstruct  
    public void initRule() {
     
        List<FlowRule> rules = new ArrayList<>();  
        FlowRule rule = new FlowRule();

你可能感兴趣的:(#,微服务,sentinel)