YTsaurus (YT) — это ключевая платформа хранения и обработки данных в Яндексе: экзабайты данных, десятки тысяч серверов, десятки миллионов распределённых задач в день.
Мастер-сервер в YT отвечает за дерево метаданных Кипарис, транзакции и блокировки, квоты и доступы. Кроме того, он отслеживает чанки, управляет таблет-селлами и выполняет множество других критически важных функций.
Мастер-сервер обладает рядом технических особенностей, влияющих на характер нашей работы:
* Он, по сути, является единой точкой отказа в кластере, а значит, к его надёжности и, следовательно, к качеству кода предъявляются повышенные требования.
* Отказоустойчивость достигается за счёт Raft-подобного алгоритма репликации, что, в свою очередь, требует понимания, как эта репликация устроена.
* Мастер-сервер — это stateful-компонент, а значит, мажорные релизы подготавливаются долго и с большой аккуратностью.
* Состояние мастер-сервера достаточно велико, чтобы требовать шардирования. На практике это выливается в распределённый сервис из нескольких десятков отказоустойчивых шардов.
Мы ищем в службу разработки мастер-сервера разработчика, искренне интересующегося инфраструктурой и стремящегося на совесть решать задачи обработки и хранения данных. Наша цель — не просто качественный код, но предоставление полезного и надёжного сервиса, на который разработчики Яндекса могут положиться.
Обязанности:
Внесение архитектурных улучшений
Вам предстоит вносить архитектурные улучшения, позволяющие лучше масштабироваться, чтобы соответствовать растущим потребностям пользователей.
Реализация новых функций
Вы будете развивать возможности мастер-сервера: от поддержки новых атрибутов или типов узлов в Кипарисе до написания delta-таблиц, то есть дозаписи в статическую сортированную таблицу.
Анализ поведения системы
Нужно будет анализировать поведение системы, чтобы выявлять узкие места и оптимизировать её.
Ключевые навыки:
- Имеете опыт промышленной разработки на C++
- Знаете классические алгоритмы и структуры данных
- Ответственны и аккуратны
Дополнительные требования:
- Знакомы с внутренним устройством баз данных
- Понимаете специфику распределённых систем
- Разрабатывали сетевые, многопоточные и асинхронные приложения