Springcloud2020版之后的Ribbon(LoadBalancer)负载算法转换

本文档介绍了Spring Cloud 2020版本后Ribbon被LoadBalancer取代的情况,提供了使用LoadBalancer的配置示例,包括创建自定义配置类`CustomLoadBalancerConfiguration`和配置`RestTemplate`。通过`@LoadBalancerClient`注解设置服务名,并指定配置类,实现了负载均衡功能。启动项目后运行成功,表明LoadBalancer已成功替代Ribbon。

本篇适用于springcloud2020版本,2020版本之前是有Ribbon的,但是2020版本之后Springcloud把Ribbon移除了,用LoadBalancer替代了。

2020版本之前的Ribbon传送门:(23条消息) 更改Ribbon负载均衡配置规则_zuodingquan666的博客-优快云博客

1.新建配置类

package com.myrule;

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.core.env.Environment;


public class CustomLoadBalancerConfiguration {

    @Bean
    ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,
                                                            LoadBalancerClientFactory loadBalancerClientFactory){
        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
        return new RandomLoadBalancer(loadBalancerClientFactory
                .getLazyProvider(name,ServiceInstanceListSupplier.class),name);
    }
}

2.restTemplate配置

package com.cloud.config;

import com.myrule.CustomLoadBalancerConfiguration;
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(name = "CLOUD-PROVIDER-PAYMENT",configuration = CustomLoadBalancerConfiguration.class)
public class ApplicationContextConfig {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

主要实现代码:

@LoadBalancerClient(name = "CLOUD-PROVIDER-PAYMENT",configuration = CustomLoadBalancerConfiguration.class)

name里面的是:服务名

configuration:里面就是我们刚刚配置的文件名

启动项目:

 运行成功

其实loadbalancer和ribbon两者之间的区别并不大,只是在写法方面有不同而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值