Java面试题更新 2026-08-05

请阐述 Ribbon 的核心作用与在微服务架构中的定位。

技术原理方案权衡FeignSpring Cloud

考察说明

考查对 Spring Cloud 中客户端负载均衡器 Ribbon 基本概念的理解。

回答思路

  1. 【回答框架 1】Ribbon 是 Netflix 开源的客户端负载均衡器,在 Spring Cloud 中用于为服务消费者提供客户端侧的负载均衡能力。它内嵌在调用方进程内,通过拦截 RestTemplate 或 Feign 请求,根据注册中心提供的服务实例列表进行选择,从而分配请求到不同服务实例。
  2. 【回答框架 2】Ribbon 的核心是负载均衡规则,它提供了多种内置策略,如轮询、随机、加权响应时间等。默认使用轮询策略。用户可以通过配置文件或自定义 IRule 实现来选择或定义策略。
  3. 【回答框架 3】Ribbon 与注册中心(如 Eureka)通常配合使用:服务消费者向注册中心获取可用服务实例列表,Ribbon 基于该列表进行负载均衡。它还具备故障转移和重试机制,当某个实例不可用时,会自动切换到其他健康实例。
  4. 【回答框架 4】在实际项目中,Ribbon 常与 Feign 集成:Feign 整合了 Ribbon,使得声明式 HTTP 客户端自动获得负载均衡能力,开发时无需额外编写负载均衡代码。但需要注意的是,Spring Cloud 官方已宣布进入维护模式,新项目建议使用 Spring Cloud LoadBalancer 作为替代。
  5. 【关键点 1】Ribbon 是客户端负载均衡器,运行在服务消费者端。
  6. 【关键点 2】通过注册中心获取服务实例列表,依据负载均衡策略选择实例。
  7. 【关键点 3】默认策略为轮询,可通过 IRule 自定义。
  8. 【关键点 4】与 Feign 集成时自动赋予负载均衡能力。
  9. 【关键点 5】已在 Spring Cloud 中进入维护模式,新项目推荐使用 Spring Cloud LoadBalancer。
  10. 【易错点 1】注意区分客户端负载均衡与服务端负载均衡(如 Nginx、网关)。
  11. 【易错点 2】不要认为 Ribbon 会修改服务端配置,它只作用于调用方。
  12. 【易错点 3】Ribbon 与 Eureka 集成时,若未正确配置心跳和剔除,可能会有实例列表陈旧的风险。