Java面试题更新 2026-08-05

请解释 Feign 在微服务架构中实现负载均衡的原理与流程。

后端开发系统设计技术原理FeignSpring Cloud

考察说明

考查对 Feign 与负载均衡整合机制的理解,包括动态服务发现和请求分发。

回答思路

  1. 【回答框架 1】Feign 本身是声明式 HTTP 客户端,通过接口定义远程调用,底层默认使用 Ribbon 或 Spring Cloud LoadBalancer 实现客户端负载均衡。
  2. 【回答框架 2】当 Feign 接口方法被调用时,会基于服务名从注册中心获取服务实例列表,然后通过负载均衡策略选择一个实例,将请求转发到该实例的 URL。
  3. 【回答框架 3】负载均衡策略包括轮询、随机、权重等,默认是轮询。这些策略可以在配置文件中调整。
  4. 【回答框架 4】Feign 与 Ribbon 整合时,Ribbon 拦截 Feign 的请求,替换主机名为具体实例地址。若使用 Spring Cloud LoadBalancer,则通过 LoadBalancerClient 实现。
  5. 【关键点 1】Feign 通过服务名发现实例列表,再通过负载均衡算法选择目标实例。
  6. 【关键点 2】默认负载均衡策略是轮询,可通过配置修改。
  7. 【关键点 3】Feign 的负载均衡是客户端负载均衡,区别于 Nginx 的服务端负载均衡。
  8. 【易错点 1】不要混淆 Feign 与负载均衡,Feign 只是客户端,负载均衡由 Ribbon 或 LoadBalancer 实现。
  9. 【易错点 2】若未配置注册中心,Feign 无法获取实例列表,负载均衡会失效。