code: public String chooseIP(byte[] key) throws IOException {
          if (_ips == null || _ips.length == 0) {
              if (_server != null) {
                  LOG.warn("ip list is not initialized, fallback to server");
                  return _server;
              }
              throw new IOException("ip list is not initialized");
          }
  
          return _ips[Math.abs(Arrays.hashCode(key)) % _ips.length];
      }
docs: Select an IP address to use for communication, based on the
  <code>key</code> and <code>policy</code>.
  
  @param key
  The key to use when selecting an IP address.
  @return The IP address to use for communication.
  @throws IOException