spring cloud alibaba 基本负载均衡(三)

自定义Ribbon

1、自定义类继承AbstractLoabBalancerRule

package com.lemon.alibaba.bean;

import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.AbstractLoadBalancerRule;
import com.netflix.loadbalancer.ILoadBalancer;
import com.netflix.loadbalancer.Server;

import java.util.List;
import java.util.concurrent.ThreadLocalRandom;

public class CustomRule  extends AbstractLoadBalancerRule {
    @Override
    public void initWithNiwsConfig(IClientConfig iClientConfig) {

    }

    // 实现负载均衡自定义算法
    // 示例实现随机策略
    @Override
    public Server choose(Object o) {
        //1、获取当前请求服务的示例
        ILoadBalancer loadBalancer =  this.getLoadBalancer();
        //2、获取服务的实例列表,即多个实例
         List<Server> servers= loadBalancer.getReachableServers();
         // 3、 获取随机数
        int  random = ThreadLocalRandom.current().nextInt(servers.size());
        //4、获取返回的示例
        Server server = servers.get(random);
        return server;
    }
}

2、在配置类中配置自定义的负载均衡,并且在启动类中配置自定义的配置类 。见(二)

使用LoadBalancer替换Ribbon(暂时不使用)

1、加载依赖项

  <dependencies>
            <!-- LoadBalancer -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-loadbalancer</artifactId>
            </dependency>
        
            <!-- 提供了RestTemplate支持 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        
            <!-- nacos服务注册与发现  移除ribbon支持,nacos-discovery中引入了ribbon,需要移除ribbon的包-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.cloud</groupId>
                        <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    </dependencies>

        在依赖项中移除ribbon或者在配置项目中禁用ribbon

spring:
  application:
    name: lemon-loadbalancer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    # 不使用ribbon
    loadbalancer:
      ribbon:
        enabled: false

2、其他配置与原有的ribon配置一致,不变化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值