Задать вопрос

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

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

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

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

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

Смотрел готовые решения TDS - у них аналогичная проблема - нет чёткого распределния по процентам если слать конкурентные запросы.
  • Вопрос задан
  • 430 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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 является атомарной операцией и должен гарантировать каждому запросу свое последовательное значение.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы