面试知识库

微服务注册 → 熔断 → 限流 → 链路追踪 追问链#

追问路径#

涉及知识点#

核心串联逻辑#

  1. 注册发现:服务注册+心跳保活+消费者本地缓存(注册中心挂了仍可用)
  2. 容错三板斧:超时(快速失败) → 重试(需幂等) → 熔断(保护下游)
  3. Sentinel核心:滑动窗口统计QPS和异常比例,规则可通过Nacos/Dashboard动态推送
  4. 限流选型:API网关层用令牌桶(允许合理突发),单机用Sentinel,集群用Redis+Lua
  5. 链路追踪:TraceId贯穿全链路,Span记录每段耗时,SkyWalking/Zipkin做采集展示
  6. 代码示例
    // Sentinel限流规则
    FlowRule rule = new FlowRule("orderService");
    rule.setCount(100);        // QPS阈值
    rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
    rule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_WARM_UP); // 预热模式
    java

面试回答串联#

30秒速答#

“服务注册到Nacos,消费者拉取服务列表并本地缓存。调用失败通过Sentinel做熔断降级,限流用令牌桶算法。服务间通信同步用Feign/Dubbo,异步用MQ。链路追踪通过TraceId透传全链路,灰度发布在网关层做流量路由。“

2分钟展开答#

“注册中心核心流程是服务启动注册IP端口、消费者拉取列表并本地缓存、心跳保活。我们用Nacos因为它同时支持注册发现和配置中心,还能在CP/AP模式间切换——临时实例用AP保证可用性,持久实例用CP保证一致性。服务调用失败时三板斧:超时快速失败、重试要保证幂等、熔断保护下游。熔断器是个状态机——关闭时正常放行,失败率超过阈值(比如50%)进入打开状态直接拒绝,一段时间后半开放少量请求试探。我们用Sentinel替代已停更的Hystrix,它基于滑动窗口统计,规则可以通过Nacos动态推送。限流算法中令牌桶允许合理突发流量,适合API网关层;分布式限流用Redis+Lua原子计数。链路追踪用SkyWalking,入口生成TraceId通过请求头在服务间透传,每个服务段产生Span记录耗时。灰度发布我们在Gateway层按请求头路由5%流量到新版本。“

相关追问链#