dubbo学习笔记---dubbo中的负载均衡

dubbo学习笔记—dubbo中的负载均衡

1.负载均衡基本配置

  1. 负载均衡(Load Balance), 其实就是将请求分摊到多个操作单元上进行执行,从而共同完成工作任务。
  2. 负载均衡策略主要用于客户端存在多个提供者时进行选择某个提供者。
  3. 在集群负载均衡时,Dubbo 提供了多种均衡策略(包括随机、轮询、最少活跃调用数、一致性Hash),缺省为random随机调用。
  4. 官方链接: ttp://dubbo.apache.org/zh-cn/docs/user/demos/loadbalance.html

2.负载均衡基本配置实战

  1. 在服务消费者一方配置负载均衡策略
    //在服务消费者一方配置负载均衡策略 
    @Reference(check = false,loadbalance = "random")
    
  2. 在服务提供者一方配置负载均衡
    //在服务提供者一方配置负载均衡 @Service(loadbalance = "random") 
    public class HelloServiceImpl implements HelloService { 
    	public String sayHello(String name) { 
    		return "hello " + name; 
    		} 
    }
    

3.自定义负载均衡器

  1. 负载均衡器在Dubbo中的SPI接口是 org.apache.dubbo.rpc.cluster.LoadBalance , 可以通过实现这个接口来实现自定义的负载均衡规则。
  2. 配置负载均衡器在dubbo-spi-loadbalance工程的META-INF/dubbo目录下新建org.apache.dubbo.rpc.cluster.LoadBalance文件,并将当前类的全名写入(org.apache.dubbo.rpc.cluster.LoadBalance是扩展点,扩展点里面写的内容是扩展点的实现类)
    onlyFirst=com.lagou.loadbalance.OnlyFirstLoadbalancer
    
  3. 在服务提供者工程实现类中编写用于测试负载均衡效果的方法 启动不同端口时 方法返回的信息不同
    public class OnlyFirstLoadbalancer implements LoadBalance {
        @Override
        public <T> Invoker<T> select(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException {
            //所有的服务提供者,都按照IP+端口的排序,选择第一个,所以我们就要从List列表中找到调用者,找到关于服务的调用信息
            return invokers.stream().sorted((i1,i2)->{
                final int IpCompare = i1.getUrl().getIp().compareTo(i2.getUrl().getIp());
                if (IpCompare==0){
                    return Integer.compare(i1.getUrl().getPort(),i2.getUrl().getPort());
                }
                return IpCompare;
            }).findFirst().get();
        }
    }
    
  4. 启动多个服务 要求他们使用同一个接口注册到同一个注册中心 但是他们的dubbo通信端口不同
  5. 在服务消费方指定自定义负载均衡器onlyFirst
    /**
     * 消费者组件
     * @author yh
     */
    @Component
    public class ComsumerComponet {
    
        @Reference(loadbalance = "onlyFirst")
        private HelloService helloService;
    
        public String sayHello(String name){
            return helloService.sayHello(name);
        }
    
    }
    
  6. 测试自定义负载均衡的效果
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值