How to use the utility.random function in utility

To help you get started, we’ve selected a few utility examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github nacos-group / nacos-sdk-nodejs / packages / nacos-config / src / server_list_mgr.ts View on Github external
await this.snapshot.delete(key);
          err.name = 'ServerListSnapShotJSONParseError';
          err.unit = unit;
          err.data = data;
          this.emit('error', err);
        }
      }
    }
    if (!hosts || !hosts.length) {
      // 这里主要是为了让后面定时同步可以执行
      this.serverListCache.set(unit, null);
      return null;
    }
    const serverData = {
      hosts,
      index: random(hosts.length),
    };
    this.serverListCache.set(unit, serverData);
    return serverData;
  }
github nacos-group / nacos-sdk-nodejs / src / server_list_mgr.ts View on Github external
await this.snapshot.delete(key);
          err.name = 'ServerListSnapShotJSONParseError';
          err.unit = unit;
          err.data = data;
          this.emit('error', err);
        }
      }
    }
    if (!hosts || !hosts.length) {
      // 这里主要是为了让后面定时同步可以执行
      this.serverListCache.set(unit, null);
      return null;
    }
    const serverData = {
      hosts,
      index: random(hosts.length),
    };
    this.serverListCache.set(unit, serverData);
    return serverData;
  }
github nacos-group / nacos-sdk-nodejs / packages / nacos-naming / lib / naming / proxy.js View on Github external
async _reqAPI(api, params, method) {
    // TODO:
    const servers = this.serverList.length ? this.serverList : this.serversFromEndpoint;
    const size = servers.length;

    if (size === 0 && !this.nacosDomain) {
      throw new Error('[NameProxy] no server available');
    }

    if (size > 0) {
      let index = utility.random(size);
      for (let i = 0; i < size; i++) {
        const server = servers[index];
        try {
          return await this._callServer(server, method, api, params);
        } catch (err) {
          this.logger.warn(err);
        }
        index = (index + 1) % size;
      }
      throw new Error('failed to req API: ' + api + ' after all servers(' + servers.join(',') + ') tried');
    }

    for (let i = 0; i < Constants.REQUEST_DOMAIN_RETRY_COUNT; i++) {
      try {
        return await this._callServer(this.nacosDomain, method, api, params);
      } catch (err) {
github sofastack / sofa-rpc-node / lib / client / loadbalancer / weight_rr.js View on Github external
_rr(request, addressList) {
    const address = addressList[this._offset];
    this._offset = (this._offset + 1) % this.size;

    const weight = this.getWeight(address);
    if (weight === DEFAULT_WEIGHT) return address;
    if (weight === 0) return null;

    const randNum = utility.random(DEFAULT_WEIGHT);
    return weight >= randNum ? address : null;
  }