远程调用
本文最后更新于299 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

OpenFeign发起远程调用的核心流程

  • 获取请求中的serviceId
  • 根据serviceId负载均衡,找出一个可用的服务实例
  • 利用服务实例的ipport信息重构url
  • 向真正的url发起请求

RoundRobinLoadBalancer是轮询算法,RandomLoadBalancer是随机算法,NacosLoadBalancer是集群优先

修改负载均衡

public class OpenFeignConfig {
    @Bean
    public ReactorLoadBalancer<ServiceInstance> reactorServiceInstanceLoadBalancer(
            Environment environment, NacosDiscoveryProperties properties,
            LoadBalancerClientFactory loadBalancerClientFactory) {
        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
        return new NacosLoadBalancer(
                loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name, properties);
    }
}

这个配置类千万不要加@Configuration注解,也不要被SpringBootApplication扫描到。

有两种做法:

  • 全局配置:对所有服务生效
@LoadBalancerClients(defaultConfiguration = OpenFeignConfig.class)
  • 局部配置:只对某个服务生效
@LoadBalancerClients({
        @LoadBalancerClient(value = "item-service", configuration = OpenFeignConfig.class)
})
如果觉得本文对您有所帮助,那这将是对我最大的鼓励,期待您留下您宝贵的评论。
暂无评论

发送评论 编辑评论


				
上一篇
下一篇