Ribbon-1
使用Java代码实现Ribbon细粒度配置的坑(父子上下文):
Ribbon配置类不能与SpringBootApplication放在同个包下,防止被其扫描到,从而被当成Ribbon全局配置,而无法实现细粒度配置。
实现Ribbon细粒度配置:正常情况下,使用属性配置方式,而非Java代码方式
Ribbon首次加载速度慢,使用了懒加载。
配置Ribbon饥饿加载

Ribbon支持Nacos权重
1 public class NacosWeightedRule extends AbstractLoadBalancerRule { 2 @Autowired 3 private NacosDiscoveryProperties nacosDiscoveryProperties; 4 @Override 5 public void initWithNiwsConfig(IClientConfig clientConfig) { 6 // 读取配置文件,并初始化NacosWeightedRule 7 } 8 9 @Override 10 public Server choose(Object key) { 11 try { 12 BaseLoadBalancer loadBalancer = (BaseLoadBalancer) this.getLoadBalancer(); 13 // log.info("lb = {}", loadBalancer); 14 15 // 想要请求的微服务的名称 16 String name = loadBalancer.getName(); 17 18 // 拿到服务发现的相关API 19 NamingService namingService = nacosDiscoveryProperties.namingServiceInstance(); 20 21 // nacos client自动通过基于权重的负载均衡算法,给我们选择一个实例。 22 Instance instance = namingService.selectOneHealthyInstance(name); 23 24 log.info("选择的实例是:port = {}, instance = {}", instance.getPort(), instance); 25 return new NacosServer(instance); 26 } catch (NacosException e) { 27 return null; 28 } 29 } 30 }

浙公网安备 33010602011771号