Как реализовать распределение трафика по процентам (Traffic Distribution System) для больших нагрузок?

Нужно реализовать распределение трафика: При переходе на example.com должен происходить редирект на лендинги:

Проценты могут изменять (хранятся в redis).

Сам алгоритм разбиения не сложен: считаем каждый переход на example.com и раскидываем по нужным лендингам до приближения необходимых процентых соотношений.

Проблемы возникают при тесте данного алгоритма через Apache Bench с установкой конкурентых запросов (ab -n 100 -c 10 www.example.com).

Смотрел готовые решения TDS - у них аналогичная проблема - нет чёткого распределния по процентам если слать конкурентные запросы.
  • Вопрос задан
  • 412 просмотров
Пригласить эксперта
Ответы на вопрос 2
@lega
В nginx можно сделать upstream на несколько узлов и задать веса.
После изменения весов можно просто делать reload конфига.
Ответ написан
alsopub
@alsopub
Если проблема конкретно в распределении по процентам параллельных запросов, то как вариант memcache increment, в нем же предварительно расчитанный список url, для вашего случая такой (можно перемешать перед занесением в память):
http://landing1
http://landing1
http://landing1
http://landing1
http://landing1
http://landing2
http://landing2
http://landing2
http://landing2
http://landing3

и выборка url по отстатку от деления значения инкремента на количество url.
На сколько я помню increment в memcache является атомарной операцией и должен гарантировать каждому запросу свое последовательное значение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
28 апр. 2024, в 00:54
10000 руб./за проект
28 апр. 2024, в 00:53
70000 руб./за проект
27 апр. 2024, в 21:24
150000 руб./за проект