Разработчик балансера в Поиск

МоскваC++ПоискСпециалист
Вакансия закрыта
Балансер (балансирующий нагрузку обратный прокси-сервер) терминирует протоколы прикладного уровня и перенаправляет запросы пользователей в сервисы. Подавляющее большинство сервисов Яндекса используют балансер для распределения трафика по дата-центрам и для защиты от DDoS-атак. Балансер является точкой отказа сервиса, открытой для внешних угроз, поэтому к его надежности, отказоустойчивости и скорости работы предъявляются исключительно высокие требования. Например, инсталляция балансера yandex.tld должна быть готова обработать миллионы запросов в секунду.

Вы нам подходите, если вы:

  • хорошо знаете C++;
  • хорошо знаете TCP/IP и HTTP/1.x;
  • понимаете, как устроена сетевая подсистема ядра Linux или другой операционной системы.

Кроме того, приветствуются:

  • опыт разработки многопоточных и асинхронных приложений;
  • опыт разработки приложений, активно работающих с сетью;
  • понимание работы TLS, HTTP/2 , gRPC, QUIC.

Вам предстоит взять на себя часть глобальных задач, таких как:

  • поддержка новых протоколов (gRPC, QUIC);
  • мониторинг и минимизация видимых пользователю задержек (сюда входит оптимизация работы с сетевыми протоколами и использование возможностей Prefetch);
  • уменьшение задержек обработки запросов в балансере (наиболее перспективное направление тут — написать многопоточный планировщик корутин);
  • оптимизация потребления CPU и памяти;
  • улучшение точности и информативности нагрузочного тестирования;
  • оптимизация алгоритмов динамической балансировки и улучшение методик их тестирования.

Примеры конкретных задач, которые мы решаем:

  • налаживание фаззинг-тестирования протокола HTTP/2;
  • уменьшение потребления памяти неактивными HTTP/2-соединениями;
  • поддержание протокола 0-RTT Handshake с клиентом;
  • динамический подбор размера TLS-записи.