详细介绍sentinel的使用,并列举经常出的面试题以及答案

Sentinel详细介绍

1. 核心功能
  • 流量控制:通过QPS/线程数控制接口访问量
  • 熔断降级:基于响应时间/异常比例/异常数进行服务熔断
  • 系统保护:根据系统负载(CPU/平均RT/线程数)触发保护机制
  • 实时监控:秒级数据统计展示
2. 使用流程
// 定义资源
@SentinelResource(value = "orderQuery", blockHandler = "handleBlock")
public List<Order> queryOrders() {
    // 业务逻辑
}

// 配置规则
private static void initFlowRules() {
    List<FlowRule> rules = new ArrayList<>();
    FlowRule rule = new FlowRule("orderQuery");
    rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
    rule.setCount(10); // 每秒10次
    rules.add(rule);
    FlowRuleManager.loadRules(rules);
}
3. 控制台部署
  • 实时监控仪表盘
  • 动态规则配置
  • 机器健康状态检测

高频面试题与解析

Q1: Sentinel与Hystrix的主要区别?

  1. 设计理念差异
    • Hystrix:线程池隔离+熔断
    • Sentinel:流量控制+熔断降级+系统保护
  2. 实时监控能力
    • Sentinel提供秒级监控数据
  3. 规则配置方式
    • Sentinel支持动态规则更新
  4. 扩展性
    • Sentinel提供Filter/Processor扩展点
Q2: 熔断策略的三种模式?

  1. 慢调用比例
    • 条件:响应时间 > 阈值 且 比例 > 设定值
    • 公式: s l o w _ c o u n t t o t a l ≥ r a t i o \frac{slow\_count}{total} \geq ratio totalslow_countratio
  2. 异常比例
    • 触发条件:异常比例超过阈值
  3. 异常数
    • 适用于低吞吐场景
Q3: 热点参数限流实现原理?

  1. 参数索引标记
    @SentinelResource(value = "hotResource", blockHandler = "handleHotBlock")
    public String getDetail(@RequestParam("id") String productId) 
    
  2. 配置参数例外项
    {
      "paramIdx": 0,
      "paramValue": "P123",
      "threshold": 50
    }
    
  3. 采用令牌桶算法进行细粒度控制
Q4: 规则持久化方案?

  1. 文件持久化
    • 使用FileRefreshableDataSource
  2. Nacos配置中心
    • 监听Nacos配置变更
  3. ZooKeeper存储
    • 利用节点监听机制
  4. Apollo集成
    • 通过配置监听实现
Q5: 滑动窗口算法实现?

  1. 时间窗口划分
    • 将1秒划分为2个500ms窗口
  2. 数据统计结构
    class Window {
        long startTime;
        AtomicLong pass = new AtomicLong();
        AtomicLong block = new AtomicLong();
    }
    
  3. 窗口滚动机制
    • 当前时间戳: c u r r e n t = S y s t e m . c u r r e n t T i m e M i l l i s ( ) current = System.currentTimeMillis() current=System.currentTimeMillis()
    • 窗口索引: i n d e x = ( c u r r e n t / 500 ) % 2 index = (current / 500) \% 2 index=(current/500)%2
  4. 统计合并策略
    • 仅保留有效时间范围内的窗口数据

最佳实践建议

  1. 生产环境配置
    • 启用CLUSTER集群流量控制模式
    • 配置合理的fallback降级策略
  2. 监控整合
    • 对接Prometheus监控体系
    • 集成Grafana可视化面板
  3. 压测策略
    • 使用JMeter进行规则验证
    • 监控规则触发时的系统指标变化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷爱码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值