Существует несколько различных способов распределения нагрузки, которые могут быть здесь применимы.
Случай 1. Случайное назначение, смещенное пропорционально для нагрузки каждого сервера:
for each request
let x = uniformly distributed random number between 0 and 1
if x <= 0.5
goto A
else if x <= 0.8
goto B
else
goto C
Случай 2. КруглыйРобин смещен пропорционально нагрузке на каждый сервер:
let x = new list
push A on x 5 times
push B on x 3 times
push C on x 2 times
for each request
y = pop x
goto y
push y to back of x
Случай 3. Забудьте о предполагаемой емкости и опросе для текущей нагрузки
let La = A, load of A
let Lb = B, load of B
let Lc = C, load of C
goto argmin (La,Lb,Lc)