SpringCloud 教程 已完结(IDEA 2022.1最新版)4K蓝光画质
在2020年前的springcloud 是采用了 Ribbom 作为负载均衡实现
但是在2020年之后 springcloud就把 Ribbom 移除了,取而代之的就是自己编写的LoadBalancer
实际上 添加注解之后 就会启动拦截器 对我们发起的服务调用请求进行拦截,然后进行相关的代码
实现负载均衡 一共有两种策略
RandomLoadBalancer 随机分配策略
RoundRobinLoadBalancer 轮询分配策略
轮询分配策略是作为默认的策略进行使用
修改分配策略
不能使用在启动类中配置的@LoadBalancer
创建一个配置类 在里面创建初始组件 RestTemplate
要注意的是 在配置类上面给上注解
@LoadBalancerClient(value = "user",configuration = LoadBalancerConfig.class)
value 指向的是服务名称 右侧 configuration 指向分配策略的配置类
(下面写)
package cn.order.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
@LoadBalancerClient(value = "user",configuration = LoadBalancerConfig.class)
public class BeanConfiguration {
@Bean
// 负载均衡注解
@LoadBalanced
public RestTemplate createRestTemplate(){
return new RestTemplate();
}
}
编写随机分配策略的配置类(上文需要的 configuration)
这里要注意的是 大写指向的是类 小写指向的是对象
package cn.order.config;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.loadbalancer.core.RandomLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ReactorLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
@Configuration
public class LoadBalancerConfig {
@Bean
public ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory){
String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class),name);
}
}
这样就成功的修改好了 分配策略

