自定义负载均衡(Ribbon)

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

java 复制代码
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
bash 复制代码
stock-service:
  ribbon:
    NFLoadBalancerRuleClassName:  com.learning.springcloud.ribbon.rule.CustomRule
    # NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule

饥饿加载负载均衡策略

bash 复制代码
ribbon:
  eager-load:
    # 开启 ribbon 饥饿记载    
    enabled: true    
    # 配置 需要饥饿加载的服务名,多个逗号分割    
    clients: stock-service
相关推荐
Controller-Inversion7 小时前
负载均衡与反向代理
运维·负载均衡
myzshare18 小时前
实战分享:我是如何用SSM框架开发出一个完整项目的
java·mysql·spring cloud·微信小程序
sww_10261 天前
Openfeign源码浅析
java·spring cloud
DKunYu1 天前
9.熔断和限流 - Alibaba Sentinel
spring cloud·微服务·sentinel
麦兜*1 天前
【springboot】图文详解Spring Boot自动配置原理:为什么@SpringBootApplication是核心?
android·java·spring boot·spring·spring cloud·tomcat
华纳云IDC服务商1 天前
DNS负载均衡能自动避开故障服务器吗?
运维·服务器·负载均衡
oMcLin1 天前
如何在 Debian 11 上实现基于 BGP 路由的动态负载均衡,提升跨地域数据中心的连接稳定性
debian·php·负载均衡
kaico20181 天前
远程调用组件openfeign
java·spring cloud
墨香幽梦客1 天前
系统高可用(HA)方案复盘:从主备切换到负载均衡的实现
运维·负载均衡
IT 乔峰1 天前
分享一个负载均衡的NDB高可用集群架构+部署详细说明
数据库·架构·负载均衡