面试官:Feign 第一次调用为什么会很慢?大部分人都答不上来!

  • 前言

  • Ribbon是如何进行负载的

  • RibbonClientConfiguration

  • ZoneAwareLoadBalancer

  • Ribbon负载均衡策略

  • Ribbon-eager-load(饥饿加载)模式

  • 开启Ribbon饥饿加载

  • 总结

前言

首先要了解 Feign 是如何进行远程调用的,这里面包括,注册中心、负载均衡、FeignClient 之间的关系,微服务通过不论是 eureka、nacos 也好注册到服务端,Feign 是靠 Ribbon 做负载的,而 Ribbon 需要拿到注册中心的服务列表,将服务进行负载缓存到本地,然后 FeignClient 客户端在进行调用,大概就是这么一个过程。

Ribbon是如何进行负载的

首先我们要清楚 Ribbon 是如何进行负载的,也就是如何获取 nacos、eureka 的服务列表,这个很关键。

RibbonClientConfiguration 类中通过 LoadBalancer,我们知道 ribbon 是靠LoadBalancer 做负载的 无非就是 ILoadBalancer 接口的方法,依次是添加新的服务、在负载均衡里选择一个服务、markServerDown 服务下线、获取服务列表、获取存活的服务器、获取所有服务器(包括健康和不健康的)

ZoneAwareLoadBalancer

loadBalancer 默认的是 ZoneAwareLoadBalancer 负载均衡器

你可能感兴趣的:(java,开发语言)