Как мы построили сервис распределённых очередей в Яндексе
Я расскажу о том, какие уроки мы извлекли, создавая высокодоступный геораспределённый сервис персистентных очередей на основе широко используемой в Яндексе Yandex Database. Мы обсудим различные подходы, позволившие нам эффективно разрабатывать, тестировать, мониторить и отлаживать систему, используемую одновременно сотнями клиентов с высокими требованиями к доступности и скорости работы.
Также мы поговорим о клиентских сценариях, в которых использование распределённых очередей сообщений оказывается наиболее эффективным.
План доклада:
---Архитектура---
Что такое распределённая очередь и зачем она нужна.
API распределённой очереди.
Yandex Database и её свойства, которые используются для решения задачи.
Наивное решение и его проблемы.
Понятие мастера: обработка всех запросов к одной очереди на конкретной машине кластера.
Проблема нескольких мастеров.
Кэширование информации по очередям в памяти.
Как сделать меньше одной транзакции на пользовательский запрос.
Что делать, если запросов слишком много.
---Разработка---
Связывание событий по одному запросу на разных машинах.
Борьба со слишком большим количество логов.
Написание неудобных клиентов.
Тест консистентности.
Логирование медленных запросов.
Трассировка по требованию.
Включение подробных графиков.