1. 服务注册与发现的原理?Nacos vs Eureka?

流程:服务启动 → 向注册中心注册(IP:端口)→ 周期心跳续约 → 消费方从注册中心拉取/订阅服务列表 → 本地缓存 + 负载均衡调用 → 服务下线注销,注册中心通知订阅方。

Nacos(阿里,主流):

Eureka(Netflix):AP 风格——自我保护机制:短时间内大量实例掉线时不剔除(防网络抖动误杀),宁可保留死节点让调用方重试,不可用性风险低。早已停止开发。

🎯 面试要点

  • 对比:Nacos(可 AP 可 CP,功能全,国内主流)/ Eureka(AP,淘汰)/ ZooKeeper(CP,分区不可用)/ Consul(CP,云原生)
  • 服务列表变更的感知:拉模式(轮询)vs 推模式(长连接/WebSocket)——Nacos 推送更快

2. 负载均衡策略有哪些?一致性哈希?

🎯 面试要点

  • 一致性哈希 vs 取模:取模扩容要全部重映射;一致性哈希只影响 1/n 的 key
  • Dubbo 默认加权随机;Nginx 默认轮询;Spring Cloud LoadBalancer 默认轮询
  • 粘性会话(Session 绑定)不推荐,服务要无状态

3. 限流、熔断、降级的区别?(必考三件套)

区别一句话版
限流:流量太多 → 挡住新请求(保护自己)
熔断:下游坏了 → 不去调用(保护下游+自己)
降级:系统紧张 → 主动砍功能(保证核心可用)

// Sentinel 使用示例
@SentinelResource(value = "getOrder",
        fallback = "getOrderFallback",   // 降级兜底方法
        blockHandler = "getOrderBlock")    // 限流兜底方法

🎯 面试要点

  • 三者关系:限流防"洪峰",熔断防"雪崩",降级保"核心"——一起构成系统保护体系
  • 雪崩链路:A→B→C,C 慢导致 B 线程池耗尽导致 A 耗尽——熔断/限流/超时缺一不可
  • Sentinel(阿里)vs Hystrix(Netflix 停更)——答"Sentinel 是现状"

4. 网关的作用?Spring Cloud Gateway?

Spring Cloud Gateway 核心:路由(Route)= 断言(Predicate,匹配条件)+ 过滤器(Filter,请求/响应加工)。基于 WebFlux(Netty)非阻塞,性能好于 Zuul 1.x。

🎯 面试要点

  • 网关对比:Spring Cloud Gateway(Java 微服务标配)/ Nginx(流量入口,静态负载)/ Kong / APISIX(云原生 API 网关)
  • 网关不要放业务逻辑:它是横切面不是业务层

🎤 常见面试追问

  1. 限流、熔断、降级怎么区分?(必背)——限流:流量太多挡住新请求(保护自己);熔断:下游故障率超标快速失败不调用(保护下游和自己);降级:系统紧张主动砍非核心功能(保核心)。
  2. 令牌桶和漏桶的区别?——漏桶:匀速流出(严格削峰,无突发);令牌桶:按速率放令牌、桶可攒(允许突发)。秒杀场景令牌桶更常用。
  3. 注册中心选 Nacos 还是 Eureka?——Nacos(现主流):可 CP 可 AP、自带配置中心、gRPC 推送快;Eureka:纯 AP、自我保护、已停更。ZooKeeper 是 CP(分区不可用)。
  4. 负载均衡策略怎么选?——性能均衡 → 轮询/随机;机器性能差异大 → 加权;长连接场景 → 最少连接;缓存类要求"同 key 同节点" → 一致性哈希。
  5. 网关里放什么?——认证鉴权、限流、黑白名单、日志、跨域、灰度路由。不放业务逻辑——网关是横切面不是业务层。

📖 名词解释(本页术语)

术语 大白话解释
注册中心服务的"通讯录":服务启动注册、心跳续约、消费方拉取列表。Nacos/Eureka/ZooKeeper。
负载均衡把请求分到多台机器:轮询/随机/加权/最少连接/一致性哈希。
限流控制请求速率(QPS 上限)。算法:固定/滑动窗口、漏桶、令牌桶。Sentinel/Guava。
熔断下游故障率超标→断路器打开快速失败,冷却后半开试探。三态:关→开→半开。防雪崩。
降级主动放弃非核心功能(评论/积分接口返回兜底),保核心可用。
一致性哈希哈希环路由:节点增减只影响少量 key(缓存扩容友好),配虚拟节点防倾斜。
网关(Gateway)统一流量入口:路由 + 横切能力(鉴权/限流/日志)。Spring Cloud Gateway 基于 WebFlux。
雪崩一个服务变慢拖垮调用方,层层放大整个链路崩溃。熔断/限流/超时防它。
⚠️ 本页面由 AI 生成,内容仅供参考,请以官方文档和实际源码为准。