Порядок выбора бэкендов при взвешенном round robin, как в nginx
В upstream у серверов разные веса: server a weight=5; server b weight=1; server c weight=1;. Nginx распределяет запросы «гладким» взвешенным round robin, чтобы тяжёлый сервер не получал пять запросов подряд.
Напишите wrr_sequence(servers, n).
servers— список пар(имя, вес), веса — положительные целые.n— число запросов.- У каждого сервера есть текущий вес, изначально 0. На каждый запрос:
- каждому серверу прибавить к текущему весу его вес;
- выбрать сервер с наибольшим текущим весом, при равенстве — первый по списку;
- у выбранного вычесть из текущего веса сумму всех весов.
- Верните список имён выбранных серверов длиной
n. Приn == 0— пустой список.
заготовка решения
def wrr_sequence(servers, n):
# ваш код
return None