欢迎光临散文网 会员登陆 & 注册

SpringCloud 教程 已完结(IDEA 2022.1最新版)4K蓝光画质

2023-07-26 16:03 作者:windpop_  | 我要投稿

在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);
    }


}

这样就成功的修改好了 分配策略

SpringCloud 教程 已完结(IDEA 2022.1最新版)4K蓝光画质的评论 (共 条)

分享到微博请遵守国家法律