自定义负载均衡(Ribbon)

发布时间:2024年01月13日

?增加自定义负载均衡实现类

package com.learning.springcloud.ribbon.rule;
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 key) {
? ? ? ? ILoadBalancer loadBalancer = this.getLoadBalancer(); ? ? ? ?
? ? ? ? // 获取当前请求的服务的实例 ? ? ? ?
? ? ? ? List<Server> reachableServers = loadBalancer.getReachableServers(); ? ? ? ?
? ? ? ? int random = ThreadLocalRandom.current().nextInt(reachableServers.size()); ? ? ? ?
? ? ? ? Server ?server = reachableServers.get(random); ? ? ? ?
? ? ? ? return server; ? ?
? ? }
}

?配置自定义负载均衡策略

  • 修改配置文件 application.yml
stock-service:
? ribbon:
? ? NFLoadBalancerRuleClassName: ?com.learning.springcloud.ribbon.rule.CustomRule
    # NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule


?饥饿加载负载均衡策略

ribbon:
? eager-load:
? ? # 开启 ribbon 饥饿记载 ? ?
? ? enabled: true ? ?
? ? # 配置 需要饥饿加载的服务名,多个逗号分割 ? ?
? ? clients: stock-service

文章来源:https://blog.csdn.net/u012516524/article/details/135555022
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。