美文网首页
扩展Ribbon支持Nacos权重

扩展Ribbon支持Nacos权重

作者: G__yuan | 来源:发表于2021-03-11 22:42 被阅读0次

    1.基于nacos client 的权重负载均衡算法来实现,编写如下类

    public class NacosWeightedRule extends AbstractLoadBalancerRule {
    
        @Autowired
        private NacosDiscoveryProperties nacosDiscoveryProperties;
    
        @Override
        public void initWithNiwsConfig(IClientConfig iClientConfig) {
            //读取配置文件,并初始化NacosWeightedRule
        }
        @Override
        public Server choose(Object o) {
            BaseLoadBalancer loadBalancer = (BaseLoadBalancer) this.getLoadBalancer();
            //获取想要请求的服务名称
            String name = loadBalancer.getName();
            //拿到服务发现的相关api
            NamingService namingService = nacosDiscoveryProperties.namingServiceInstance();
    
            Instance instance = null;
            try {
                //nacos client自动通过基于权重的负载均衡算法,返回一个实例
                 instance = namingService.selectOneHealthyInstance(name);
            } catch (NacosException e) {
                e.printStackTrace();
            }
            return new NacosServer(instance);
        }
    }
    

    2.将项目中的ribbon的负载均衡规则替换成自己编写NacosWeightedRule,至于是否全局使用,还是针对某个微服务使用,根据具体情况,以及结合“Spring Cloud Ribbon使用”该篇文章中内容进行配置。

      @Bean
        public IRule ribbonRule(){
            return new NacosWeightedRule();
        }
    

    相关文章

      网友评论

          本文标题:扩展Ribbon支持Nacos权重

          本文链接:https://www.haomeiwen.com/subject/twaoqltx.html