rebuild(list) {
		this.cache.reset();
		this.ring = [];

		const arr = list.map(ep => ep.id).sort();

		const total = arr.length * this.opts.vnodes;
		const ringSize = this.opts.ringSize ? this.opts.ringSize : Math.pow(2, 32);
		const slice = ringSize / total;

		for (let j = 0; j < this.opts.vnodes; j++) {
			for (let i = 0; i < arr.length; i++) {
				const nodeID = arr[i];
				this.ring.push({
					key: Math.floor(slice * (this.ring.length + 1)),
					nodeID: nodeID
				});
			}
		}

		// Set the latest value to the last slice.
		this.ring[this.ring.length - 1].key = ringSize;

		this.needRebuild = false;
	}
Rebuild the node hashring.

@param {Array<Endpoint>} list
@memberof ShardStrategy