code: @Override
      public URL select(List<URL> urls, String requestKey) {
      	// search for a URL in the same ip first
          List<URL> localUrls = searchLocalUrls(urls, ip);
          if(localUrls.size() > 0) {
               if(localUrls.size() == 1) {
                   return localUrls.get(0);
               } else {
                  // round robin within localUrls
                   return doSelect(localUrls);
               }
          } else {
              // round robin within urls
              return doSelect(urls);
          }
      }
docs: Local first requestKey is not used as it is ip on the localhost. It first needs to
  find a list of urls on the localhost for the service, and then round robin in the
  list to pick up one.
  
  Currently, this load balance is only used if you deploy the service as standalone
  java process on data center hosts. We need to find a way to identify two VMs or two
  docker containers sitting on the same physical machine in the future to improve it.
  
  It is also suitable if your services are built on top of light-hybrid-4j and want
  to use the remote interface for service to service communication.
  
  @param urls List
  @param requestKey String
  @return URL