LoadBalancer自带的负载均衡算法只有两种,分别是轮询(对应的实现类是org.springframework.cloud.loadbalancer.core.RoundRobinLoadBalancer)和随机(对应的实现类是org.springframework.cloud.loadbalancer.core.RandomLoadBalancer),默认用的是轮询,其定义点在配置类LoadBalancerClientConfiguration中:
我们可以自定义负载均衡实现,方法如下:
1、自定义负载均衡类,并实现org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer接口,并重写choose方法,该方法的主要作用就是从某个服务的多个ServiceInstance中选出一个服务实例,该实例会用于后续的服务调用:
package com.ljc.conf;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.DefaultResponse;
import org.springframework.cloud.client.loadbalancer.EmptyResponse;
import org.springframework.cloud.client.loadbalancer.Request;
import org.springframework.cloud.client.loadbalancer.Response;
import org.springframework.cloud.loadbalancer.core.NoopServiceInstanceListSupplier