Dubbo负载均衡策略介绍

  package com.lagou.loadbalance;

  import org.apache.dubbo.common.URL;

  import org.apache.dubbo.rpc.Invocation;

  import org.apache.dubbo.rpc.Invoker;

  import org.apache.dubbo.rpc.RpcException;

  import org.apache.dubbo.rpc.cluster.LoadBalance;

  import java.util.List;

  public class OnlyFirstLoadbalancer implements LoadBalance {

  @Override

  public Invoker select(List> list, URL url, Invocation invocation) throws RpcException {

  // 所有的服务提供者 按照 ip + 端口 排序,选择第一个

  // List> list 包含了所有服务提供者的信息

  return list.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();

  }

  }